ERC-721
Overview
Max Total Supply
227 NFCT
Holders
101
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xF6b3998E...7730c0429 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
NFCiTy
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; pragma abicoder v2; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./FantomNumbers.sol"; import "../libraries/details/BuildingDetailsFirst.sol"; import "../libraries/details/BuildingDetailsSecond.sol"; import "../libraries/details/BuildingDetailsSeven.sol"; import "../libraries/details/BuildingDetailsEight.sol"; import "../libraries/details/BuildingDetailsNine.sol"; import "../libraries/details/BuildingDetailsTen.sol"; import "../libraries/details/BuildingDetailsEleven.sol"; import "../libraries/details/BuildingDetailsTwelveFPart.sol"; import "../libraries/details/BuildingDetailsTwelveSPart.sol"; import "../libraries/details/MoonDetails.sol"; import "../libraries/details/SkyDetails.sol"; import "../libraries/details/SkylineDetails.sol"; import "../libraries/details/SpaceSkyDetails.sol"; import "../libraries/DetailsHelper.sol"; contract NFCiTy is ERC721Enumerable, Ownable, ReentrancyGuard { /// @dev FantomNumbers NFT contract FantomNumbers public fantomNumbers; /// @dev The token ID detail mapping(uint256 => CityDetails) private _detail; bool public isMintStarted; constructor(FantomNumbers _fantomNumbers) ERC721("NFCiTy", "NFCT") { fantomNumbers = _fantomNumbers; isMintStarted = false; } function updateMintState(bool newState) external onlyOwner { isMintStarted = newState; } /// @notice Create an NFCiTy from an FantomNumbers NFT /// @param tokenId The FantomNumbers token ID function claim(uint256 tokenId) external payable nonReentrant { require(tokenId > 0 && tokenId < 6666, "Token ID invalid"); require(10 ether <= msg.value, "FTM value sent is not correct"); require(fantomNumbers.ownerOf(tokenId) == msg.sender, "NFCiTy::claim: Not the FantomNumbers owner"); require(isMintStarted, "Mint has not started"); CityDetails memory newDetails = CityDetails({ building8: uint256(fantomNumbers.getEight(tokenId)), building7: uint256(fantomNumbers.getSeventh(tokenId)), building6: uint256(fantomNumbers.getSixth(tokenId)), building5: uint256(fantomNumbers.getFifth(tokenId)), building4: uint256(fantomNumbers.getFourth(tokenId)), building3: uint256(fantomNumbers.getThird(tokenId)), building2: uint256(fantomNumbers.getSecond(tokenId)), building1: uint256(fantomNumbers.getFirst(tokenId)), moon: 0, background: 0, exists: true }); uint256 firstSum = (newDetails.building1 + newDetails.building2 + newDetails.building3 + newDetails.building4) % 6; uint256 secondSum = (newDetails.building5 + newDetails.building6 + newDetails.building7 + newDetails.building8) % 6; newDetails.background = firstSum + 1; newDetails.moon = secondSum + 1; _detail[tokenId] = newDetails; _safeMint(_msgSender(), tokenId); } struct CityDetails { uint256 background; uint256 moon; uint256 building1; uint256 building2; uint256 building3; uint256 building4; uint256 building5; uint256 building6; uint256 building7; uint256 building8; bool exists; } function getDetailBuildingSVG(uint256 id, uint256 index) internal view returns (string memory) { address lib; string memory building; if (id < 7) { if (id > 4) lib = address(BuildingDetailsSecond); else lib = address(BuildingDetailsFirst); (bool success, bytes memory data) = lib.staticcall( abi.encodeWithSignature(string(abi.encodePacked("item_", Strings.toString(id), "(uint256)")), index) ); require(success); building = abi.decode(data, (string)); } else { if (id == 7) building = BuildingDetailsSeven.item_7(index); else if (id == 8) building = BuildingDetailsEight.item_8(index); else if (id == 9) building = BuildingDetailsNine.item_9(index); else if (id == 10) building = BuildingDetailsTen.item_10(index); else if (id == 11) building = BuildingDetailsEleven.item_11(index); else if (id == 12) { string memory firstPart = BuildingDetailsTwelveFPart.item_12(); string memory secondPart = BuildingDetailsTwelveSPart.item_12(); building = string(abi.encodePacked(firstPart, secondPart)); } } uint256 x = 300 * (index - 1); return string( abi.encodePacked( "<defs>", building, '</defs><use y="200" x="', Strings.toString(x), '" href="#', Strings.toString(index), '"/>' ) ); } function getDetailSVG(address lib, uint256 id) internal view returns (string memory) { (bool success, bytes memory data) = lib.staticcall( abi.encodeWithSignature(string(abi.encodePacked("item_", Strings.toString(id), "()"))) ); require(success); return abi.decode(data, (string)); } function getDetailsSkySVG(uint256 id) internal view returns (string memory) { if (id != 4) return getDetailSVG(address(SkyDetails), id); else return SpaceSkyDetails.item_4(); } function generateSVGImage(CityDetails memory params) internal view returns (string memory) { return string( abi.encodePacked( '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="preserve" viewBox="0 0 2400 1400" enable-background="new 0 0 2400 1400">', getDetailsSkySVG(params.background), getDetailSVG(address(MoonDetails), params.moon), getDetailSVG(address(SkylineDetails), 2), getDetailBuildingSVG(params.building1, 1), getDetailBuildingSVG(params.building2, 2), getDetailBuildingSVG(params.building3, 3), getDetailBuildingSVG(params.building4, 4), abi.encodePacked( getDetailBuildingSVG(params.building5, 5), getDetailBuildingSVG(params.building6, 6), getDetailBuildingSVG(params.building7, 7), getDetailBuildingSVG(params.building8, 8), "</svg>" ) ) ); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_detail[tokenId].exists, "ERC721Metadata: URI query for nonexistent token"); CityDetails memory detail = _detail[tokenId]; string memory image = Base64.encode(bytes(generateSVGImage(detail))); string memory name = string(abi.encodePacked("NFCITY #", Strings.toString(tokenId))); string memory description = string( abi.encodePacked("City generated from Fantom Numbers #", Strings.toString(tokenId)) ); return string( abi.encodePacked( "data:application/json;base64,", Base64.encode( bytes( abi.encodePacked( '{"name":"', name, '", "description":"', description, '", "image": "', "data:image/svg+xml;base64,", image, '"}' ) ) ) ) ); } // save bytecode by removing implementation of unused method function _baseURI() internal view virtual override returns (string memory) {} /// @notice Send funds from sales to the team function withdrawAll() public payable onlyOwner { uint256 amount = address(this).balance; require(payable(0x3f6bd8A9AcB724f62D04FEC554478EE90F15C1C6).send(amount)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../ERC721.sol"; import "./IERC721Enumerable.sol"; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` cannot be the zero address. * - `to` cannot be the zero address. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "base64-sol/base64.sol"; contract FantomNumbers is ERC721Enumerable, ReentrancyGuard, Ownable { uint8[] private units = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; uint8[] private multipliers = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ]; uint8[] private suffixes = [1, 2]; function random(string memory input) internal pure returns (uint256) { return uint256(keccak256(abi.encodePacked(input))); } function getFirst(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "FIRST", units); } function getSecond(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "SECOND", units); } function getThird(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "THIRD", units); } function getFourth(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "FOURTH", units); } function getFifth(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "FIFTH", units); } function getSixth(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "SIXTH", units); } function getSeventh(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "SEVENT", units); } function getEight(uint256 tokenId) public view returns (uint256) { return pluck(tokenId, "EIGHT", units); } function pluck( uint256 tokenId, string memory keyPrefix, uint8[] memory sourceArray ) internal view returns (uint256) { uint256 rand = random(string(abi.encodePacked(keyPrefix, toString(tokenId)))) << 3; uint256 output = sourceArray[rand % sourceArray.length]; uint256 luck = rand % 21; if (luck > 14) { output += suffixes[rand % suffixes.length]; } if (luck >= 19) { if (luck == 19) { output = (output * multipliers[rand % multipliers.length]) + suffixes[rand % suffixes.length]; } else { output = (output * multipliers[rand % multipliers.length]); } } return output; } function tokenURI(uint256 tokenId) public view override returns (string memory) { string[17] memory parts; parts[ 0 ] = '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base { fill: white; font-family: serif; font-size: 14px; }</style><rect width="100%" height="100%" fill="black" /><text x="10" y="20" class="base">'; parts[1] = toString(getFirst(tokenId)); parts[2] = '</text><text x="10" y="40" class="base">'; parts[3] = toString(getSecond(tokenId)); parts[4] = '</text><text x="10" y="60" class="base">'; parts[5] = toString(getThird(tokenId)); parts[6] = '</text><text x="10" y="80" class="base">'; parts[7] = toString(getFourth(tokenId)); parts[8] = '</text><text x="10" y="100" class="base">'; parts[9] = toString(getFifth(tokenId)); parts[10] = '</text><text x="10" y="120" class="base">'; parts[11] = toString(getSixth(tokenId)); parts[12] = '</text><text x="10" y="140" class="base">'; parts[13] = toString(getSeventh(tokenId)); parts[14] = '</text><text x="10" y="160" class="base">'; parts[15] = toString(getEight(tokenId)); parts[16] = "</text></svg>"; string memory output = string( abi.encodePacked(parts[0], parts[1], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7], parts[8]) ); output = string( abi.encodePacked( output, parts[9], parts[10], parts[11], parts[12], parts[13], parts[14], parts[15], parts[16] ) ); string memory json = Base64.encode( bytes( string( abi.encodePacked( '{"name": "N #', toString(tokenId), '", "description": "N is just numbers.", "image": "data:image/svg+xml;base64,', Base64.encode(bytes(output)), '"}' ) ) ) ); output = string(abi.encodePacked("data:application/json;base64,", json)); return output; } function claim(uint256 tokenId) public payable nonReentrant { require(tokenId > 0 && tokenId < 6666, "Token ID invalid"); require(20 ether <= msg.value, "FTM value sent is not correct"); _safeMint(_msgSender(), tokenId); } function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT license // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function withdrawAll() public payable onlyOwner { require(payable(0x89B07Ba2d3c04A55632060AA9ea372E1408e3d7B).send(address(this).balance)); } constructor() ERC721("FantomNumbers", "FN") Ownable() {} }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsFirst { function item_1(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 224.257812 1109.746094 L 224.257812 1200.0625 L 75.496094 1200.0625 L 75.496094 1153.429688 L 87.894531 1153.429688 L 118 1135.71875 L 154.011719 1135.71875 L 154.011719 1109.746094 L 158.144531 1109.746094 L 158.144531 1102.660156 L 182.347656 1102.660156 L 182.347656 1097.347656 L 205.960938 1097.347656 L 205.960938 1083.769531 L 208.910156 1083.769531 L 208.910156 1097.347656 L 216.585938 1097.347656 L 216.585938 1102.660156 L 221.898438 1102.660156 L 221.898438 1109.746094 Z M 224.257812 1109.746094 "/> <path d="M 200.734375 1143.945312 L 204.78125 1143.945312 L 204.78125 1151.070312 L 200.734375 1151.070312 Z M 200.734375 1143.945312 "/> <path d="M 188.078125 1143.945312 L 192.121094 1143.945312 L 192.121094 1151.070312 L 188.078125 1151.070312 Z M 188.078125 1143.945312 "/> <path d="M 213.382812 1158.851562 L 217.425781 1158.851562 L 217.425781 1165.976562 L 213.382812 1165.976562 Z M 213.382812 1158.851562 "/> <path d="M 175.464844 1158.601562 L 179.511719 1158.601562 L 179.511719 1165.726562 L 175.464844 1165.726562 Z M 175.464844 1158.601562 "/> <path d="M 200.75 1173.445312 L 204.792969 1173.445312 L 204.792969 1180.570312 L 200.75 1180.570312 Z M 200.75 1173.445312 "/> <path d="M 188.089844 1173.445312 L 192.136719 1173.445312 L 192.136719 1180.570312 L 188.089844 1180.570312 Z M 188.089844 1173.445312 "/> <path d="M 162.832031 1173.195312 L 166.878906 1173.195312 L 166.878906 1180.320312 L 162.832031 1180.320312 Z M 162.832031 1173.195312 "/> <path d="M 213.382812 1116.21875 L 217.425781 1116.21875 L 217.425781 1123.34375 L 213.382812 1123.34375 Z M 213.382812 1116.21875 "/> <path d="M 200.734375 1116.109375 L 204.78125 1116.109375 L 204.78125 1123.234375 L 200.734375 1123.234375 Z M 200.734375 1116.109375 "/> <path d="M 175.464844 1115.96875 L 179.511719 1115.96875 L 179.511719 1123.09375 L 175.464844 1123.09375 Z M 175.464844 1115.96875 "/> <path d="M 162.820312 1115.859375 L 166.863281 1115.859375 L 166.863281 1122.984375 L 162.820312 1122.984375 Z M 162.820312 1115.859375 "/> <path d="M 188.089844 1130.8125 L 192.136719 1130.8125 L 192.136719 1137.9375 L 188.089844 1137.9375 Z M 188.089844 1130.8125 "/> <path d="M 134.285156 1146.253906 L 138.332031 1146.253906 L 138.332031 1153.378906 L 134.285156 1153.378906 Z M 134.285156 1146.253906 "/> <path d="M 121.632812 1160.804688 L 125.675781 1160.804688 L 125.675781 1167.929688 L 121.632812 1167.929688 Z M 121.632812 1160.804688 "/> <path d="M 96.363281 1160.660156 L 100.40625 1160.660156 L 100.40625 1167.785156 L 96.363281 1167.785156 Z M 96.363281 1160.660156 "/> <path d="M 134.277344 1175.710938 L 138.324219 1175.710938 L 138.324219 1182.835938 L 134.277344 1182.835938 Z M 134.277344 1175.710938 "/> <path d="M 121.632812 1175.601562 L 125.675781 1175.601562 L 125.675781 1182.726562 L 121.632812 1182.726562 Z M 121.632812 1175.601562 "/> <path d="M 96.363281 1175.460938 L 100.40625 1175.460938 L 100.40625 1182.585938 L 96.363281 1182.585938 Z M 96.363281 1175.460938 "/>' ) ), index ); } function item_2(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 188.664062 1087.707031 L 188.664062 1200.09375 L 108.386719 1200.09375 L 108.386719 1149.457031 L 123.207031 1149.457031 L 123.207031 1001.867188 L 150.996094 1001.867188 L 150.996094 996.929688 L 162.726562 996.929688 L 162.726562 1001.867188 L 167.667969 1001.867188 L 167.667969 1051.273438 L 172.609375 1051.273438 L 172.609375 1087.707031 Z M 188.664062 1087.707031 "/> <path d="M 168.816406 1145.605469 L 172.9375 1145.605469 L 172.9375 1152.867188 L 168.816406 1152.867188 Z M 168.816406 1145.605469 "/> <path d="M 155.914062 1160.691406 L 160.039062 1160.691406 L 160.039062 1167.953125 L 155.914062 1167.953125 Z M 155.914062 1160.691406 "/> <path d="M 130.171875 1160.433594 L 134.292969 1160.433594 L 134.292969 1167.695312 L 130.171875 1167.695312 Z M 130.171875 1160.433594 "/> <path d="M 155.90625 1070.441406 L 160.027344 1070.441406 L 160.027344 1077.703125 L 155.90625 1077.703125 Z M 155.90625 1070.441406 "/> <path d="M 130.160156 1070.1875 L 134.285156 1070.1875 L 134.285156 1077.449219 L 130.160156 1077.449219 Z M 130.160156 1070.1875 "/> <path d="M 155.90625 1085.527344 L 160.027344 1085.527344 L 160.027344 1092.789062 L 155.90625 1092.789062 Z M 155.90625 1085.527344 "/> <path d="M 143.050781 1085.378906 L 147.171875 1085.378906 L 147.171875 1092.640625 L 143.050781 1092.640625 Z M 143.050781 1085.378906 "/> <path d="M 168.820312 1100.511719 L 172.941406 1100.511719 L 172.941406 1107.773438 L 168.820312 1107.773438 Z M 168.820312 1100.511719 "/> <path d="M 155.917969 1100.511719 L 160.039062 1100.511719 L 160.039062 1107.773438 L 155.917969 1107.773438 Z M 155.917969 1100.511719 "/> <path d="M 130.175781 1100.257812 L 134.296875 1100.257812 L 134.296875 1107.519531 L 130.175781 1107.519531 Z M 130.175781 1100.257812 "/> <path d="M 143.058594 1115.304688 L 147.179688 1115.304688 L 147.179688 1122.566406 L 143.058594 1122.566406 Z M 143.058594 1115.304688 "/> <path d="M 168.8125 1130.53125 L 172.933594 1130.53125 L 172.933594 1137.796875 L 168.8125 1137.796875 Z M 168.8125 1130.53125 "/> <path d="M 155.910156 1130.53125 L 160.03125 1130.53125 L 160.03125 1137.796875 L 155.910156 1137.796875 Z M 155.910156 1130.53125 "/> <path d="M 143.058594 1130.386719 L 147.179688 1130.386719 L 147.179688 1137.648438 L 143.058594 1137.648438 Z M 143.058594 1130.386719 "/> <path d="M 143.058594 1011.902344 L 147.183594 1011.902344 L 147.183594 1019.164062 L 143.058594 1019.164062 Z M 143.058594 1011.902344 "/> <path d="M 130.171875 1011.796875 L 134.292969 1011.796875 L 134.292969 1019.058594 L 130.171875 1019.058594 Z M 130.171875 1011.796875 "/> <path d="M 155.90625 1026.988281 L 160.027344 1026.988281 L 160.027344 1034.25 L 155.90625 1034.25 Z M 155.90625 1026.988281 "/> <path d="M 143.050781 1026.84375 L 147.175781 1026.84375 L 147.175781 1034.105469 L 143.050781 1034.105469 Z M 143.050781 1026.84375 "/> <path d="M 130.160156 1041.816406 L 134.285156 1041.816406 L 134.285156 1049.078125 L 130.160156 1049.078125 Z M 130.160156 1041.816406 "/> <path d="M 143.066406 1056.910156 L 147.1875 1056.910156 L 147.1875 1064.171875 L 143.066406 1064.171875 Z M 143.066406 1056.910156 "/> <path d="M 130.175781 1056.800781 L 134.296875 1056.800781 L 134.296875 1064.0625 L 130.175781 1064.0625 Z M 130.175781 1056.800781 "/>' ) ), index ); } function item_3(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 201.765625 1140.851562 L 201.765625 1200.101562 L 95.417969 1200.101562 L 95.417969 1068.792969 L 106.558594 1056.617188 L 115.601562 1056.617188 L 115.601562 976.136719 L 108.613281 966.925781 L 108.613281 960.6875 L 121.035156 960.6875 L 121.035156 930.738281 L 133.917969 917.789062 L 142.769531 917.789062 L 142.769531 906.171875 L 151.507812 899.855469 L 167.609375 899.855469 L 167.609375 871.777344 L 171.492188 871.777344 L 171.492188 899.855469 L 183.132812 899.855469 L 183.132812 932.609375 L 187.792969 932.609375 L 187.792969 969.265625 L 193.226562 969.265625 L 193.226562 1140.851562 Z M 201.765625 1140.851562 "/> <path d="M 173.679688 1116.140625 L 178.121094 1116.140625 L 178.121094 1124.386719 L 173.679688 1124.386719 Z M 173.679688 1116.140625 "/> <path d="M 145.941406 1133.105469 L 150.378906 1133.105469 L 150.378906 1141.351562 L 145.941406 1141.351562 Z M 145.941406 1133.105469 "/> <path d="M 132.054688 1132.980469 L 136.496094 1132.980469 L 136.496094 1141.230469 L 132.054688 1141.230469 Z M 132.054688 1132.980469 "/> <path d="M 159.800781 1150.289062 L 164.238281 1150.289062 L 164.238281 1158.539062 L 159.800781 1158.539062 Z M 159.800781 1150.289062 "/> <path d="M 145.953125 1150.125 L 150.394531 1150.125 L 150.394531 1158.371094 L 145.953125 1158.371094 Z M 145.953125 1150.125 "/> <path d="M 173.671875 1030.773438 L 178.109375 1030.773438 L 178.109375 1039.019531 L 173.671875 1039.019531 Z M 173.671875 1030.773438 "/> <path d="M 159.773438 1030.773438 L 164.214844 1030.773438 L 164.214844 1039.019531 L 159.773438 1039.019531 Z M 159.773438 1030.773438 "/> <path d="M 132.046875 1030.480469 L 136.484375 1030.480469 L 136.484375 1038.730469 L 132.046875 1038.730469 Z M 132.046875 1030.480469 "/> <path d="M 173.671875 1047.902344 L 178.109375 1047.902344 L 178.109375 1056.152344 L 173.671875 1056.152344 Z M 173.671875 1047.902344 "/> <path d="M 159.773438 1047.902344 L 164.214844 1047.902344 L 164.214844 1056.152344 L 159.773438 1056.152344 Z M 159.773438 1047.902344 "/> <path d="M 132.046875 1047.613281 L 136.484375 1047.613281 L 136.484375 1055.863281 L 132.046875 1055.863281 Z M 132.046875 1047.613281 "/> <path d="M 159.789062 1064.925781 L 164.230469 1064.925781 L 164.230469 1073.171875 L 159.789062 1073.171875 Z M 159.789062 1064.925781 "/> <path d="M 145.941406 1064.757812 L 150.382812 1064.757812 L 150.382812 1073.007812 L 145.941406 1073.007812 Z M 145.941406 1064.757812 "/> <path d="M 159.78125 1081.890625 L 164.21875 1081.890625 L 164.21875 1090.136719 L 159.78125 1090.136719 Z M 159.78125 1081.890625 "/> <path d="M 132.050781 1081.597656 L 136.492188 1081.597656 L 136.492188 1089.847656 L 132.050781 1089.847656 Z M 132.050781 1081.597656 "/> <path d="M 173.675781 1099.019531 L 178.117188 1099.019531 L 178.117188 1107.269531 L 173.675781 1107.269531 Z M 173.675781 1099.019531 "/> <path d="M 132.050781 1098.730469 L 136.492188 1098.730469 L 136.492188 1106.976562 L 132.050781 1106.976562 Z M 132.050781 1098.730469 "/> <path d="M 140.808594 938.214844 L 145.246094 938.214844 L 145.246094 946.464844 L 140.808594 946.464844 Z M 140.808594 938.214844 "/> <path d="M 168.550781 955.511719 L 172.988281 955.511719 L 172.988281 963.761719 L 168.550781 963.761719 Z M 168.550781 955.511719 "/> <path d="M 154.652344 955.511719 L 159.09375 955.511719 L 159.09375 963.761719 L 154.652344 963.761719 Z M 154.652344 955.511719 "/> <path d="M 159.769531 979.53125 L 164.207031 979.53125 L 164.207031 987.78125 L 159.769531 987.78125 Z M 159.769531 979.53125 "/> <path d="M 132.039062 979.242188 L 136.480469 979.242188 L 136.480469 987.488281 L 132.039062 987.488281 Z M 132.039062 979.242188 "/> <path d="M 145.914062 996.332031 L 150.355469 996.332031 L 150.355469 1004.578125 L 145.914062 1004.578125 Z M 145.914062 996.332031 "/> <path d="M 132.03125 996.207031 L 136.472656 996.207031 L 136.472656 1004.453125 L 132.03125 1004.453125 Z M 132.03125 996.207031 "/> <path d="M 145.914062 1013.464844 L 150.355469 1013.464844 L 150.355469 1021.710938 L 145.914062 1021.710938 Z M 145.914062 1013.464844 "/> <path d="M 173.671875 1030.648438 L 178.109375 1030.648438 L 178.109375 1038.894531 L 173.671875 1038.894531 Z M 173.671875 1030.648438 "/> <path d="M 168.546875 921.261719 L 172.984375 921.261719 L 172.984375 929.511719 L 168.546875 929.511719 Z M 168.546875 921.261719 "/>' ) ), index ); } function item_4(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 202.992188 797.839844 L 202.992188 1200.960938 L 102.210938 1200.960938 L 102.210938 820.625 L 124.117188 820.625 L 153.039062 797.839844 Z M 202.992188 797.839844 "/> <path d="M 185.261719 980.125 L 190.976562 980.125 L 190.976562 990.191406 L 185.261719 990.191406 Z M 185.261719 980.125 "/> <path d="M 167.390625 979.972656 L 173.105469 979.972656 L 173.105469 990.039062 L 167.390625 990.039062 Z M 167.390625 979.972656 "/> <path d="M 131.683594 979.769531 L 137.398438 979.769531 L 137.398438 989.839844 L 131.683594 989.839844 Z M 131.683594 979.769531 "/> <path d="M 185.261719 1001.035156 L 190.976562 1001.035156 L 190.976562 1011.105469 L 185.261719 1011.105469 Z M 185.261719 1001.035156 "/> <path d="M 113.816406 1000.527344 L 119.527344 1000.527344 L 119.527344 1010.597656 L 113.816406 1010.597656 Z M 113.816406 1000.527344 "/> <path d="M 149.523438 1021.660156 L 155.238281 1021.660156 L 155.238281 1031.726562 L 149.523438 1031.726562 Z M 149.523438 1021.660156 "/> <path d="M 185.269531 1042.519531 L 190.984375 1042.519531 L 190.984375 1052.589844 L 185.269531 1052.589844 Z M 185.269531 1042.519531 "/> <path d="M 131.691406 1042.164062 L 137.40625 1042.164062 L 137.40625 1052.234375 L 131.691406 1052.234375 Z M 131.691406 1042.164062 "/> <path d="M 113.824219 1042.011719 L 119.535156 1042.011719 L 119.535156 1052.082031 L 113.824219 1052.082031 Z M 113.824219 1042.011719 "/> <path d="M 113.824219 1062.925781 L 119.535156 1062.925781 L 119.535156 1072.992188 L 113.824219 1072.992188 Z M 113.824219 1062.925781 "/> <path d="M 185.234375 875.890625 L 190.949219 875.890625 L 190.949219 885.957031 L 185.234375 885.957031 Z M 185.234375 875.890625 "/> <path d="M 167.363281 875.738281 L 173.078125 875.738281 L 173.078125 885.804688 L 167.363281 885.804688 Z M 167.363281 875.738281 "/> <path d="M 131.65625 875.535156 L 137.371094 875.535156 L 137.371094 885.601562 L 131.65625 885.601562 Z M 131.65625 875.535156 "/> <path d="M 185.234375 896.800781 L 190.949219 896.800781 L 190.949219 906.867188 L 185.234375 906.867188 Z M 185.234375 896.800781 "/> <path d="M 113.789062 896.292969 L 119.503906 896.292969 L 119.503906 906.363281 L 113.789062 906.363281 Z M 113.789062 896.292969 "/> <path d="M 167.382812 917.425781 L 173.097656 917.425781 L 173.097656 927.492188 L 167.382812 927.492188 Z M 167.382812 917.425781 "/> <path d="M 149.496094 917.425781 L 155.210938 917.425781 L 155.210938 927.492188 L 149.496094 927.492188 Z M 149.496094 917.425781 "/> <path d="M 185.242188 938.285156 L 190.957031 938.285156 L 190.957031 948.351562 L 185.242188 948.351562 Z M 185.242188 938.285156 "/> <path d="M 149.484375 938.132812 L 155.199219 938.132812 L 155.199219 948.199219 L 149.484375 948.199219 Z M 149.484375 938.132812 "/> <path d="M 113.796875 937.777344 L 119.511719 937.777344 L 119.511719 947.847656 L 113.796875 947.847656 Z M 113.796875 937.777344 "/> <path d="M 185.242188 959.195312 L 190.957031 959.195312 L 190.957031 969.265625 L 185.242188 969.265625 Z M 185.242188 959.195312 "/> <path d="M 131.664062 958.84375 L 137.378906 958.84375 L 137.378906 968.910156 L 131.664062 968.910156 Z M 131.664062 958.84375 "/> <path d="M 185.261719 979.972656 L 190.972656 979.972656 L 190.972656 990.039062 L 185.261719 990.039062 Z M 185.261719 979.972656 "/> <path d="M 167.390625 979.820312 L 173.105469 979.820312 L 173.105469 989.886719 L 167.390625 989.886719 Z M 167.390625 979.820312 "/> <path d="M 131.683594 979.617188 L 137.398438 979.617188 L 137.398438 989.683594 L 131.683594 989.683594 Z M 131.683594 979.617188 "/> <path d="M 185.238281 813.371094 L 190.953125 813.371094 L 190.953125 823.441406 L 185.238281 823.441406 Z M 185.238281 813.371094 "/> <path d="M 149.484375 813.21875 L 155.195312 813.21875 L 155.195312 823.289062 L 149.484375 823.289062 Z M 149.484375 813.21875 "/> <path d="M 167.359375 833.929688 L 173.074219 833.929688 L 173.074219 843.996094 L 167.359375 843.996094 Z M 167.359375 833.929688 "/> <path d="M 131.652344 833.726562 L 137.363281 833.726562 L 137.363281 843.792969 L 131.652344 843.792969 Z M 131.652344 833.726562 "/> <path d="M 113.78125 833.574219 L 119.496094 833.574219 L 119.496094 843.640625 L 113.78125 843.640625 Z M 113.78125 833.574219 "/> <path d="M 185.226562 854.992188 L 190.941406 854.992188 L 190.941406 865.058594 L 185.226562 865.058594 Z M 185.226562 854.992188 "/> <path d="M 149.472656 854.839844 L 155.1875 854.839844 L 155.1875 864.90625 L 149.472656 864.90625 Z M 149.472656 854.839844 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsSecond { function item_5(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 237.175781 1126.320312 L 237.175781 1204.945312 L 212.433594 1204.09375 L 212.433594 1206.132812 L 98.671875 1206.132812 L 98.671875 795.570312 L 113.121094 795.570312 L 199.601562 698.914062 L 199.601562 1053.027344 L 212.433594 1053.027344 L 212.433594 1101.574219 Z M 237.175781 1126.320312 "/> <path d="M 177.246094 1079.1875 L 183.390625 1079.1875 L 183.390625 1090.011719 L 177.246094 1090.011719 Z M 177.246094 1079.1875 "/> <path d="M 158.085938 1078.972656 L 164.230469 1078.972656 L 164.230469 1089.796875 L 158.085938 1089.796875 Z M 158.085938 1078.972656 "/> <path d="M 119.644531 1078.808594 L 125.789062 1078.808594 L 125.789062 1089.632812 L 119.644531 1089.632812 Z M 119.644531 1078.808594 "/> <path d="M 177.246094 1101.671875 L 183.390625 1101.671875 L 183.390625 1112.496094 L 177.246094 1112.496094 Z M 177.246094 1101.671875 "/> <path d="M 138.875 1101.289062 L 145.019531 1101.289062 L 145.019531 1112.113281 L 138.875 1112.113281 Z M 138.875 1101.289062 "/> <path d="M 119.644531 1101.289062 L 125.789062 1101.289062 L 125.789062 1112.113281 L 119.644531 1112.113281 Z M 119.644531 1101.289062 "/> <path d="M 158.105469 1123.789062 L 164.25 1123.789062 L 164.25 1134.613281 L 158.105469 1134.613281 Z M 158.105469 1123.789062 "/> <path d="M 158.09375 1146.054688 L 164.238281 1146.054688 L 164.238281 1156.878906 L 158.09375 1156.878906 Z M 158.09375 1146.054688 "/> <path d="M 138.882812 1145.890625 L 145.027344 1145.890625 L 145.027344 1156.714844 L 138.882812 1156.714844 Z M 138.882812 1145.890625 "/> <path d="M 158.09375 1168.535156 L 164.238281 1168.535156 L 164.238281 1179.359375 L 158.09375 1179.359375 Z M 158.09375 1168.535156 "/> <path d="M 119.652344 1168.371094 L 125.796875 1168.371094 L 125.796875 1179.195312 L 119.652344 1179.195312 Z M 119.652344 1168.371094 "/> <path d="M 138.859375 966.777344 L 145.003906 966.777344 L 145.003906 977.601562 L 138.859375 977.601562 Z M 138.859375 966.777344 "/> <path d="M 119.632812 966.777344 L 125.773438 966.777344 L 125.773438 977.601562 L 119.632812 977.601562 Z M 119.632812 966.777344 "/> <path d="M 158.070312 989.421875 L 164.214844 989.421875 L 164.214844 1000.246094 L 158.070312 1000.246094 Z M 158.070312 989.421875 "/> <path d="M 138.859375 989.257812 L 145.003906 989.257812 L 145.003906 1000.082031 L 138.859375 1000.082031 Z M 138.859375 989.257812 "/> <path d="M 177.25 1011.976562 L 183.394531 1011.976562 L 183.394531 1022.800781 L 177.25 1022.800781 Z M 177.25 1011.976562 "/> <path d="M 119.648438 1011.59375 L 125.792969 1011.59375 L 125.792969 1022.417969 L 119.648438 1022.417969 Z M 119.648438 1011.59375 "/> <path d="M 138.867188 1033.859375 L 145.011719 1033.859375 L 145.011719 1044.683594 L 138.867188 1044.683594 Z M 138.867188 1033.859375 "/> <path d="M 158.078125 1056.503906 L 164.222656 1056.503906 L 164.222656 1067.328125 L 158.078125 1067.328125 Z M 158.078125 1056.503906 "/> <path d="M 158.042969 854.878906 L 164.1875 854.878906 L 164.1875 865.699219 L 158.042969 865.699219 Z M 158.042969 854.878906 "/> <path d="M 138.832031 854.714844 L 144.976562 854.714844 L 144.976562 865.539062 L 138.832031 865.539062 Z M 138.832031 854.714844 "/> <path d="M 177.203125 877.578125 L 183.347656 877.578125 L 183.347656 888.402344 L 177.203125 888.402344 Z M 177.203125 877.578125 "/> <path d="M 119.601562 877.195312 L 125.746094 877.195312 L 125.746094 888.019531 L 119.601562 888.019531 Z M 119.601562 877.195312 "/> <path d="M 177.222656 899.914062 L 183.363281 899.914062 L 183.363281 910.738281 L 177.222656 910.738281 Z M 177.222656 899.914062 "/> <path d="M 158.0625 899.695312 L 164.207031 899.695312 L 164.207031 910.519531 L 158.0625 910.519531 Z M 158.0625 899.695312 "/> <path d="M 138.851562 899.53125 L 144.996094 899.53125 L 144.996094 910.355469 L 138.851562 910.355469 Z M 138.851562 899.53125 "/> <path d="M 138.839844 921.796875 L 144.984375 921.796875 L 144.984375 932.621094 L 138.839844 932.621094 Z M 138.839844 921.796875 "/> <path d="M 119.609375 921.796875 L 125.753906 921.796875 L 125.753906 932.621094 L 119.609375 932.621094 Z M 119.609375 921.796875 "/> <path d="M 177.210938 944.660156 L 183.351562 944.660156 L 183.351562 955.484375 L 177.210938 955.484375 Z M 177.210938 944.660156 "/> <path d="M 119.628906 966.613281 L 125.773438 966.613281 L 125.773438 977.4375 L 119.628906 977.4375 Z M 119.628906 966.613281 "/> <path d="M 177.1875 743.066406 L 183.332031 743.066406 L 183.332031 753.890625 L 177.1875 753.890625 Z M 177.1875 743.066406 "/> <path d="M 177.1875 765.546875 L 183.332031 765.546875 L 183.332031 776.371094 L 177.1875 776.371094 Z M 177.1875 765.546875 "/> <path d="M 177.207031 787.882812 L 183.351562 787.882812 L 183.351562 798.707031 L 177.207031 798.707031 Z M 177.207031 787.882812 "/> <path d="M 138.835938 787.5 L 144.980469 787.5 L 144.980469 798.324219 L 138.835938 798.324219 Z M 138.835938 787.5 "/> <path d="M 158.035156 809.929688 L 164.179688 809.929688 L 164.179688 820.753906 L 158.035156 820.753906 Z M 158.035156 809.929688 "/> <path d="M 138.824219 809.765625 L 144.96875 809.765625 L 144.96875 820.589844 L 138.824219 820.589844 Z M 138.824219 809.765625 "/> <path d="M 119.59375 809.765625 L 125.738281 809.765625 L 125.738281 820.589844 L 119.59375 820.589844 Z M 119.59375 809.765625 "/> <path d="M 177.195312 832.628906 L 183.339844 832.628906 L 183.339844 843.453125 L 177.195312 843.453125 Z M 177.195312 832.628906 "/> <path d="M 158.035156 832.410156 L 164.179688 832.410156 L 164.179688 843.234375 L 158.035156 843.234375 Z M 158.035156 832.410156 "/> <path d="M 119.59375 832.246094 L 125.738281 832.246094 L 125.738281 843.070312 L 119.59375 843.070312 Z M 119.59375 832.246094 "/> <path d="M 195.65625 1086.621094 L 201.800781 1086.621094 L 201.800781 1097.445312 L 195.65625 1097.445312 Z M 195.65625 1086.621094 "/> <path d="M 195.675781 1131.4375 L 201.820312 1131.4375 L 201.820312 1142.261719 L 195.675781 1142.261719 Z M 195.675781 1131.4375 "/> <path d="M 195.664062 1153.703125 L 201.808594 1153.703125 L 201.808594 1164.527344 L 195.664062 1164.527344 Z M 195.664062 1153.703125 "/> <path d="M 195.648438 1064.152344 L 201.792969 1064.152344 L 201.792969 1074.976562 L 195.648438 1074.976562 Z M 195.648438 1064.152344 "/>' ) ), index ); } function item_6(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 196.183594 1136.144531 L 202.082031 1136.144531 C 202.273438 1136.144531 202.429688 1136.300781 202.429688 1136.492188 L 202.429688 1206.367188 C 202.429688 1206.5625 202.273438 1206.714844 202.082031 1206.714844 L 98.566406 1206.714844 C 98.375 1206.714844 98.222656 1206.5625 98.222656 1206.367188 L 98.222656 1136.492188 C 98.222656 1136.300781 98.375 1136.144531 98.566406 1136.144531 L 104.46875 1136.144531 C 104.660156 1136.144531 104.816406 1135.988281 104.816406 1135.796875 C 104.816406 1135.796875 104.140625 866.910156 104.121094 866.734375 L 94.960938 779.707031 C 94.941406 779.503906 95.101562 779.324219 95.308594 779.324219 L 107.105469 779.324219 C 107.296875 779.324219 107.453125 779.167969 107.453125 778.976562 L 107.453125 672.160156 C 107.453125 671.96875 107.609375 671.816406 107.800781 671.816406 L 117.65625 671.816406 C 117.851562 671.816406 118.003906 671.660156 118.003906 671.46875 L 118.003906 660.289062 C 118.003906 660.097656 118.160156 659.941406 118.351562 659.941406 L 126.890625 659.941406 C 127.082031 659.941406 127.238281 659.785156 127.238281 659.597656 L 127.238281 651.71875 C 127.238281 651.523438 127.394531 651.371094 127.585938 651.371094 L 137.441406 651.371094 C 137.636719 651.371094 137.789062 651.214844 137.789062 651.023438 L 137.789062 645.121094 C 137.789062 644.929688 137.945312 644.773438 138.136719 644.773438 L 142.058594 644.773438 C 142.25 644.773438 142.40625 644.617188 142.40625 644.429688 L 142.40625 598.953125 C 142.40625 598.761719 142.5625 598.605469 142.753906 598.605469 L 145.355469 598.605469 C 145.546875 598.605469 145.703125 598.761719 145.703125 598.953125 L 145.703125 644.429688 C 145.703125 644.621094 145.855469 644.773438 146.050781 644.773438 L 159.203125 644.773438 C 159.398438 644.773438 159.550781 644.929688 159.550781 645.121094 L 159.550781 651.023438 C 159.550781 651.214844 159.707031 651.371094 159.898438 651.371094 L 169.757812 651.371094 C 169.949219 651.371094 170.105469 651.527344 170.105469 651.71875 L 170.105469 659.597656 C 170.105469 659.789062 170.257812 659.941406 170.449219 659.941406 L 180.96875 659.941406 C 181.160156 659.941406 181.316406 660.097656 181.316406 660.289062 L 181.316406 671.46875 C 181.316406 671.660156 181.472656 671.8125 181.664062 671.8125 L 193.5 671.8125 C 193.691406 671.8125 193.847656 671.96875 193.847656 672.160156 L 193.847656 778.972656 C 193.847656 779.164062 194 779.320312 194.191406 779.320312 L 206.644531 779.320312 C 206.851562 779.320312 207.015625 779.503906 206.988281 779.710938 L 196.519531 866.734375 C 196.5 866.910156 195.824219 1135.796875 195.824219 1135.796875 C 195.835938 1135.988281 195.992188 1136.144531 196.183594 1136.144531 Z M 196.183594 1136.144531 "/> <path d="M 157.078125 1070.644531 L 163.328125 1070.644531 L 163.328125 1082.300781 L 157.078125 1082.300781 Z M 157.078125 1070.644531 "/> <path d="M 118.035156 1070.230469 L 124.285156 1070.230469 L 124.285156 1081.890625 L 118.035156 1081.890625 Z M 118.035156 1070.230469 "/> <path d="M 157.078125 1094.855469 L 163.328125 1094.855469 L 163.328125 1106.515625 L 157.078125 1106.515625 Z M 157.078125 1094.855469 "/> <path d="M 118.035156 1094.445312 L 124.285156 1094.445312 L 124.285156 1106.105469 L 118.035156 1106.105469 Z M 118.035156 1094.445312 "/> <path d="M 157.0625 949.980469 L 163.3125 949.980469 L 163.3125 961.640625 L 157.0625 961.640625 Z M 157.0625 949.980469 "/> <path d="M 137.566406 949.746094 L 143.816406 949.746094 L 143.816406 961.40625 L 137.566406 961.40625 Z M 137.566406 949.746094 "/> <path d="M 118.019531 949.570312 L 124.269531 949.570312 L 124.269531 961.230469 L 118.019531 961.230469 Z M 118.019531 949.570312 "/> <path d="M 157.0625 974.195312 L 163.3125 974.195312 L 163.3125 985.855469 L 157.0625 985.855469 Z M 157.0625 974.195312 "/> <path d="M 137.566406 973.960938 L 143.816406 973.960938 L 143.816406 985.617188 L 137.566406 985.617188 Z M 137.566406 973.960938 "/> <path d="M 176.648438 998.253906 L 182.898438 998.253906 L 182.898438 1009.910156 L 176.648438 1009.910156 Z M 176.648438 998.253906 "/> <path d="M 157.082031 998.253906 L 163.332031 998.253906 L 163.332031 1009.910156 L 157.082031 1009.910156 Z M 157.082031 998.253906 "/> <path d="M 118.039062 997.84375 L 124.289062 997.84375 L 124.289062 1009.5 L 118.039062 1009.5 Z M 118.039062 997.84375 "/> <path d="M 176.636719 1022.230469 L 182.886719 1022.230469 L 182.886719 1033.890625 L 176.636719 1033.890625 Z M 176.636719 1022.230469 "/> <path d="M 137.574219 1021.996094 L 143.828125 1021.996094 L 143.828125 1033.65625 L 137.574219 1033.65625 Z M 137.574219 1021.996094 "/> <path d="M 118.027344 1021.820312 L 124.277344 1021.820312 L 124.277344 1033.480469 L 118.027344 1033.480469 Z M 118.027344 1021.820312 "/> <path d="M 157.070312 1046.445312 L 163.320312 1046.445312 L 163.320312 1058.105469 L 157.070312 1058.105469 Z M 157.070312 1046.445312 "/> <path d="M 137.574219 1046.210938 L 143.828125 1046.210938 L 143.828125 1057.867188 L 137.574219 1057.867188 Z M 137.574219 1046.210938 "/> <path d="M 176.597656 829.285156 L 182.851562 829.285156 L 182.851562 840.941406 L 176.597656 840.941406 Z M 176.597656 829.285156 "/> <path d="M 157.03125 829.285156 L 163.285156 829.285156 L 163.285156 840.941406 L 157.03125 840.941406 Z M 157.03125 829.285156 "/> <path d="M 157.03125 853.5 L 163.285156 853.5 L 163.285156 865.15625 L 157.03125 865.15625 Z M 157.03125 853.5 "/> <path d="M 117.988281 853.089844 L 124.242188 853.089844 L 124.242188 864.746094 L 117.988281 864.746094 Z M 117.988281 853.089844 "/> <path d="M 176.617188 877.554688 L 182.871094 877.554688 L 182.871094 889.214844 L 176.617188 889.214844 Z M 176.617188 877.554688 "/> <path d="M 137.558594 877.320312 L 143.808594 877.320312 L 143.808594 888.980469 L 137.558594 888.980469 Z M 137.558594 877.320312 "/> <path d="M 118.011719 877.144531 L 124.261719 877.144531 L 124.261719 888.804688 L 118.011719 888.804688 Z M 118.011719 877.144531 "/> <path d="M 176.605469 901.535156 L 182.859375 901.535156 L 182.859375 913.191406 L 176.605469 913.191406 Z M 176.605469 901.535156 "/> <path d="M 157.039062 901.535156 L 163.292969 901.535156 L 163.292969 913.191406 L 157.039062 913.191406 Z M 157.039062 901.535156 "/> <path d="M 117.996094 901.125 L 124.25 901.125 L 124.25 912.78125 L 117.996094 912.78125 Z M 117.996094 901.125 "/> <path d="M 176.605469 925.75 L 182.859375 925.75 L 182.859375 937.40625 L 176.605469 937.40625 Z M 176.605469 925.75 "/> <path d="M 157.0625 949.804688 L 163.3125 949.804688 L 163.3125 961.464844 L 157.0625 961.464844 Z M 157.0625 949.804688 "/> <path d="M 137.566406 949.570312 L 143.816406 949.570312 L 143.816406 961.230469 L 137.566406 961.230469 Z M 137.566406 949.570312 "/> <path d="M 176.585938 708.625 L 182.835938 708.625 L 182.835938 720.28125 L 176.585938 720.28125 Z M 176.585938 708.625 "/> <path d="M 157.019531 708.625 L 163.269531 708.625 L 163.269531 720.28125 L 157.019531 720.28125 Z M 157.019531 708.625 "/> <path d="M 137.523438 708.390625 L 143.773438 708.390625 L 143.773438 720.046875 L 137.523438 720.046875 Z M 137.523438 708.390625 "/> <path d="M 117.976562 708.214844 L 124.226562 708.214844 L 124.226562 719.871094 L 117.976562 719.871094 Z M 117.976562 708.214844 "/> <path d="M 157.019531 732.839844 L 163.269531 732.839844 L 163.269531 744.496094 L 157.019531 744.496094 Z M 157.019531 732.839844 "/> <path d="M 137.542969 756.660156 L 143.792969 756.660156 L 143.792969 768.316406 L 137.542969 768.316406 Z M 137.542969 756.660156 "/> <path d="M 117.996094 756.484375 L 124.246094 756.484375 L 124.246094 768.140625 L 117.996094 768.140625 Z M 117.996094 756.484375 "/> <path d="M 157.027344 805.089844 L 163.277344 805.089844 L 163.277344 816.746094 L 157.027344 816.746094 Z M 157.027344 805.089844 "/> <path d="M 137.53125 804.851562 L 143.78125 804.851562 L 143.78125 816.511719 L 137.53125 816.511719 Z M 137.53125 804.851562 "/> <path d="M 157.039062 684.421875 L 163.289062 684.421875 L 163.289062 696.078125 L 157.039062 696.078125 Z M 157.039062 684.421875 "/> <path d="M 117.996094 684.011719 L 124.246094 684.011719 L 124.246094 695.667969 L 117.996094 695.667969 Z M 117.996094 684.011719 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsSeven { function item_7(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style=" stroke:none;fill-rule:nonzero;fill:rgb(71.372549%,71.372549%,71.372549%);fill-opacity:1;" d="M 204.808594 1200.546875 C 204.324219 1199.96875 203.882812 1199.359375 203.480469 1198.722656 C 203.382812 1198.5625 203.28125 1198.402344 203.1875 1198.242188 C 203.144531 1198.066406 203.097656 1197.894531 203.054688 1197.71875 C 203.546875 1197.996094 204.023438 1198.328125 204.492188 1198.722656 C 204.597656 1199.328125 204.699219 1199.9375 204.808594 1200.546875 Z M 204.808594 1200.546875 "/> <path style=" stroke:none;fill-rule:nonzero;fill:rgb(31.372549%,31.372549%,31.372549%);fill-opacity:1;" d="M 204.808594 1200.546875 C 204.324219 1199.96875 203.882812 1199.359375 203.480469 1198.722656 C 203.382812 1198.5625 203.28125 1198.402344 203.1875 1198.242188 C 203.144531 1198.066406 203.097656 1197.894531 203.054688 1197.71875 C 203.546875 1197.996094 204.023438 1198.328125 204.492188 1198.722656 C 204.597656 1199.328125 204.699219 1199.9375 204.808594 1200.546875 Z M 204.808594 1200.546875 "/> <path style="fill:rgb(0%,0%,0%);" d="M 95.054688 1200.546875 C 95.171875 1198.273438 94.210938 1195.746094 96.570312 1193.992188 C 101.289062 1154.222656 106.007812 1114.453125 110.734375 1074.683594 C 117.644531 1016.535156 124.578125 958.394531 129.21875 900.003906 C 132.3125 861.074219 133.089844 822.136719 130.902344 783.128906 C 129.226562 753.238281 125.179688 723.761719 115.972656 695.222656 C 113.441406 687.367188 113.191406 681.128906 121.183594 676.640625 C 115.097656 662.980469 109.886719 649.441406 102.890625 636.671875 C 98.925781 629.429688 100.566406 626.5625 108.816406 625.722656 C 111.796875 625.421875 113.800781 624.304688 115.570312 622.066406 C 121.566406 614.46875 128.394531 607.394531 133.433594 599.214844 C 136.621094 594.039062 137.167969 587.242188 138.945312 581.183594 C 144.726562 561.46875 148.550781 541.519531 147.015625 520.796875 C 146.5625 514.6875 146.945312 508.515625 146.945312 502.777344 C 149.546875 500.925781 151.515625 501.238281 154.203125 502.707031 C 154.203125 512.257812 154.671875 522.191406 154.105469 532.0625 C 152.980469 551.566406 159.472656 569.609375 163.339844 588.25 C 166.476562 603.382812 178.683594 611.484375 185.945312 623.289062 C 187.445312 625.726562 190.027344 625.253906 192.433594 625.558594 C 198.753906 626.367188 200.683594 629.898438 198.21875 635.589844 C 197.683594 636.820312 197.070312 638.027344 196.386719 639.179688 C 189.476562 650.828125 185.621094 663.867188 179.074219 676.363281 C 187.367188 680.84375 186.96875 686.898438 184.359375 695.164062 C 174.597656 726.074219 170.617188 758.019531 168.96875 790.355469 C 165.375 860.796875 173.335938 930.550781 181.167969 1000.292969 C 188.125 1062.234375 195.800781 1124.097656 203.039062 1186.011719 C 203.53125 1190.242188 205.5 1194.320312 204.492188 1198.722656 C 204.023438 1198.328125 203.546875 1197.996094 203.054688 1197.71875 C 203.097656 1197.894531 203.144531 1198.066406 203.1875 1198.242188 C 203.28125 1198.402344 203.382812 1198.5625 203.480469 1198.722656 C 203.882812 1199.359375 204.324219 1199.96875 204.808594 1200.546875 Z M 95.054688 1200.546875 "/> <path style="fill:rgb(0%,0%,0%);" d="M 129.679688 645.148438 C 127.449219 641.730469 128.5 638.382812 128.613281 634.914062 C 132.539062 633.09375 135.097656 633.363281 135.230469 638.058594 C 135.339844 641.808594 136.242188 646.539062 129.679688 645.148438 Z M 129.679688 645.148438 "/> <path style="fill:rgb(0%,0%,0%);" d="M 155.285156 643.203125 C 154.519531 646.261719 151.867188 645.742188 149.109375 644.941406 C 148.082031 641.113281 148.007812 638.054688 148.945312 635.066406 C 150.921875 633.363281 153.085938 633.027344 154.644531 634.882812 C 156.6875 637.3125 155.957031 640.535156 155.285156 643.203125 Z M 155.285156 643.203125 "/> <path style="fill:rgb(0%,0%,0%);" d="M 174.625 638.929688 C 174.589844 642.96875 174.570312 646.839844 168.261719 644.820312 C 166.90625 641.085938 167.476562 638.003906 167.761719 634.648438 C 172.320312 633.074219 174.671875 633.96875 174.625 638.929688 Z M 174.625 638.929688 "/> <path style="fill:rgb(0%,0%,0%);" d="M 204.492188 1198.722656 C 204.15625 1198.722656 203.816406 1198.722656 203.480469 1198.722656 C 203.382812 1198.5625 203.28125 1198.402344 203.1875 1198.242188 C 203.144531 1198.066406 203.097656 1197.894531 203.054688 1197.71875 C 203.546875 1197.996094 204.023438 1198.328125 204.492188 1198.722656 Z M 204.492188 1198.722656 "/> <path d="M 126.554688 639.554688 L 133.296875 639.554688 L 133.296875 651.433594 L 126.554688 651.433594 Z M 126.554688 639.554688 "/> <path d="M 146.558594 639.554688 L 153.300781 639.554688 L 153.300781 651.433594 L 146.558594 651.433594 Z M 146.558594 639.554688 "/> <path d="M 166.5625 639.554688 L 173.304688 639.554688 L 173.304688 651.433594 L 166.5625 651.433594 Z M 166.5625 639.554688 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsEight { function item_8(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 296.769531 1194.359375 C 296.285156 1193.34375 295.902344 1192.261719 295.300781 1191.320312 C 271.757812 1154.34375 252.492188 1115.21875 236.507812 1074.4375 C 233.894531 1067.773438 234.453125 1061.03125 235.523438 1054.25 C 235.691406 1053.191406 236.8125 1052.109375 236.339844 1051.039062 C 233.335938 1044.257812 235.101562 1036.898438 235.441406 1029.765625 L 221.308594 1029.765625 C 219.414062 1028.148438 219.050781 1025.5 218.464844 1023.566406 C 213.824219 1008.253906 209.210938 992.933594 204.671875 977.59375 C 201.878906 968.164062 198.476562 958.835938 196.714844 949.214844 C 194.613281 937.753906 191.925781 926.425781 189.835938 914.972656 C 189.722656 914.363281 189.941406 913.691406 190.003906 913.050781 C 191.480469 912.132812 193.386719 912.742188 194.804688 911 C 196.128906 905.960938 198.445312 900.601562 195.898438 895.328125 C 194.035156 893.144531 191.539062 894.480469 189.96875 893.285156 C 188.503906 891.648438 189.675781 889.535156 188.632812 887.917969 C 187.691406 886.554688 185.476562 887.09375 184.449219 884.628906 C 183.679688 879.558594 182.800781 873.691406 181.894531 867.828125 C 178.074219 843.199219 175.585938 818.402344 172.816406 793.648438 C 171.144531 778.667969 170.089844 763.605469 169.140625 748.554688 C 167.589844 723.910156 166.15625 699.253906 165.03125 674.589844 C 164.191406 656.078125 163.714844 637.542969 163.425781 619.015625 C 162.941406 588.121094 161.789062 557.242188 162.136719 526.335938 C 162.175781 522.832031 162.230469 519.359375 164.445312 516.523438 C 167.621094 512.464844 168.210938 507.894531 168.058594 502.980469 C 167.953125 499.566406 168.3125 494.972656 168.335938 491.550781 C 168.351562 489.726562 168.128906 490.300781 166.882812 488.921875 C 161.878906 483.378906 164.03125 472.179688 164.03125 472.179688 C 164.730469 470.796875 159.160156 463.382812 153.167969 463.390625 L 153.15625 463.113281 L 153.070312 460.679688 L 149.832031 397.433594 C 149.832031 397.433594 149.785156 397.789062 149.707031 398.648438 C 149.316406 402.816406 148.148438 418.808594 147.753906 463.195312 L 147.785156 463.195312 C 140.808594 465.039062 139.0625 467.976562 137.4375 472.179688 C 138.003906 475.421875 138.699219 484.183594 133.484375 488.921875 C 132.976562 489.382812 133.109375 490.65625 133.105469 491.550781 C 133.097656 496.820312 133.191406 502.085938 133.136719 507.355469 C 133.109375 509.757812 133.714844 511.933594 135.1875 513.757812 C 138.410156 517.75 139.035156 522.304688 138.976562 527.285156 C 138.71875 547.898438 138.492188 568.511719 138.617188 589.121094 C 138.742188 609.910156 137.328125 630.644531 136.957031 651.414062 C 136.628906 669.484375 135.628906 687.550781 134.679688 705.601562 C 133.730469 723.65625 132.75 741.71875 131.296875 759.734375 C 129.160156 786.179688 126.71875 812.601562 123.34375 838.921875 C 121.339844 854.554688 119.375 870.199219 116.410156 886.121094 C 111.292969 886.054688 112.78125 890.734375 111.59375 893.367188 C 104.722656 894.679688 103.28125 896.601562 104.355469 903.167969 C 104.792969 905.855469 105.652344 908.476562 106.195312 910.625 C 107.6875 912.601562 110.167969 911.710938 111.152344 913.542969 C 109.671875 932.578125 86.242188 1019.039062 79.691406 1029.765625 L 65.996094 1029.765625 C 66.6875 1037.207031 68.359375 1044.945312 64.722656 1051.507812 C 68.015625 1059.390625 67.664062 1066.972656 64.792969 1074.46875 C 52.644531 1106.160156 38.234375 1136.78125 21.160156 1166.125 C 15.417969 1175.996094 9.523438 1185.785156 3.699219 1195.609375 C 3.234375 1195.507812 2.835938 1195.632812 2.511719 1195.980469 L 2.511719 1198.730469 L 71.238281 1198.730469 C 71.183594 1196.945312 71.128906 1195.160156 71.074219 1193.378906 C 71.066406 1193.136719 71.058594 1192.898438 71.050781 1192.660156 C 70.800781 1184.449219 73.195312 1176.566406 74.023438 1168.488281 C 73.949219 1168.589844 73.878906 1168.691406 73.808594 1168.792969 C 73.875 1168.6875 73.945312 1168.589844 74.023438 1168.488281 C 75.84375 1163.582031 77.511719 1158.613281 79.515625 1153.78125 C 79.910156 1152.824219 80.320312 1151.882812 80.738281 1150.949219 C 90.261719 1121.511719 117.898438 1100.222656 150.507812 1100.222656 C 182.316406 1100.222656 209.394531 1120.480469 219.542969 1148.800781 C 225.09375 1159.886719 228.609375 1171.910156 229.597656 1185.113281 C 229.9375 1189.652344 231.09375 1194.128906 230.683594 1198.730469 L 299.410156 1198.730469 C 299.519531 1196.675781 298.195312 1195.484375 296.769531 1194.359375 Z M 122.199219 1029.765625 C 123.695312 1022.886719 125.222656 1014.804688 126.707031 1007.90625 C 126.710938 1007.902344 126.710938 1007.898438 126.710938 1007.894531 C 131.539062 987.945312 135.507812 966.761719 137.832031 951.269531 C 137.925781 951.214844 138.015625 950.339844 138.132812 950.289062 C 138.675781 949.929688 139.214844 950.101562 139.777344 950.070312 C 147.570312 949.648438 155.359375 949.632812 162.902344 950.078125 C 164.644531 959.035156 166.640625 968.933594 168.921875 979.703125 C 169.484375 982.367188 170.066406 985.089844 170.664062 987.859375 C 171.046875 989.585938 171.421875 991.3125 171.792969 993.039062 C 174.027344 1003.445312 176.109375 1013.886719 178.261719 1024.3125 C 178.574219 1025.820312 178.824219 1028.109375 179.125 1029.765625 Z M 122.199219 1029.765625 "/> <path style="fill:rgb(0%,0%,0%);" d="M 146.59375 463.953125 L 146.558594 463.953125 L 146.46875 461.519531 Z M 146.59375 463.953125 "/> <path d="M 154.328125 492.960938 L 161.070312 492.960938 L 161.070312 504.839844 L 154.328125 504.839844 Z M 154.328125 492.960938 "/> <path d="M 139.382812 492.960938 L 146.125 492.960938 L 146.125 504.839844 L 139.382812 504.839844 Z M 139.382812 492.960938 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsNine { function item_9(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 266.90625 1177.128906 L 266.90625 1201.578125 L 31.023438 1201.578125 L 31.023438 1177.128906 L 47.355469 1177.128906 L 47.355469 1059.1875 L 75.023438 1059.1875 L 75.023438 1014.730469 L 89.992188 1014.730469 L 89.992188 627.335938 L 97.027344 620.480469 L 97.546875 620.480469 L 97.546875 551.121094 L 106.554688 544.863281 L 106.605469 544.863281 L 106.605469 494.472656 L 117.3125 488.304688 L 117.324219 488.304688 L 117.324219 479.699219 L 128.933594 474.5 L 128.933594 462.113281 L 136.753906 454.566406 C 143.296875 410.007812 146.339844 357.328125 148.882812 299.941406 C 150.378906 356.941406 154.828125 409.621094 160.839844 454.566406 L 168.996094 462.113281 L 168.996094 474.472656 L 169.261719 474.472656 L 180.609375 479.699219 L 180.609375 488.304688 L 180.636719 488.304688 L 191.324219 494.472656 L 191.324219 545.222656 L 200.382812 551.121094 L 200.382812 620.550781 L 207.9375 627.335938 L 207.9375 1014.730469 L 222.90625 1014.730469 L 222.90625 1059.1875 L 250.578125 1059.1875 L 250.578125 1177.128906 Z M 266.90625 1177.128906 "/> <path d="M 197.109375 1110.707031 L 203.773438 1110.707031 L 203.773438 1122.445312 L 197.109375 1122.445312 Z M 197.109375 1110.707031 "/> <path d="M 176.328125 1110.46875 L 182.992188 1110.46875 L 182.992188 1122.210938 L 176.328125 1122.210938 Z M 176.328125 1110.46875 "/> <path d="M 134.640625 1110.292969 L 141.300781 1110.292969 L 141.300781 1122.03125 L 134.640625 1122.03125 Z M 134.640625 1110.292969 "/> <path d="M 197.109375 1135.089844 L 203.773438 1135.089844 L 203.773438 1146.828125 L 197.109375 1146.828125 Z M 197.109375 1135.089844 "/> <path d="M 155.496094 1134.675781 L 162.15625 1134.675781 L 162.15625 1146.414062 L 155.496094 1146.414062 Z M 155.496094 1134.675781 "/> <path d="M 113.859375 1134.441406 L 120.523438 1134.441406 L 120.523438 1146.179688 L 113.859375 1146.179688 Z M 113.859375 1134.441406 "/> <path d="M 93.023438 1134.261719 L 99.6875 1134.261719 L 99.6875 1146.003906 L 93.023438 1146.003906 Z M 93.023438 1134.261719 "/> <path d="M 176.300781 988.929688 L 182.960938 988.929688 L 182.960938 1000.671875 L 176.300781 1000.671875 Z M 176.300781 988.929688 "/> <path d="M 155.464844 988.753906 L 162.125 988.753906 L 162.125 1000.492188 L 155.464844 1000.492188 Z M 155.464844 988.753906 "/> <path d="M 176.300781 1013.316406 L 182.960938 1013.316406 L 182.960938 1025.054688 L 176.300781 1025.054688 Z M 176.300781 1013.316406 "/> <path d="M 176.320312 1037.539062 L 182.984375 1037.539062 L 182.984375 1049.277344 L 176.320312 1049.277344 Z M 176.320312 1037.539062 "/> <path d="M 155.484375 1037.363281 L 162.148438 1037.363281 L 162.148438 1049.101562 L 155.484375 1049.101562 Z M 155.484375 1037.363281 "/> <path d="M 113.851562 1037.125 L 120.511719 1037.125 L 120.511719 1048.863281 L 113.851562 1048.863281 Z M 113.851562 1037.125 "/> <path d="M 197.085938 1061.921875 L 203.75 1061.921875 L 203.75 1073.660156 L 197.085938 1073.660156 Z M 197.085938 1061.921875 "/> <path d="M 176.308594 1061.683594 L 182.96875 1061.683594 L 182.96875 1073.425781 L 176.308594 1073.425781 Z M 176.308594 1061.683594 "/> <path d="M 113.835938 1061.273438 L 120.5 1061.273438 L 120.5 1073.011719 L 113.835938 1073.011719 Z M 113.835938 1061.273438 "/> <path d="M 155.472656 1085.890625 L 162.136719 1085.890625 L 162.136719 1097.632812 L 155.472656 1097.632812 Z M 155.472656 1085.890625 "/> <path d="M 134.617188 1085.890625 L 141.277344 1085.890625 L 141.277344 1097.632812 L 134.617188 1097.632812 Z M 134.617188 1085.890625 "/> <path d="M 93 1085.476562 L 99.664062 1085.476562 L 99.664062 1097.21875 L 93 1097.21875 Z M 93 1085.476562 "/> <path d="M 197.109375 1110.527344 L 203.769531 1110.527344 L 203.769531 1122.269531 L 197.109375 1122.269531 Z M 197.109375 1110.527344 "/> <path d="M 134.636719 1110.117188 L 141.300781 1110.117188 L 141.300781 1121.855469 L 134.636719 1121.855469 Z M 134.636719 1110.117188 "/> <path d="M 134.59375 867.25 L 141.253906 867.25 L 141.253906 878.992188 L 134.59375 878.992188 Z M 134.59375 867.25 "/> <path d="M 176.28125 891.8125 L 182.945312 891.8125 L 182.945312 903.550781 L 176.28125 903.550781 Z M 176.28125 891.8125 "/> <path d="M 134.59375 891.632812 L 141.253906 891.632812 L 141.253906 903.375 L 134.59375 903.375 Z M 134.59375 891.632812 "/> <path d="M 113.8125 891.398438 L 120.476562 891.398438 L 120.476562 903.136719 L 113.8125 903.136719 Z M 113.8125 891.398438 "/> <path d="M 155.46875 915.859375 L 162.132812 915.859375 L 162.132812 927.597656 L 155.46875 927.597656 Z M 155.46875 915.859375 "/> <path d="M 176.292969 940.183594 L 182.953125 940.183594 L 182.953125 951.921875 L 176.292969 951.921875 Z M 176.292969 940.183594 "/> <path d="M 134.601562 940.003906 L 141.261719 940.003906 L 141.261719 951.746094 L 134.601562 951.746094 Z M 134.601562 940.003906 "/> <path d="M 113.820312 939.769531 L 120.484375 939.769531 L 120.484375 951.507812 L 113.820312 951.507812 Z M 113.820312 939.769531 "/> <path d="M 155.457031 964.386719 L 162.117188 964.386719 L 162.117188 976.128906 L 155.457031 976.128906 Z M 155.457031 964.386719 "/> <path d="M 113.820312 964.152344 L 120.484375 964.152344 L 120.484375 975.890625 L 113.820312 975.890625 Z M 113.820312 964.152344 "/> <path d="M 176.273438 721.695312 L 182.9375 721.695312 L 182.9375 733.4375 L 176.273438 733.4375 Z M 176.273438 721.695312 "/> <path d="M 134.585938 721.519531 L 141.246094 721.519531 L 141.246094 733.257812 L 134.585938 733.257812 Z M 134.585938 721.519531 "/> <path d="M 155.4375 745.902344 L 162.101562 745.902344 L 162.101562 757.640625 L 155.4375 757.640625 Z M 155.4375 745.902344 "/> <path d="M 113.804688 745.664062 L 120.46875 745.664062 L 120.46875 757.40625 L 113.804688 757.40625 Z M 113.804688 745.664062 "/> <path d="M 155.460938 770.125 L 162.125 770.125 L 162.125 781.867188 L 155.460938 781.867188 Z M 155.460938 770.125 "/> <path d="M 134.605469 770.125 L 141.269531 770.125 L 141.269531 781.867188 L 134.605469 781.867188 Z M 134.605469 770.125 "/> <path d="M 155.449219 794.273438 L 162.109375 794.273438 L 162.109375 806.011719 L 155.449219 806.011719 Z M 155.449219 794.273438 "/> <path d="M 134.59375 818.65625 L 141.253906 818.65625 L 141.253906 830.394531 L 134.59375 830.394531 Z M 134.59375 818.65625 "/> <path d="M 176.304688 843.058594 L 182.96875 843.058594 L 182.96875 854.796875 L 176.304688 854.796875 Z M 176.304688 843.058594 "/> <path d="M 155.46875 842.878906 L 162.132812 842.878906 L 162.132812 854.621094 L 155.46875 854.621094 Z M 155.46875 842.878906 "/> <path d="M 113.835938 842.644531 L 120.496094 842.644531 L 120.496094 854.382812 L 113.835938 854.382812 Z M 113.835938 842.644531 "/> <path d="M 155.421875 600.015625 L 162.085938 600.015625 L 162.085938 611.757812 L 155.421875 611.757812 Z M 155.421875 600.015625 "/> <path d="M 134.566406 624.398438 L 141.230469 624.398438 L 141.230469 636.140625 L 134.566406 636.140625 Z M 134.566406 624.398438 "/> <path d="M 113.789062 624.164062 L 120.453125 624.164062 L 120.453125 635.902344 L 113.789062 635.902344 Z M 113.789062 624.164062 "/> <path d="M 176.28125 648.800781 L 182.945312 648.800781 L 182.945312 660.539062 L 176.28125 660.539062 Z M 176.28125 648.800781 "/> <path d="M 155.445312 648.625 L 162.109375 648.625 L 162.109375 660.363281 L 155.445312 660.363281 Z M 155.445312 648.625 "/> <path d="M 134.574219 672.769531 L 141.238281 672.769531 L 141.238281 684.511719 L 134.574219 684.511719 Z M 134.574219 672.769531 "/> <path d="M 176.269531 697.328125 L 182.929688 697.328125 L 182.929688 709.070312 L 176.269531 709.070312 Z M 176.269531 697.328125 "/> <path d="M 113.796875 696.917969 L 120.460938 696.917969 L 120.460938 708.65625 L 113.796875 708.65625 Z M 113.796875 696.917969 "/> <path d="M 155.4375 505.625 L 162.101562 505.625 L 162.101562 517.367188 L 155.4375 517.367188 Z M 155.4375 505.625 "/> <path d="M 134.582031 505.625 L 141.242188 505.625 L 141.242188 517.367188 L 134.582031 517.367188 Z M 134.582031 505.625 "/> <path d="M 134.570312 529.773438 L 141.230469 529.773438 L 141.230469 541.511719 L 134.570312 541.511719 Z M 134.570312 529.773438 "/> <path d="M 155.425781 554.15625 L 162.085938 554.15625 L 162.085938 565.894531 L 155.425781 565.894531 Z M 155.425781 554.15625 "/> <path d="M 176.28125 578.558594 L 182.945312 578.558594 L 182.945312 590.296875 L 176.28125 590.296875 Z M 176.28125 578.558594 "/> <path d="M 155.445312 578.378906 L 162.109375 578.378906 L 162.109375 590.121094 L 155.445312 590.121094 Z M 155.445312 578.378906 "/> <path d="M 113.8125 578.144531 L 120.472656 578.144531 L 120.472656 589.882812 L 113.8125 589.882812 Z M 113.8125 578.144531 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsTen { function item_10(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:rgb(0%,0%,0%);" d="M 75.210938 325.023438 L 75.210938 1200 L 225.074219 1200 L 225.074219 325.023438 L 153.707031 325.023438 L 153.707031 199.816406 L 146.574219 199.816406 L 146.574219 325.023438 Z M 75.210938 325.023438 "/> <path style="fill:rgb(0%,0%,0%);" d="M 225.074219 325.023438 L 225.074219 1200 L 75.210938 1200 L 75.210938 325.023438 L 146.574219 325.023438 L 146.574219 199.816406 L 153.707031 199.816406 L 153.707031 325.023438 Z M 225.074219 325.023438 "/> <path d="M 199.320312 1088.105469 L 206.0625 1088.105469 L 206.0625 1099.984375 L 199.320312 1099.984375 Z M 199.320312 1088.105469 "/> <path d="M 157.214844 1087.6875 L 163.953125 1087.6875 L 163.953125 1099.566406 L 157.214844 1099.566406 Z M 157.214844 1087.6875 "/> <path d="M 115.085938 1087.449219 L 121.828125 1087.449219 L 121.828125 1099.328125 L 115.085938 1099.328125 Z M 115.085938 1087.449219 "/> <path d="M 136.113281 1112.359375 L 142.855469 1112.359375 L 142.855469 1124.238281 L 136.113281 1124.238281 Z M 136.113281 1112.359375 "/> <path d="M 115.085938 1112.121094 L 121.828125 1112.121094 L 121.828125 1124 L 115.085938 1124 Z M 115.085938 1112.121094 "/> <path d="M 199.339844 1137.289062 L 206.082031 1137.289062 L 206.082031 1149.167969 L 199.339844 1149.167969 Z M 199.339844 1137.289062 "/> <path d="M 157.234375 1136.871094 L 163.976562 1136.871094 L 163.976562 1148.75 L 157.234375 1148.75 Z M 157.234375 1136.871094 "/> <path d="M 136.132812 1136.871094 L 142.875 1136.871094 L 142.875 1148.75 L 136.132812 1148.75 Z M 136.132812 1136.871094 "/> <path d="M 178.304688 1161.480469 L 185.046875 1161.480469 L 185.046875 1173.359375 L 178.304688 1173.359375 Z M 178.304688 1161.480469 "/> <path d="M 157.222656 1161.300781 L 163.964844 1161.300781 L 163.964844 1173.179688 L 157.222656 1173.179688 Z M 157.222656 1161.300781 "/> <path d="M 115.097656 1161.0625 L 121.839844 1161.0625 L 121.839844 1172.941406 L 115.097656 1172.941406 Z M 115.097656 1161.0625 "/> <path d="M 94.015625 1160.882812 L 100.757812 1160.882812 L 100.757812 1172.761719 L 94.015625 1172.761719 Z M 94.015625 1160.882812 "/> <path d="M 199.304688 965.171875 L 206.046875 965.171875 L 206.046875 977.046875 L 199.304688 977.046875 Z M 199.304688 965.171875 "/> <path d="M 157.195312 964.75 L 163.9375 964.75 L 163.9375 976.628906 L 157.195312 976.628906 Z M 157.195312 964.75 "/> <path d="M 136.09375 964.75 L 142.835938 964.75 L 142.835938 976.628906 L 136.09375 976.628906 Z M 136.09375 964.75 "/> <path d="M 93.988281 964.332031 L 100.730469 964.332031 L 100.730469 976.210938 L 93.988281 976.210938 Z M 93.988281 964.332031 "/> <path d="M 178.277344 989.601562 L 185.019531 989.601562 L 185.019531 1001.480469 L 178.277344 1001.480469 Z M 178.277344 989.601562 "/> <path d="M 136.09375 989.421875 L 142.835938 989.421875 L 142.835938 1001.300781 L 136.09375 1001.300781 Z M 136.09375 989.421875 "/> <path d="M 93.988281 989.003906 L 100.730469 989.003906 L 100.730469 1000.882812 L 93.988281 1000.882812 Z M 93.988281 989.003906 "/> <path d="M 199.324219 1014.351562 L 206.066406 1014.351562 L 206.066406 1026.230469 L 199.324219 1026.230469 Z M 199.324219 1014.351562 "/> <path d="M 115.09375 1013.695312 L 121.835938 1013.695312 L 121.835938 1025.570312 L 115.09375 1025.570312 Z M 115.09375 1013.695312 "/> <path d="M 157.207031 1038.363281 L 163.949219 1038.363281 L 163.949219 1050.242188 L 157.207031 1050.242188 Z M 157.207031 1038.363281 "/> <path d="M 115.078125 1038.125 L 121.820312 1038.125 L 121.820312 1050.003906 L 115.078125 1050.003906 Z M 115.078125 1038.125 "/> <path d="M 136.105469 1063.035156 L 142.847656 1063.035156 L 142.847656 1074.914062 L 136.105469 1074.914062 Z M 136.105469 1063.035156 "/> <path d="M 93.996094 1062.617188 L 100.738281 1062.617188 L 100.738281 1074.496094 L 93.996094 1074.496094 Z M 93.996094 1062.617188 "/> <path d="M 199.273438 842.195312 L 206.015625 842.195312 L 206.015625 854.074219 L 199.273438 854.074219 Z M 199.273438 842.195312 "/> <path d="M 136.0625 841.777344 L 142.804688 841.777344 L 142.804688 853.65625 L 136.0625 853.65625 Z M 136.0625 841.777344 "/> <path d="M 93.957031 841.359375 L 100.699219 841.359375 L 100.699219 853.238281 L 93.957031 853.238281 Z M 93.957031 841.359375 "/> <path d="M 178.246094 866.628906 L 184.988281 866.628906 L 184.988281 878.507812 L 178.246094 878.507812 Z M 178.246094 866.628906 "/> <path d="M 115.039062 866.210938 L 121.78125 866.210938 L 121.78125 878.085938 L 115.039062 878.085938 Z M 115.039062 866.210938 "/> <path d="M 199.292969 891.378906 L 206.035156 891.378906 L 206.035156 903.253906 L 199.292969 903.253906 Z M 199.292969 891.378906 "/> <path d="M 178.269531 891.136719 L 185.011719 891.136719 L 185.011719 903.015625 L 178.269531 903.015625 Z M 178.269531 891.136719 "/> <path d="M 199.28125 915.808594 L 206.023438 915.808594 L 206.023438 927.6875 L 199.28125 927.6875 Z M 199.28125 915.808594 "/> <path d="M 178.257812 915.570312 L 184.996094 915.570312 L 184.996094 927.449219 L 178.257812 927.449219 Z M 178.257812 915.570312 "/> <path d="M 136.070312 915.390625 L 142.8125 915.390625 L 142.8125 927.269531 L 136.070312 927.269531 Z M 136.070312 915.390625 "/> <path d="M 93.964844 914.972656 L 100.707031 914.972656 L 100.707031 926.851562 L 93.964844 926.851562 Z M 93.964844 914.972656 "/> <path d="M 93.988281 964.152344 L 100.730469 964.152344 L 100.730469 976.03125 L 93.988281 976.03125 Z M 93.988281 964.152344 "/> <path d="M 199.257812 719.257812 L 205.996094 719.257812 L 205.996094 731.136719 L 199.257812 731.136719 Z M 199.257812 719.257812 "/> <path d="M 178.230469 719.019531 L 184.972656 719.019531 L 184.972656 730.898438 L 178.230469 730.898438 Z M 178.230469 719.019531 "/> <path d="M 115.023438 718.601562 L 121.765625 718.601562 L 121.765625 730.480469 L 115.023438 730.480469 Z M 115.023438 718.601562 "/> <path d="M 178.230469 743.691406 L 184.972656 743.691406 L 184.972656 755.566406 L 178.230469 755.566406 Z M 178.230469 743.691406 "/> <path d="M 93.941406 743.09375 L 100.683594 743.09375 L 100.683594 754.96875 L 93.941406 754.96875 Z M 93.941406 743.09375 "/> <path d="M 157.171875 768.019531 L 163.914062 768.019531 L 163.914062 779.898438 L 157.171875 779.898438 Z M 157.171875 768.019531 "/> <path d="M 199.265625 792.871094 L 206.007812 792.871094 L 206.007812 804.75 L 199.265625 804.75 Z M 199.265625 792.871094 "/> <path d="M 178.238281 792.632812 L 184.980469 792.632812 L 184.980469 804.511719 L 178.238281 804.511719 Z M 178.238281 792.632812 "/> <path d="M 157.15625 792.453125 L 163.898438 792.453125 L 163.898438 804.332031 L 157.15625 804.332031 Z M 157.15625 792.453125 "/> <path d="M 199.265625 817.542969 L 206.007812 817.542969 L 206.007812 829.421875 L 199.265625 829.421875 Z M 199.265625 817.542969 "/> <path d="M 93.949219 816.707031 L 100.691406 816.707031 L 100.691406 828.585938 L 93.949219 828.585938 Z M 93.949219 816.707031 "/> <path d="M 136.039062 571.386719 L 142.78125 571.386719 L 142.78125 583.265625 L 136.039062 583.265625 Z M 136.039062 571.386719 "/> <path d="M 115.015625 571.148438 L 121.757812 571.148438 L 121.757812 583.023438 L 115.015625 583.023438 Z M 115.015625 571.148438 "/> <path d="M 93.933594 570.96875 L 100.675781 570.96875 L 100.675781 582.847656 L 93.933594 582.847656 Z M 93.933594 570.96875 "/> <path d="M 199.246094 596.476562 L 205.988281 596.476562 L 205.988281 608.355469 L 199.246094 608.355469 Z M 199.246094 596.476562 "/> <path d="M 157.140625 596.058594 L 163.882812 596.058594 L 163.882812 607.933594 L 157.140625 607.933594 Z M 157.140625 596.058594 "/> <path d="M 93.933594 595.640625 L 100.675781 595.640625 L 100.675781 607.515625 L 93.933594 607.515625 Z M 93.933594 595.640625 "/> <path d="M 199.269531 620.984375 L 206.011719 620.984375 L 206.011719 632.863281 L 199.269531 632.863281 Z M 199.269531 620.984375 "/> <path d="M 199.257812 645.417969 L 205.996094 645.417969 L 205.996094 657.296875 L 199.257812 657.296875 Z M 199.257812 645.417969 "/> <path d="M 178.230469 645.179688 L 184.972656 645.179688 L 184.972656 657.058594 L 178.230469 657.058594 Z M 178.230469 645.179688 "/> <path d="M 136.046875 645 L 142.789062 645 L 142.789062 656.878906 L 136.046875 656.878906 Z M 136.046875 645 "/> <path d="M 93.941406 644.582031 L 100.683594 644.582031 L 100.683594 656.460938 L 93.941406 656.460938 Z M 93.941406 644.582031 "/> <path d="M 157.148438 669.671875 L 163.890625 669.671875 L 163.890625 681.550781 L 157.148438 681.550781 Z M 157.148438 669.671875 "/> <path d="M 136.046875 669.671875 L 142.789062 669.671875 L 142.789062 681.550781 L 136.046875 681.550781 Z M 136.046875 669.671875 "/> <path d="M 115.023438 669.433594 L 121.765625 669.433594 L 121.765625 681.308594 L 115.023438 681.308594 Z M 115.023438 669.433594 "/> <path d="M 199.277344 694.597656 L 206.019531 694.597656 L 206.019531 706.476562 L 199.277344 706.476562 Z M 199.277344 694.597656 "/> <path d="M 136.070312 694.179688 L 142.8125 694.179688 L 142.8125 706.058594 L 136.070312 706.058594 Z M 136.070312 694.179688 "/> <path d="M 93.964844 693.761719 L 100.703125 693.761719 L 100.703125 705.640625 L 93.964844 705.640625 Z M 93.964844 693.761719 "/> <path d="M 178.207031 448.628906 L 184.949219 448.628906 L 184.949219 460.507812 L 178.207031 460.507812 Z M 178.207031 448.628906 "/> <path d="M 157.125 448.449219 L 163.867188 448.449219 L 163.867188 460.328125 L 157.125 460.328125 Z M 157.125 448.449219 "/> <path d="M 115 448.210938 L 121.742188 448.210938 L 121.742188 460.089844 L 115 460.089844 Z M 115 448.210938 "/> <path d="M 199.230469 473.539062 L 205.972656 473.539062 L 205.972656 485.414062 L 199.230469 485.414062 Z M 199.230469 473.539062 "/> <path d="M 136.023438 473.121094 L 142.765625 473.121094 L 142.765625 484.996094 L 136.023438 484.996094 Z M 136.023438 473.121094 "/> <path d="M 93.917969 472.699219 L 100.660156 472.699219 L 100.660156 484.578125 L 93.917969 484.578125 Z M 93.917969 472.699219 "/> <path d="M 199.253906 498.046875 L 205.996094 498.046875 L 205.996094 509.925781 L 199.253906 509.925781 Z M 199.253906 498.046875 "/> <path d="M 178.230469 497.808594 L 184.972656 497.808594 L 184.972656 509.6875 L 178.230469 509.6875 Z M 178.230469 497.808594 "/> <path d="M 115.019531 497.390625 L 121.761719 497.390625 L 121.761719 509.269531 L 115.019531 509.269531 Z M 115.019531 497.390625 "/> <path d="M 93.9375 497.210938 L 100.679688 497.210938 L 100.679688 509.089844 L 93.9375 509.089844 Z M 93.9375 497.210938 "/> <path d="M 178.214844 522.242188 L 184.957031 522.242188 L 184.957031 534.117188 L 178.214844 534.117188 Z M 178.214844 522.242188 "/> <path d="M 157.132812 522.0625 L 163.875 522.0625 L 163.875 533.941406 L 157.132812 533.941406 Z M 157.132812 522.0625 "/> <path d="M 136.03125 522.0625 L 142.773438 522.0625 L 142.773438 533.941406 L 136.03125 533.941406 Z M 136.03125 522.0625 "/> <path d="M 199.238281 547.152344 L 205.980469 547.152344 L 205.980469 559.027344 L 199.238281 559.027344 Z M 199.238281 547.152344 "/> <path d="M 178.214844 546.910156 L 184.957031 546.910156 L 184.957031 558.789062 L 178.214844 558.789062 Z M 178.214844 546.910156 "/> <path d="M 157.132812 546.734375 L 163.875 546.734375 L 163.875 558.609375 L 157.132812 558.609375 Z M 157.132812 546.734375 "/> <path d="M 93.925781 546.316406 L 100.667969 546.316406 L 100.667969 558.191406 L 93.925781 558.191406 Z M 93.925781 546.316406 "/> <path d="M 199.246094 353.363281 L 205.988281 353.363281 L 205.988281 365.238281 L 199.246094 365.238281 Z M 199.246094 353.363281 "/> <path d="M 157.140625 352.945312 L 163.882812 352.945312 L 163.882812 364.820312 L 157.140625 364.820312 Z M 157.140625 352.945312 "/> <path d="M 115.011719 352.703125 L 121.753906 352.703125 L 121.753906 364.582031 L 115.011719 364.582031 Z M 115.011719 352.703125 "/> <path d="M 93.929688 352.523438 L 100.671875 352.523438 L 100.671875 364.402344 L 93.929688 364.402344 Z M 93.929688 352.523438 "/> <path d="M 199.230469 377.792969 L 205.972656 377.792969 L 205.972656 389.671875 L 199.230469 389.671875 Z M 199.230469 377.792969 "/> <path d="M 136.023438 377.375 L 142.765625 377.375 L 142.765625 389.253906 L 136.023438 389.253906 Z M 136.023438 377.375 "/> <path d="M 199.230469 402.464844 L 205.972656 402.464844 L 205.972656 414.34375 L 199.230469 414.34375 Z M 199.230469 402.464844 "/> <path d="M 178.207031 402.226562 L 184.949219 402.226562 L 184.949219 414.105469 L 178.207031 414.105469 Z M 178.207031 402.226562 "/> <path d="M 157.125 402.046875 L 163.867188 402.046875 L 163.867188 413.925781 L 157.125 413.925781 Z M 157.125 402.046875 "/> <path d="M 115 401.808594 L 121.742188 401.808594 L 121.742188 413.683594 L 115 413.683594 Z M 115 401.808594 "/> <path d="M 178.230469 426.734375 L 184.972656 426.734375 L 184.972656 438.613281 L 178.230469 438.613281 Z M 178.230469 426.734375 "/> <path d="M 136.046875 426.558594 L 142.789062 426.558594 L 142.789062 438.433594 L 136.046875 438.433594 Z M 136.046875 426.558594 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsEleven { function item_11(uint256 index) public pure returns (string memory) { return DetailsHelper.backgroundBase( string( abi.encodePacked( '<path style="fill:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1500 12292.96875 L 1500 12000 " transform="matrix(0.1,0,0,0.1,0,0)"/> <path style="fill:rgb(0%,0%,0%);" d="M 230.1875 1199.558594 L 150 1200 L 69.8125 1199.558594 L 92.386719 931.777344 L 81.097656 931.777344 L 81.097656 898.710938 L 92.386719 898.164062 L 81.097656 827.777344 L 92.386719 827.777344 L 81.097656 743.667969 L 92.386719 743.667969 L 76.683594 655.328125 L 92.386719 655.328125 L 76.683594 571.898438 L 85.515625 571.898438 L 74.71875 484.542969 L 92.386719 484.542969 L 84 440.640625 L 75.699219 397.1875 L 88.460938 397.1875 L 75.699219 313.757812 L 92.386719 313.757812 L 75.699219 226.398438 L 87.480469 226.398438 L 88.460938 215.601562 L 131.648438 215.601562 L 125.757812 177.324219 L 141.464844 177.324219 L 141.464844 6.535156 C 141.527344 2.808594 144.289062 0 150 0 C 155.347656 0 158.289062 2.988281 158.535156 6.535156 L 158.535156 177.324219 L 174.242188 177.324219 L 168.351562 215.601562 L 211.539062 215.601562 L 212.519531 226.398438 L 224.300781 226.398438 L 207.613281 313.757812 L 224.300781 313.757812 L 211.539062 397.1875 L 224.300781 397.1875 L 216 440.640625 L 207.613281 484.542969 L 225.28125 484.542969 L 214.484375 571.898438 L 223.316406 571.898438 L 207.613281 655.328125 L 223.316406 655.328125 L 207.613281 743.667969 L 218.902344 743.667969 L 207.613281 827.777344 L 218.902344 827.777344 L 207.613281 898.164062 L 218.902344 898.710938 L 218.902344 931.777344 L 207.613281 931.777344 Z M 230.1875 1199.558594 "/> <path d="M 178.507812 970.101562 L 185.25 970.101562 L 185.25 981.980469 L 178.507812 981.980469 Z M 178.507812 970.101562 "/> <path d="M 115.300781 969.683594 L 122.042969 969.683594 L 122.042969 981.5625 L 115.300781 981.5625 Z M 115.300781 969.683594 "/> <path d="M 178.507812 994.773438 L 185.25 994.773438 L 185.25 1006.652344 L 178.507812 1006.652344 Z M 178.507812 994.773438 "/> <path d="M 157.425781 994.59375 L 164.167969 994.59375 L 164.167969 1006.472656 L 157.425781 1006.472656 Z M 157.425781 994.59375 "/> <path d="M 136.324219 994.59375 L 143.066406 994.59375 L 143.066406 1006.472656 L 136.324219 1006.472656 Z M 136.324219 994.59375 "/> <path d="M 115.300781 994.355469 L 122.042969 994.355469 L 122.042969 1006.234375 L 115.300781 1006.234375 Z M 115.300781 994.355469 "/> <path d="M 178.53125 1019.285156 L 185.273438 1019.285156 L 185.273438 1031.160156 L 178.53125 1031.160156 Z M 178.53125 1019.285156 "/> <path d="M 136.347656 1019.105469 L 143.089844 1019.105469 L 143.089844 1030.984375 L 136.347656 1030.984375 Z M 136.347656 1019.105469 "/> <path d="M 178.519531 1043.714844 L 185.261719 1043.714844 L 185.261719 1055.59375 L 178.519531 1055.59375 Z M 178.519531 1043.714844 "/> <path d="M 136.335938 1043.535156 L 143.074219 1043.535156 L 143.074219 1055.414062 L 136.335938 1055.414062 Z M 136.335938 1043.535156 "/> <path d="M 115.308594 1043.296875 L 122.050781 1043.296875 L 122.050781 1055.175781 L 115.308594 1055.175781 Z M 115.308594 1043.296875 "/> <path d="M 178.519531 1068.386719 L 185.261719 1068.386719 L 185.261719 1080.265625 L 178.519531 1080.265625 Z M 178.519531 1068.386719 "/> <path d="M 157.4375 1068.207031 L 164.179688 1068.207031 L 164.179688 1080.085938 L 157.4375 1080.085938 Z M 157.4375 1068.207031 "/> <path d="M 136.335938 1068.207031 L 143.074219 1068.207031 L 143.074219 1080.085938 L 136.335938 1080.085938 Z M 136.335938 1068.207031 "/> <path d="M 157.457031 1092.71875 L 164.199219 1092.71875 L 164.199219 1104.597656 L 157.457031 1104.597656 Z M 157.457031 1092.71875 "/> <path d="M 115.332031 1092.480469 L 122.074219 1092.480469 L 122.074219 1104.355469 L 115.332031 1104.355469 Z M 115.332031 1092.480469 "/> <path d="M 157.410156 846.984375 L 164.152344 846.984375 L 164.152344 858.863281 L 157.410156 858.863281 Z M 157.410156 846.984375 "/> <path d="M 136.308594 846.984375 L 143.050781 846.984375 L 143.050781 858.863281 L 136.308594 858.863281 Z M 136.308594 846.984375 "/> <path d="M 178.492188 871.835938 L 185.234375 871.835938 L 185.234375 883.714844 L 178.492188 883.714844 Z M 178.492188 871.835938 "/> <path d="M 157.410156 871.65625 L 164.152344 871.65625 L 164.152344 883.535156 L 157.410156 883.535156 Z M 157.410156 871.65625 "/> <path d="M 136.308594 871.65625 L 143.050781 871.65625 L 143.050781 883.535156 L 136.308594 883.535156 Z M 136.308594 871.65625 "/> <path d="M 136.332031 896.167969 L 143.074219 896.167969 L 143.074219 908.046875 L 136.332031 908.046875 Z M 136.332031 896.167969 "/> <path d="M 115.304688 895.929688 L 122.046875 895.929688 L 122.046875 907.804688 L 115.304688 907.804688 Z M 115.304688 895.929688 "/> <path d="M 178.503906 920.777344 L 185.242188 920.777344 L 185.242188 932.65625 L 178.503906 932.65625 Z M 178.503906 920.777344 "/> <path d="M 157.421875 920.597656 L 164.160156 920.597656 L 164.160156 932.476562 L 157.421875 932.476562 Z M 157.421875 920.597656 "/> <path d="M 136.316406 920.597656 L 143.058594 920.597656 L 143.058594 932.476562 L 136.316406 932.476562 Z M 136.316406 920.597656 "/> <path d="M 178.503906 945.449219 L 185.242188 945.449219 L 185.242188 957.328125 L 178.503906 957.328125 Z M 178.503906 945.449219 "/> <path d="M 136.316406 945.269531 L 143.058594 945.269531 L 143.058594 957.148438 L 136.316406 957.148438 Z M 136.316406 945.269531 "/> <path d="M 178.460938 724.191406 L 185.203125 724.191406 L 185.203125 736.070312 L 178.460938 736.070312 Z M 178.460938 724.191406 "/> <path d="M 157.378906 724.011719 L 164.121094 724.011719 L 164.121094 735.890625 L 157.378906 735.890625 Z M 157.378906 724.011719 "/> <path d="M 136.277344 724.011719 L 143.019531 724.011719 L 143.019531 735.890625 L 136.277344 735.890625 Z M 136.277344 724.011719 "/> <path d="M 157.378906 748.683594 L 164.121094 748.683594 L 164.121094 760.5625 L 157.378906 760.5625 Z M 157.378906 748.683594 "/> <path d="M 178.484375 773.371094 L 185.226562 773.371094 L 185.226562 785.25 L 178.484375 785.25 Z M 178.484375 773.371094 "/> <path d="M 136.300781 773.191406 L 143.039062 773.191406 L 143.039062 785.070312 L 136.300781 785.070312 Z M 136.300781 773.191406 "/> <path d="M 115.273438 772.953125 L 122.015625 772.953125 L 122.015625 784.832031 L 115.273438 784.832031 Z M 115.273438 772.953125 "/> <path d="M 178.46875 797.804688 L 185.210938 797.804688 L 185.210938 809.683594 L 178.46875 809.683594 Z M 178.46875 797.804688 "/> <path d="M 157.386719 797.625 L 164.128906 797.625 L 164.128906 809.503906 L 157.386719 809.503906 Z M 157.386719 797.625 "/> <path d="M 115.261719 797.386719 L 122.003906 797.386719 L 122.003906 809.265625 L 115.261719 809.265625 Z M 115.261719 797.386719 "/> <path d="M 136.285156 822.296875 L 143.027344 822.296875 L 143.027344 834.175781 L 136.285156 834.175781 Z M 136.285156 822.296875 "/> <path d="M 115.261719 822.058594 L 122.003906 822.058594 L 122.003906 833.933594 L 115.261719 833.933594 Z M 115.261719 822.058594 "/> <path d="M 157.410156 846.804688 L 164.152344 846.804688 L 164.152344 858.683594 L 157.410156 858.683594 Z M 157.410156 846.804688 "/> <path d="M 136.308594 846.804688 L 143.050781 846.804688 L 143.050781 858.683594 L 136.308594 858.683594 Z M 136.308594 846.804688 "/> <path d="M 178.445312 601.253906 L 185.1875 601.253906 L 185.1875 613.132812 L 178.445312 613.132812 Z M 178.445312 601.253906 "/> <path d="M 157.363281 601.074219 L 164.105469 601.074219 L 164.105469 612.953125 L 157.363281 612.953125 Z M 157.363281 601.074219 "/> <path d="M 136.261719 601.074219 L 143.003906 601.074219 L 143.003906 612.953125 L 136.261719 612.953125 Z M 136.261719 601.074219 "/> <path d="M 178.445312 625.925781 L 185.1875 625.925781 L 185.1875 637.804688 L 178.445312 637.804688 Z M 178.445312 625.925781 "/> <path d="M 136.261719 625.746094 L 143.003906 625.746094 L 143.003906 637.621094 L 136.261719 637.621094 Z M 136.261719 625.746094 "/> <path d="M 115.238281 625.507812 L 121.980469 625.507812 L 121.980469 637.382812 L 115.238281 637.382812 Z M 115.238281 625.507812 "/> <path d="M 157.386719 650.257812 L 164.128906 650.257812 L 164.128906 662.132812 L 157.386719 662.132812 Z M 157.386719 650.257812 "/> <path d="M 178.453125 674.867188 L 185.195312 674.867188 L 185.195312 686.746094 L 178.453125 686.746094 Z M 178.453125 674.867188 "/> <path d="M 157.371094 674.6875 L 164.113281 674.6875 L 164.113281 686.566406 L 157.371094 686.566406 Z M 157.371094 674.6875 "/> <path d="M 136.269531 674.6875 L 143.011719 674.6875 L 143.011719 686.566406 L 136.269531 686.566406 Z M 136.269531 674.6875 "/> <path d="M 178.453125 699.539062 L 185.195312 699.539062 L 185.195312 711.414062 L 178.453125 711.414062 Z M 178.453125 699.539062 "/> <path d="M 136.269531 699.359375 L 143.011719 699.359375 L 143.011719 711.234375 L 136.269531 711.234375 Z M 136.269531 699.359375 "/> <path d="M 115.246094 699.117188 L 121.988281 699.117188 L 121.988281 710.996094 L 115.246094 710.996094 Z M 115.246094 699.117188 "/> <path d="M 178.4375 453.800781 L 185.179688 453.800781 L 185.179688 465.679688 L 178.4375 465.679688 Z M 178.4375 453.800781 "/> <path d="M 157.355469 453.621094 L 164.097656 453.621094 L 164.097656 465.5 L 157.355469 465.5 Z M 157.355469 453.621094 "/> <path d="M 136.253906 478.292969 L 142.996094 478.292969 L 142.996094 490.171875 L 136.253906 490.171875 Z M 136.253906 478.292969 "/> <path d="M 115.230469 478.054688 L 121.972656 478.054688 L 121.972656 489.929688 L 115.230469 489.929688 Z M 115.230469 478.054688 "/> <path d="M 178.460938 502.980469 L 185.199219 502.980469 L 185.199219 514.859375 L 178.460938 514.859375 Z M 178.460938 502.980469 "/> <path d="M 157.378906 502.800781 L 164.117188 502.800781 L 164.117188 514.679688 L 157.378906 514.679688 Z M 157.378906 502.800781 "/> <path d="M 178.445312 527.414062 L 185.1875 527.414062 L 185.1875 539.289062 L 178.445312 539.289062 Z M 178.445312 527.414062 "/> <path d="M 157.363281 527.234375 L 164.105469 527.234375 L 164.105469 539.113281 L 157.363281 539.113281 Z M 157.363281 527.234375 "/> <path d="M 115.238281 526.996094 L 121.980469 526.996094 L 121.980469 538.871094 L 115.238281 538.871094 Z M 115.238281 526.996094 "/> <path d="M 157.363281 551.90625 L 164.105469 551.90625 L 164.105469 563.78125 L 157.363281 563.78125 Z M 157.363281 551.90625 "/> <path d="M 115.238281 551.664062 L 121.980469 551.664062 L 121.980469 563.542969 L 115.238281 563.542969 Z M 115.238281 551.664062 "/> <path d="M 178.46875 576.59375 L 185.210938 576.59375 L 185.210938 588.472656 L 178.46875 588.472656 Z M 178.46875 576.59375 "/> <path d="M 115.257812 576.175781 L 122 576.175781 L 122 588.054688 L 115.257812 588.054688 Z M 115.257812 576.175781 "/> <path d="M 157.339844 330.683594 L 164.082031 330.683594 L 164.082031 342.5625 L 157.339844 342.5625 Z M 157.339844 330.683594 "/> <path d="M 178.421875 355.53125 L 185.164062 355.53125 L 185.164062 367.410156 L 178.421875 367.410156 Z M 178.421875 355.53125 "/> <path d="M 136.238281 355.355469 L 142.980469 355.355469 L 142.980469 367.230469 L 136.238281 367.230469 Z M 136.238281 355.355469 "/> <path d="M 115.214844 355.113281 L 121.953125 355.113281 L 121.953125 366.992188 L 115.214844 366.992188 Z M 115.214844 355.113281 "/> <path d="M 178.441406 380.042969 L 185.183594 380.042969 L 185.183594 391.921875 L 178.441406 391.921875 Z M 178.441406 380.042969 "/> <path d="M 157.359375 379.863281 L 164.101562 379.863281 L 164.101562 391.742188 L 157.359375 391.742188 Z M 157.359375 379.863281 "/> <path d="M 136.257812 379.863281 L 143 379.863281 L 143 391.742188 L 136.257812 391.742188 Z M 136.257812 379.863281 "/> <path d="M 115.234375 379.625 L 121.976562 379.625 L 121.976562 391.503906 L 115.234375 391.503906 Z M 115.234375 379.625 "/> <path d="M 115.222656 404.058594 L 121.964844 404.058594 L 121.964844 415.933594 L 115.222656 415.933594 Z M 115.222656 404.058594 "/> <path d="M 178.429688 429.148438 L 185.171875 429.148438 L 185.171875 441.023438 L 178.429688 441.023438 Z M 178.429688 429.148438 "/> <path d="M 157.347656 428.96875 L 164.089844 428.96875 L 164.089844 440.84375 L 157.347656 440.84375 Z M 157.347656 428.96875 "/> <path d="M 115.222656 428.726562 L 121.964844 428.726562 L 121.964844 440.605469 L 115.222656 440.605469 Z M 115.222656 428.726562 "/> <path d="M 157.351562 235.179688 L 164.09375 235.179688 L 164.09375 247.054688 L 157.351562 247.054688 Z M 157.351562 235.179688 "/> <path d="M 115.226562 234.9375 L 121.96875 234.9375 L 121.96875 246.816406 L 115.226562 246.816406 Z M 115.226562 234.9375 "/> <path d="M 157.339844 259.609375 L 164.082031 259.609375 L 164.082031 271.488281 L 157.339844 271.488281 Z M 157.339844 259.609375 "/> <path d="M 136.238281 259.609375 L 142.980469 259.609375 L 142.980469 271.488281 L 136.238281 271.488281 Z M 136.238281 259.609375 "/> <path d="M 115.214844 259.371094 L 121.953125 259.371094 L 121.953125 271.25 L 115.214844 271.25 Z M 115.214844 259.371094 "/> <path d="M 178.421875 284.460938 L 185.164062 284.460938 L 185.164062 296.339844 L 178.421875 296.339844 Z M 178.421875 284.460938 "/> <path d="M 157.339844 284.28125 L 164.082031 284.28125 L 164.082031 296.160156 L 157.339844 296.160156 Z M 157.339844 284.28125 "/> <path d="M 115.214844 284.042969 L 121.953125 284.042969 L 121.953125 295.921875 L 115.214844 295.921875 Z M 115.214844 284.042969 "/> <path d="M 178.441406 308.972656 L 185.183594 308.972656 L 185.183594 320.847656 L 178.441406 320.847656 Z M 178.441406 308.972656 "/> <path d="M 157.359375 308.789062 L 164.101562 308.789062 L 164.101562 320.667969 L 157.359375 320.667969 Z M 157.359375 308.789062 "/>' ) ), index ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsTwelveFPart { function item_12() public pure returns (string memory) { return '<path style="fill:rgb(0%,0%,0%);" d="M 99.742188 464.847656 C 99.742188 460.222656 104.753906 456.785156 109.40625 456.785156 L 119.0625 456.847656 L 119.304688 241.167969 C 119.304688 236.554688 123.074219 232.808594 127.710938 232.808594 L 142.300781 232.808594 L 142.300781 160.011719 C 142.300781 155.402344 146.058594 151.652344 150.710938 151.652344 L 152.546875 151.652344 L 152.546875 5.570312 C 152.546875 4.027344 153.179688 2.632812 154.1875 1.628906 C 155.210938 0.628906 156.613281 0 158.15625 0 C 161.253906 0 163.761719 2.492188 163.761719 5.570312 L 163.761719 151.652344 L 164.195312 151.652344 C 168.835938 151.652344 172.605469 155.402344 172.605469 160.011719 C 172.605469 160.011719 174.464844 336.96875 174.035156 336.265625 C 173.601562 335.5625 179.21875 336.265625 179.21875 336.265625 C 183.859375 336.265625 187.199219 339.8125 187.199219 344.4375 L 187.320312 560.492188 L 199.261719 560.492188 C 203.902344 560.492188 207.671875 564.226562 207.671875 568.851562 L 207.417969 785.851562 L 220.199219 785.851562 C 224.839844 785.851562 228.609375 789.582031 228.609375 794.207031 L 229.324219 1009.5625 L 238.140625 1009.5625 C 242.792969 1009.5625 246.550781 1013.296875 246.550781 1017.921875 L 246.550781 1130.445312 L 261.839844 1130.445312 C 266.480469 1130.445312 270.25 1134.191406 270.25 1138.804688 L 270.25 1161.910156 L 291.988281 1161.910156 C 296.640625 1161.910156 300.058594 1165.601562 300.058594 1170.214844 C 300.058594 1170.214844 300.035156 1201.6875 300.007812 1200.007812 L -0.015625 1200.035156 C -0.0664062 1188.863281 -0.0390625 1170.210938 -0.0390625 1170.210938 C -0.0390625 1165.601562 3.6875 1161.910156 8.339844 1161.910156 L 31.605469 1161.910156 L 31.605469 1138.800781 C 31.605469 1134.191406 35.363281 1130.445312 40.015625 1130.445312 L 55.421875 1130.445312 L 55.199219 912.101562 C 55.199219 907.476562 59.667969 903.234375 64.320312 903.234375 L 74.480469 903.234375 L 74.257812 687.519531 C 74.257812 682.90625 78.011719 679.160156 82.664062 679.160156 L 99.722656 679.160156 "/> <path d="M 149.691406 471.699219 L 156.367188 471.699219 L 156.367188 483.394531 L 149.691406 483.394531 Z M 149.691406 471.699219 "/> <path d="M 107.980469 471.289062 L 114.65625 471.289062 L 114.65625 482.980469 L 107.980469 482.980469 Z M 107.980469 471.289062 "/> <path d="M 170.613281 495.832031 L 177.292969 495.832031 L 177.292969 507.523438 L 170.613281 507.523438 Z M 170.613281 495.832031 "/> <path d="M 149.710938 495.832031 L 156.390625 495.832031 L 156.390625 507.523438 L 149.710938 507.523438 Z M 149.710938 495.832031 "/> <path d="M 108 495.417969 L 114.679688 495.417969 L 114.679688 507.113281 L 108 507.113281 Z M 108 495.417969 "/> <path d="M 170.613281 520.121094 L 177.292969 520.121094 L 177.292969 531.8125 L 170.613281 531.8125 Z M 170.613281 520.121094 "/> <path d="M 149.710938 520.121094 L 156.390625 520.121094 L 156.390625 531.8125 L 149.710938 531.8125 Z M 149.710938 520.121094 "/> <path d="M 128.886719 519.886719 L 135.5625 519.886719 L 135.5625 531.578125 L 128.886719 531.578125 Z M 128.886719 519.886719 "/> <path d="M 108 519.707031 L 114.679688 519.707031 L 114.679688 531.402344 L 108 531.402344 Z M 108 519.707031 "/> <path d="M 170.636719 544.25 L 177.3125 544.25 L 177.3125 555.945312 L 170.636719 555.945312 Z M 170.636719 544.25 "/> <path d="M 128.90625 544.015625 L 135.585938 544.015625 L 135.585938 555.710938 L 128.90625 555.710938 Z M 128.90625 544.015625 "/> <path d="M 170.625 568.304688 L 177.300781 568.304688 L 177.300781 579.996094 L 170.625 579.996094 Z M 170.625 568.304688 "/> <path d="M 128.894531 568.070312 L 135.570312 568.070312 L 135.570312 579.761719 L 128.894531 579.761719 Z M 128.894531 568.070312 "/> <path d="M 108.011719 567.890625 L 114.6875 567.890625 L 114.6875 579.585938 L 108.011719 579.585938 Z M 108.011719 567.890625 "/> <path d="M 170.625 592.59375 L 177.300781 592.59375 L 177.300781 604.285156 L 170.625 604.285156 Z M 170.625 592.59375 "/> <path d="M 108.011719 592.183594 L 114.6875 592.183594 L 114.6875 603.875 L 108.011719 603.875 Z M 108.011719 592.183594 "/> <path d="M 191.527344 616.902344 L 198.207031 616.902344 L 198.207031 628.59375 L 191.527344 628.59375 Z M 191.527344 616.902344 "/> <path d="M 128.914062 616.488281 L 135.59375 616.488281 L 135.59375 628.183594 L 128.914062 628.183594 Z M 128.914062 616.488281 "/> <path d="M 191.5 640.917969 L 198.179688 640.917969 L 198.179688 652.613281 L 191.5 652.613281 Z M 191.5 640.917969 "/> <path d="M 170.617188 640.742188 L 177.296875 640.742188 L 177.296875 652.4375 L 170.617188 652.4375 "/> <path d="M 149.714844 640.742188 L 156.390625 640.742188 L 156.390625 652.4375 L 149.714844 652.4375 Z M 149.714844 640.742188 "/> <path d="M 128.886719 640.507812 L 135.566406 640.507812 L 135.566406 652.203125 L 128.886719 652.203125 Z M 128.886719 640.507812 "/> <path d="M 108.003906 640.332031 L 114.679688 640.332031 L 114.679688 652.023438 L 108.003906 652.023438 Z M 108.003906 640.332031 "/> <path d="M 170.617188 665.03125 L 177.296875 665.03125 L 177.296875 676.726562 L 170.617188 676.726562 Z M 170.617188 665.03125 "/> <path d="M 149.714844 665.03125 L 156.390625 665.03125 L 156.390625 676.726562 L 149.714844 676.726562 Z M 149.714844 665.03125 "/> <path d="M 108.003906 664.621094 L 114.679688 664.621094 L 114.679688 676.3125 L 108.003906 676.3125 Z M 108.003906 664.621094 "/> <path d="M 191.523438 689.339844 L 198.199219 689.339844 L 198.199219 701.035156 L 191.523438 701.035156 Z M 191.523438 689.339844 "/> <path d="M 128.90625 688.929688 L 135.585938 688.929688 L 135.585938 700.621094 L 128.90625 700.621094 Z M 128.90625 688.929688 "/> <path d="M 108.023438 688.75 L 114.703125 688.75 L 114.703125 700.445312 L 108.023438 700.445312 Z M 108.023438 688.75 "/> <path d="M 191.507812 713.394531 L 198.1875 713.394531 L 198.1875 725.085938 L 191.507812 725.085938 Z M 191.507812 713.394531 "/> <path d="M 108.011719 712.804688 L 114.691406 712.804688 L 114.691406 724.5 L 108.011719 724.5 Z M 108.011719 712.804688 "/> <path d="M 149.722656 737.507812 L 156.398438 737.507812 L 156.398438 749.199219 L 149.722656 749.199219 Z M 149.722656 737.507812 "/> <path d="M 128.894531 737.269531 L 135.574219 737.269531 L 135.574219 748.964844 L 128.894531 748.964844 Z M 128.894531 737.269531 "/> <path d="M 170.648438 761.636719 L 177.324219 761.636719 L 177.324219 773.332031 L 170.648438 773.332031 Z M 170.648438 761.636719 "/> <path d="M 149.742188 761.636719 L 156.421875 761.636719 L 156.421875 773.332031 L 149.742188 773.332031 Z M 149.742188 761.636719 "/> <path d="M 108.03125 761.226562 L 114.710938 761.226562 L 114.710938 772.917969 L 108.03125 772.917969 Z M 108.03125 761.226562 "/> <path d="M 170.726562 761.257812 L 177.402344 761.257812 L 177.402344 772.953125 L 170.726562 772.953125 Z M 170.726562 761.257812 "/> <path d="M 149.84375 761.082031 L 156.519531 761.082031 L 156.519531 772.777344 L 149.84375 772.777344 Z M 149.84375 761.082031 "/> <path d="M 108.113281 760.847656 L 114.789062 760.847656 L 114.789062 772.539062 L 108.113281 772.539062 Z M 108.113281 760.847656 "/> <path d="M 87.226562 760.671875 L 93.90625 760.671875 L 93.90625 772.363281 L 87.226562 772.363281 Z M 87.226562 760.671875 "/> <path d="M 170.746094 785.390625 L 177.425781 785.390625 L 177.425781 797.085938 L 170.746094 797.085938 Z M 170.746094 785.390625 "/> <path d="M 128.960938 785.214844 L 135.636719 785.214844 L 135.636719 796.90625 L 128.960938 796.90625 Z M 128.960938 785.214844 "/> <path d="M 87.25 784.800781 L 93.929688 784.800781 L 93.929688 796.496094 L 87.25 796.496094 Z M 87.25 784.800781 "/> <path d="M 191.574219 809.914062 L 198.25 809.914062 L 198.25 821.609375 L 191.574219 821.609375 Z M 191.574219 809.914062 "/> <path d="M 170.746094 809.679688 L 177.425781 809.679688 L 177.425781 821.371094 L 170.746094 821.371094 Z M 170.746094 809.679688 "/> <path d="M 149.863281 809.503906 L 156.539062 809.503906 L 156.539062 821.195312 L 149.863281 821.195312 Z M 149.863281 809.503906 "/> <path d="M 128.960938 809.503906 L 135.636719 809.503906 L 135.636719 821.195312 L 128.960938 821.195312 Z M 128.960938 809.503906 "/> <path d="M 108.132812 809.265625 L 114.8125 809.265625 L 114.8125 820.960938 L 108.132812 820.960938 Z M 108.132812 809.265625 "/> <path d="M 87.25 809.089844 L 93.929688 809.089844 L 93.929688 820.785156 L 87.25 820.785156 Z M 87.25 809.089844 "/> <path d="M 191.59375 834.046875 L 198.273438 834.046875 L 198.273438 845.738281 L 191.59375 845.738281 Z M 191.59375 834.046875 "/> <path d="M 149.886719 833.632812 L 156.5625 833.632812 L 156.5625 845.328125 L 149.886719 845.328125 Z M 149.886719 833.632812 "/> <path d="M 108.15625 833.398438 L 114.832031 833.398438 L 114.832031 845.09375 L 108.15625 845.09375 Z M 108.15625 833.398438 "/> <path d="M 212.5 834.1875 L 219.179688 834.1875 L 219.179688 845.878906 L 212.5 845.878906 Z M 212.5 834.1875 "/> <path d="M 170.753906 857.863281 L 177.433594 857.863281 L 177.433594 869.558594 L 170.753906 869.558594 Z M 170.753906 857.863281 "/> <path d="M 128.96875 857.6875 L 135.648438 857.6875 L 135.648438 869.382812 L 128.96875 869.382812 Z M 128.96875 857.6875 "/> <path d="M 87.257812 857.273438 L 93.9375 857.273438 L 93.9375 868.96875 L 87.257812 868.96875 Z M 87.257812 857.273438 "/> <path d="M 212.378906 882.589844 L 219.054688 882.589844 L 219.054688 894.28125 L 212.378906 894.28125 Z M 212.378906 882.589844 "/> <path d="M 191.582031 882.386719 L 198.261719 882.386719 L 198.261719 894.082031 L 191.582031 894.082031 Z M 191.582031 882.386719 "/> <path d="M 128.96875 881.976562 L 135.648438 881.976562 L 135.648438 893.671875 L 128.96875 893.671875 Z M 128.96875 881.976562 "/> <path d="M 108.140625 881.742188 L 114.820312 881.742188 L 114.820312 893.433594 L 108.140625 893.433594 Z M 108.140625 881.742188 "/> <path d="M 87.257812 881.5625 L 93.9375 881.5625 L 93.9375 893.257812 L 87.257812 893.257812 Z M 87.257812 881.5625 "/> <path d="M 170.777344 906.28125 L 177.453125 906.28125 L 177.453125 917.976562 L 170.777344 917.976562 Z M 170.777344 906.28125 "/> <path d="M 149.894531 906.105469 L 156.570312 906.105469 L 156.570312 917.800781 L 149.894531 917.800781 Z M 149.894531 906.105469 "/> <path d="M 128.988281 906.105469 L 135.667969 906.105469 L 135.667969 917.800781 L 128.988281 917.800781 Z M 128.988281 906.105469 "/> <path d="M 108.164062 905.871094 L 114.839844 905.871094 L 114.839844 917.566406 L 108.164062 917.566406 Z M 108.164062 905.871094 "/> <path d="M 212.507812 906.660156 L 219.1875 906.660156 L 219.1875 918.351562 L 212.507812 918.351562 Z M 212.507812 906.660156 "/> <path d="M 212.351562 930.894531 L 219.03125 930.894531 L 219.03125 942.589844 L 212.351562 942.589844 Z M 212.351562 930.894531 "/> <path d="M 191.574219 930.535156 L 198.253906 930.535156 L 198.253906 942.230469 L 191.574219 942.230469 Z M 191.574219 930.535156 "/> <path d="M 170.75 930.300781 L 177.425781 930.300781 L 177.425781 941.996094 L 170.75 941.996094 Z M 170.75 930.300781 "/> <path d="M 128.960938 930.125 L 135.640625 930.125 L 135.640625 941.820312 L 128.960938 941.820312 Z M 128.960938 930.125 "/>'; } }
pragma solidity ^0.8.6; pragma abicoder v2; import "../DetailsHelper.sol"; library BuildingDetailsTwelveSPart { function item_12() public pure returns (string memory) { return '<path d="M 108.136719 929.890625 L 114.8125 929.890625 L 114.8125 941.585938 L 108.136719 941.585938 Z M 108.136719 929.890625 "/> <path d="M 212.371094 955.027344 L 219.050781 955.027344 L 219.050781 966.71875 L 212.371094 966.71875 Z M 212.371094 955.027344 "/> <path d="M 191.574219 954.824219 L 198.253906 954.824219 L 198.253906 966.519531 L 191.574219 966.519531 Z M 191.574219 954.824219 "/> <path d="M 170.75 954.589844 L 177.425781 954.589844 L 177.425781 966.285156 L 170.75 966.285156 Z M 170.75 954.589844 "/> <path d="M 149.863281 954.414062 L 156.542969 954.414062 L 156.542969 966.109375 L 149.863281 966.109375 Z M 149.863281 954.414062 "/> <path d="M 128.960938 954.414062 L 135.640625 954.414062 L 135.640625 966.109375 L 128.960938 966.109375 Z M 128.960938 954.414062 "/> <path d="M 87.253906 954.003906 L 93.929688 954.003906 L 93.929688 965.695312 L 87.253906 965.695312 Z M 87.253906 954.003906 "/> <path d="M 191.597656 978.957031 L 198.273438 978.957031 L 198.273438 990.652344 L 191.597656 990.652344 Z M 191.597656 978.957031 "/> <path d="M 149.886719 978.546875 L 156.5625 978.546875 L 156.5625 990.238281 L 149.886719 990.238281 Z M 149.886719 978.546875 "/> <path d="M 128.984375 978.546875 L 135.660156 978.546875 L 135.660156 990.238281 L 128.984375 990.238281 Z M 128.984375 978.546875 "/> <path d="M 108.15625 978.308594 L 114.835938 978.308594 L 114.835938 990.003906 L 108.15625 990.003906 Z M 108.15625 978.308594 "/> <path d="M 87.273438 978.132812 L 93.949219 978.132812 L 93.949219 989.828125 L 87.273438 989.828125 Z M 87.273438 978.132812 "/> <path d="M 212.359375 1003.367188 L 219.039062 1003.367188 L 219.039062 1015.0625 L 212.359375 1015.0625 Z M 212.359375 1003.367188 "/> <path d="M 170.757812 1002.773438 L 177.433594 1002.773438 L 177.433594 1014.46875 L 170.757812 1014.46875 Z M 170.757812 1002.773438 "/> <path d="M 149.875 1002.597656 L 156.550781 1002.597656 L 156.550781 1014.292969 L 149.875 1014.292969 Z M 149.875 1002.597656 "/> <path d="M 108.144531 1002.363281 L 114.820312 1002.363281 L 114.820312 1014.058594 L 108.144531 1014.058594 Z M 108.144531 1002.363281 "/> <path d="M 87.261719 1002.1875 L 93.9375 1002.1875 L 93.9375 1013.882812 L 87.261719 1013.882812 Z M 87.261719 1002.1875 "/> <path d="M 212.488281 1003.152344 L 219.167969 1003.152344 L 219.167969 1014.84375 L 212.488281 1014.84375 Z M 212.488281 1003.152344 "/> <path d="M 212.378906 1027.5 L 219.058594 1027.5 L 219.058594 1039.195312 L 212.378906 1039.195312 Z M 212.378906 1027.5 "/> <path d="M 191.585938 1027.300781 L 198.261719 1027.300781 L 198.261719 1038.992188 L 191.585938 1038.992188 Z M 191.585938 1027.300781 "/> <path d="M 149.875 1026.886719 L 156.550781 1026.886719 L 156.550781 1038.582031 L 149.875 1038.582031 Z M 149.875 1026.886719 "/> <path d="M 191.605469 1051.429688 L 198.28125 1051.429688 L 198.28125 1063.125 L 191.605469 1063.125 Z M 191.605469 1051.429688 "/> <path d="M 149.894531 1051.019531 L 156.574219 1051.019531 L 156.574219 1062.714844 L 149.894531 1062.714844 Z M 149.894531 1051.019531 "/> <path d="M 108.164062 1050.785156 L 114.84375 1050.785156 L 114.84375 1062.476562 L 108.164062 1062.476562 Z M 108.164062 1050.785156 "/> <path d="M 87.28125 1050.605469 L 93.960938 1050.605469 L 93.960938 1062.300781 L 87.28125 1062.300781 Z M 87.28125 1050.605469 "/> <path d="M 191.414062 1051.445312 L 198.089844 1051.445312 L 198.089844 1063.140625 L 191.414062 1063.140625 Z M 191.414062 1051.445312 "/> <path d="M 149.703125 1051.035156 L 156.382812 1051.035156 L 156.382812 1062.730469 L 149.703125 1062.730469 Z M 149.703125 1051.035156 "/> <path d="M 107.972656 1050.800781 L 114.652344 1050.800781 L 114.652344 1062.492188 L 107.972656 1062.492188 Z M 107.972656 1050.800781 "/> <path d="M 87.089844 1050.621094 L 93.765625 1050.621094 L 93.765625 1062.316406 L 87.089844 1062.316406 Z M 87.089844 1050.621094 "/> <path d="M 191.433594 1075.578125 L 198.113281 1075.578125 L 198.113281 1087.273438 L 191.433594 1087.273438 Z M 191.433594 1075.578125 "/> <path d="M 149.722656 1075.164062 L 156.402344 1075.164062 L 156.402344 1086.859375 L 149.722656 1086.859375 Z M 149.722656 1075.164062 "/> <path d="M 107.992188 1074.929688 L 114.671875 1074.929688 L 114.671875 1086.625 L 107.992188 1086.625 Z M 107.992188 1074.929688 "/> <path d="M 191.433594 1099.867188 L 198.113281 1099.867188 L 198.113281 1111.5625 L 191.433594 1111.5625 Z M 191.433594 1099.867188 "/> <path d="M 170.605469 1099.632812 L 177.285156 1099.632812 L 177.285156 1111.324219 L 170.605469 1111.324219 Z M 170.605469 1099.632812 "/> <path d="M 149.722656 1099.453125 L 156.402344 1099.453125 L 156.402344 1111.148438 L 149.722656 1111.148438 Z M 149.722656 1099.453125 "/> <path d="M 128.820312 1099.453125 L 135.5 1099.453125 L 135.5 1111.148438 L 128.820312 1111.148438 Z M 128.820312 1099.453125 "/> <path d="M 87.109375 1099.042969 L 93.789062 1099.042969 L 93.789062 1110.738281 L 87.109375 1110.738281 Z M 87.109375 1099.042969 "/> <path d="M 191.457031 1123.996094 L 198.132812 1123.996094 L 198.132812 1135.691406 L 191.457031 1135.691406 Z M 191.457031 1123.996094 "/> <path d="M 149.746094 1123.585938 L 156.421875 1123.585938 L 156.421875 1135.28125 L 149.746094 1135.28125 Z M 149.746094 1123.585938 "/> <path d="M 128.84375 1123.585938 L 135.519531 1123.585938 L 135.519531 1135.28125 L 128.84375 1135.28125 Z M 128.84375 1123.585938 "/> <path d="M 108.015625 1123.351562 L 114.691406 1123.351562 L 114.691406 1135.046875 L 108.015625 1135.046875 Z M 108.015625 1123.351562 "/> <path d="M 87.132812 1123.175781 L 93.808594 1123.175781 L 93.808594 1134.867188 L 87.132812 1134.867188 Z M 87.132812 1123.175781 "/> <path d="M 212.359375 1124.136719 L 219.039062 1124.136719 L 219.039062 1135.832031 L 212.359375 1135.832031 Z M 212.359375 1124.136719 "/> <path d="M 212.21875 1148.410156 L 218.898438 1148.410156 L 218.898438 1160.105469 L 212.21875 1160.105469 Z M 212.21875 1148.410156 "/> <path d="M 170.617188 1147.816406 L 177.292969 1147.816406 L 177.292969 1159.511719 L 170.617188 1159.511719 Z M 170.617188 1147.816406 "/> <path d="M 149.734375 1147.640625 L 156.410156 1147.640625 L 156.410156 1159.332031 L 149.734375 1159.332031 Z M 149.734375 1147.640625 "/> <path d="M 128.828125 1147.640625 L 135.507812 1147.640625 L 135.507812 1159.332031 L 128.828125 1159.332031 Z M 128.828125 1147.640625 "/> <path d="M 212.347656 1148.191406 L 219.027344 1148.191406 L 219.027344 1159.886719 L 212.347656 1159.886719 Z M 212.347656 1148.191406 "/> <path d="M 149.519531 205.75 L 156.199219 205.75 L 156.199219 217.441406 L 149.519531 217.441406 Z M 149.519531 205.75 "/> <path d="M 149.542969 254.167969 L 156.222656 254.167969 L 156.222656 265.863281 L 149.542969 265.863281 Z M 149.542969 254.167969 "/> <path d="M 128.660156 253.992188 L 135.335938 253.992188 L 135.335938 265.6875 L 128.660156 265.6875 Z M 128.660156 253.992188 "/> <path d="M 149.5625 278.300781 L 156.242188 278.300781 L 156.242188 289.992188 L 149.5625 289.992188 Z M 149.5625 278.300781 "/> <path d="M 149.550781 302.355469 L 156.230469 302.355469 L 156.230469 314.046875 L 149.550781 314.046875 Z M 149.550781 302.355469 "/> <path d="M 128.667969 302.175781 L 135.347656 302.175781 L 135.347656 313.871094 L 128.667969 313.871094 Z M 128.667969 302.175781 "/> <path d="M 128.667969 326.464844 L 135.347656 326.464844 L 135.347656 338.160156 L 128.667969 338.160156 Z M 128.667969 326.464844 "/> <path d="M 170.398438 351.007812 L 177.078125 351.007812 L 177.078125 362.703125 L 170.398438 362.703125 Z M 170.398438 351.007812 "/> <path d="M 149.574219 350.773438 L 156.25 350.773438 L 156.25 362.46875 L 149.574219 362.46875 Z M 149.574219 350.773438 "/> <path d="M 149.546875 374.792969 L 156.222656 374.792969 L 156.222656 386.484375 L 149.546875 386.484375 Z M 149.546875 374.792969 "/> <path d="M 128.660156 374.617188 L 135.339844 374.617188 L 135.339844 386.308594 L 128.660156 386.308594 Z M 128.660156 374.617188 "/> <path d="M 170.371094 399.316406 L 177.050781 399.316406 L 177.050781 411.011719 L 170.371094 411.011719 Z M 170.371094 399.316406 "/> <path d="M 128.660156 398.90625 L 135.339844 398.90625 L 135.339844 410.597656 L 128.660156 410.597656 Z M 128.660156 398.90625 "/> <path d="M 170.394531 423.449219 L 177.070312 423.449219 L 177.070312 435.140625 L 170.394531 435.140625 Z M 170.394531 423.449219 "/> <path d="M 128.683594 423.035156 L 135.359375 423.035156 L 135.359375 434.730469 L 128.683594 434.730469 Z M 128.683594 423.035156 "/> <path d="M 170.378906 447.5 L 177.058594 447.5 L 177.058594 459.195312 L 170.378906 459.195312 Z M 170.378906 447.5 "/> <path d="M 149.554688 447.265625 L 156.230469 447.265625 L 156.230469 458.960938 L 149.554688 458.960938 Z M 149.554688 447.265625 "/> <path d="M 170.402344 495.921875 L 177.078125 495.921875 L 177.078125 507.617188 L 170.402344 507.617188 "/> <path d="M 149.578125 181.496094 L 156.253906 181.496094 L 156.253906 193.191406 L 149.578125 193.191406 Z M 149.578125 181.496094 "/> <path d="M 149.578125 205.785156 L 156.253906 205.785156 L 156.253906 217.480469 L 149.578125 217.480469 Z M 149.578125 205.785156 "/>'; } }
pragma solidity ^0.8.6; pragma abicoder v2; import "base64-sol/base64.sol"; library MoonDetails { function item_1() public pure returns (string memory) { return string(abi.encodePacked('<circle display="inline" fill="#FFFC8F" cx="589.5" cy="868.5" r="229.5"/>')); } function item_2() public pure returns (string memory) { return string(abi.encodePacked('<circle display="inline" fill="#EA5C5C" cx="589.5" cy="868.5" r="229.5"/>')); } function item_3() public pure returns (string memory) { return string( abi.encodePacked( '<path fill="#B8B8B8" d="M818.97,864.79c-13.89,86.14-247.01,75.88-424.39-20.53c16.18-43.21,44.15-81.93,79.98-110.95 c44.98-36.77,102.51-57.64,160.6-58.28c36.89-0.57,72.77,6.72,104.88,20.25C788.18,736.55,818.43,800.15,818.97,864.79z"/> <path fill="#B8B8B8" d="M819,868.5c4.23,244.79-347.37,315.71-439.88,91.85c-3.5-37.68,1.21-76.37,13.98-112.04 c177.95,100.44,411.2,100.78,425.42,27.15c-0.46-0.18-0.9-0.39-1.33-0.64c1.04-3.17,1.64-6.48,1.78-9.96 C818.99,866.07,819,867.28,819,868.5z"/> <path fill="#969696" stroke="#808080" stroke-width="3" stroke-miterlimit="10" d="M720,787.5c0,0.91-0.02,1.81-0.07,2.71 C718.52,821.26,692.9,846,661.5,846c-15.69,0-29.92-6.17-40.43-16.21C609.94,819.14,603,804.13,603,787.5 c0-32.31,26.19-58.5,58.5-58.5S720,755.19,720,787.5z"/> <path fill="#828282" d="M719.93,790.21C718.52,821.26,692.9,846,661.5,846c-15.69,0-29.92-6.17-40.43-16.21 C622.48,798.74,648.1,774,679.5,774C695.19,774,709.42,780.17,719.93,790.21z"/> <path fill="#808080" d="M400.3,830.28c-0.13,0.28-0.25,0.57-0.37,0.85c-0.2,0.44-0.4,0.89-0.59,1.34c0.19-0.45,0.39-0.9,0.58-1.34 C400.05,830.85,400.17,830.56,400.3,830.28z"/> <path fill="#808080" d="M818.99,864c0,0.27-0.01,0.53-0.02,0.79c0-0.27-0.01-0.53-0.02-0.79c-0.02-1.55-0.07-3.09-0.13-4.63 C818.97,860.95,819.03,862.48,818.99,864z"/> <path fill="#8C8C8C" d="M393.1,848.31c-12.78,35.67-17.49,74.36-13.98,112.05c-17.41-39.05-23.5-86.8-15.92-130.25 C372.96,836.51,382.94,842.58,393.1,848.31z"/> <path fill="#8C8C8C" d="M818.52,875.46c-14.22,73.63-247.47,73.29-425.42-27.15c-7.5-4.23-14.9-8.64-22.18-13.24 c-2.59-1.63-5.17-3.28-7.72-4.96c0.1-0.61,0.2-1.22,0.31-1.83c0.15-0.84,0.31-1.69,0.47-2.53c1.5,0.99,3,1.96,4.52,2.92 c1.43,0.92,2.86,1.82,4.3,2.71c7.15,4.47,14.42,8.76,21.78,12.88c174.14,97.48,400.2,99.55,422.61,30.56 C817.62,875.07,818.06,875.28,818.52,875.46z"/> <path fill="#8C8C8C" d="M740.04,695.28c-85.34-37.09-193.4-22.23-265.48,38.03c-35.83,29.02-63.81,67.74-79.98,110.95 c-10.4-5.83-32.82-6.79-30.6-18.51C396,657,615.68,578.37,740.04,695.28z"/> <path fill="#808080" d="M819,868.5c0,1.35-0.01,2.71-0.03,4.05c-0.01,0.02-0.01,0.03-0.01,0.05v0.04 c-0.01,0.99-0.04,1.97-0.06,2.95c-0.13-0.04-0.26-0.08-0.38-0.13c-0.46-0.18-0.9-0.39-1.33-0.64c1.04-3.17,1.64-6.48,1.78-9.96 C818.99,866.07,819,867.28,819,868.5z"/> <path fill="#808080" d="M818.99,864c0,0.27-0.01,0.53-0.02,0.79c0-0.27-0.01-0.53-0.02-0.79c-0.02-1.55-0.07-3.09-0.13-4.63 C818.97,860.95,819.03,862.48,818.99,864z"/>' ) ); } function item_4() public pure returns (string memory) { return string( abi.encodePacked( '<g display="inline"> <path fill="#5F838F" d="M777.09,736.26C736.32,708.94,687.27,693,634.5,693c-67.78,0-129.43,26.29-175.28,69.24 c-7.53,7.04-14.63,14.54-21.26,22.45c-20.18,24.03-36.03,51.82-46.35,82.16c-10.96-5.62-21.28-11.18-30.89-16.61 c2.18-27.7,9.27-54.01,20.41-78.06c4.32-9.34,9.26-18.34,14.75-26.94C436.62,681.36,508.11,639,589.5,639 C667.01,639,735.54,677.42,777.09,736.26z"/> <path fill="#6A8F93" d="M750.49,1032.06c-41.42,40.78-98.26,65.94-160.99,65.94c-94.97,0-176.46-57.68-211.35-139.92 c-8.5-20.01-14.23-41.46-16.72-63.9c6.73,3.28,13.6,6.56,20.59,9.84c45,21.09,95.16,42.08,148.62,61.8 C610.02,995.1,685.67,1017.55,750.49,1032.06z"/> <path fill="#ABEAFF" d="M819,868.5c0,12.9-1.06,25.54-3.11,37.86c-1.53,9.2-3.6,18.23-6.2,27.03 c-7.18,24.42-18.31,47.14-32.66,67.43c-57.6-9.76-136.43-31.67-221.3-62.98c-62.2-22.95-118.66-47.63-164.12-70.99 c10.32-30.34,26.17-58.13,46.35-82.16c6.63-7.91,13.73-15.41,21.26-22.45C505.07,719.29,566.72,693,634.5,693 c52.77,0,101.82,15.94,142.59,43.26C803.49,773.63,819,819.25,819,868.5z"/> <path fill="#ABEAFF" d="M750.49,1032.06c-41.42,40.78-98.26,65.94-160.99,65.94c-94.97,0-176.46-57.68-211.35-139.92 c-0.1-2.85-0.15-5.71-0.15-8.58c0-15.52,1.38-30.72,4.02-45.48c45,21.09,95.16,42.08,148.62,61.8 C610.02,995.1,685.67,1017.55,750.49,1032.06z"/> <path fill="#67747A" d="M952.87,1030.46c-10.37,28.08-90.13,26.73-202.38,1.6c-64.82-14.51-140.47-36.96-219.85-66.24 c-53.46-19.72-103.62-40.71-148.62-61.8c-6.99-3.28-13.86-6.56-20.59-9.84c-57.01-27.74-104.57-55.35-138.45-80.21 c-18.9-13.86-33.54-26.87-43.17-38.56h-0.01c-11.18-13.56-15.63-25.35-12.2-34.65c11.14-30.2,102.53-26.37,228.28,4.48 c-5.49,8.6-10.43,17.6-14.75,26.94c-57.71-10.56-96.15-9.84-101.5,4.65c-5.56,15.08,25.81,42.09,80.45,73.05 c0.21,0.12,0.43,0.24,0.64,0.36c9.61,5.43,19.93,10.99,30.89,16.61c8.69,4.46,17.78,8.98,27.23,13.51 c40.02,19.22,86.58,38.92,136.89,57.48c84.87,31.31,163.7,53.22,221.3,62.98c53.09,9.01,88.13,7.69,93.22-6.1 c4.85-13.15-18.35-35.35-60.56-61.33c2.6-8.8,4.67-17.83,6.2-27.03C908.04,956.93,962.68,1003.86,952.87,1030.46z"/> <path fill="#3C4447" d="M279.63,776.83c-5.56,15.08,25.81,42.09,80.45,73.05l-137.1-35.91c-18.9-13.86-33.54-26.87-43.17-38.56 h-0.01c-11.18-13.56-15.63-25.35-12.2-34.65c11.14-30.2,102.53-26.37,228.28,4.48c-5.49,8.6-10.43,17.6-14.75,26.94 C323.42,761.62,284.98,762.34,279.63,776.83z"/> </g>' ) ); } function item_5() public pure returns (string memory) { return string( abi.encodePacked( '<path fill="#FFF7CC" d="M793.17,974.38C754.9,1047.84,678.06,1098,589.5,1098C462.75,1098,360,995.25,360,868.5 S462.75,639,589.5,639c22.16,0,43.58,3.14,63.85,9.01c-0.28-0.01-0.57-0.01-0.85-0.01C545.63,648,459,734.63,459,841.5 S545.63,1035,652.5,1035C707.92,1035,757.89,1011.71,793.17,974.38z"/>' ) ); } function item_6() public pure returns (string memory) { return string( abi.encodePacked( '<radialGradient id="SVGID_00000181052548303592258150000010601812497592352640_" cx="589.5" cy="868.5" r="283.5" gradientUnits="userSpaceOnUse"> <stop offset="0.8058" style="stop-color:#FFFFFF"/> <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/> </radialGradient> <circle display="inline" fill="url(#SVGID_00000181052548303592258150000010601812497592352640_)" cx="589.5" cy="868.5" r="283.5"/> <circle display="inline" cx="589.5" cy="868.5" r="229.5"/>' ) ); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "base64-sol/base64.sol"; library SkyDetails { function item_1() public pure returns (string memory) { return base( string( abi.encodePacked( '<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="1200" y1="1400" x2="1200" y2="-9.094947e-13"> <stop offset="0" style="stop-color:#D48100"/> <stop offset="0.0293" style="stop-color:#BB740D"/> <stop offset="0.0799" style="stop-color:#976020"/> <stop offset="0.1368" style="stop-color:#774F31"/> <stop offset="0.1997" style="stop-color:#5B403F"/> <stop offset="0.2708" style="stop-color:#45344A"/> <stop offset="0.3538" style="stop-color:#342B53"/> <stop offset="0.4564" style="stop-color:#292559"/> <stop offset="0.6004" style="stop-color:#22215D"/> <stop offset="1" style="stop-color:#20205E"/> </linearGradient> <rect fill="url(#SVGID_1_)" width="2400" height="1400"/> <path fill="#FFFFFF" d="M1307,670.94c0,0-5.99,0.5-9.39,1.41c-0.78,0.21-1.84,0.53-2.82,1.41c-1.09,0.98-1.54,2.18-1.88,3.29 c-0.87,2.85-1.44,8.95-1.44,8.95c-0.13-2.04-0.47-5.99-1.38-9.39c-0.21-0.78-0.53-1.84-1.41-2.82c-0.98-1.09-2.18-1.54-3.29-1.88 c-2.85-0.87-9.39-1.44-9.39-1.44c2.04-0.13,5.99-0.47,9.39-1.38c0.78-0.21,1.84-0.52,2.82-1.41c1.09-0.98,1.54-2.18,1.88-3.29 c0.87-2.85,1.41-9.39,1.41-9.39s0.5,6.46,1.41,9.86c0.21,0.78,0.53,1.84,1.41,2.82c0.98,1.09,2.18,1.54,3.29,1.88 C1300.46,670.43,1307,670.94,1307,670.94z"/> <path fill="#FFFFFF" d="M797,293.14c0,0-8.69,0.73-13.64,2.05c-1.13,0.3-2.67,0.76-4.09,2.05c-1.59,1.43-2.24,3.17-2.73,4.77 c-1.26,4.14-2.09,13-2.09,13c-0.19-2.97-0.69-8.69-2-13.64c-0.3-1.13-0.76-2.67-2.05-4.09c-1.43-1.59-3.17-2.24-4.77-2.73 c-4.14-1.26-13.64-2.09-13.64-2.09c2.97-0.19,8.69-0.69,13.64-2c1.13-0.3,2.67-0.76,4.09-2.05c1.59-1.43,2.24-3.17,2.73-4.77 c1.26-4.14,2.05-13.64,2.05-13.64s0.73,9.38,2.05,14.32c0.3,1.13,0.76,2.67,2.05,4.09c1.43,1.59,3.17,2.24,4.77,2.73 C787.5,292.4,797,293.14,797,293.14z"/> <path fill="#FFFFFF" d="M2034,173.94c0,0-5.99,0.5-9.39,1.41c-0.78,0.21-1.84,0.53-2.82,1.41c-1.09,0.98-1.54,2.18-1.88,3.29 c-0.87,2.85-1.44,8.95-1.44,8.95c-0.13-2.04-0.47-5.99-1.38-9.39c-0.21-0.78-0.53-1.84-1.41-2.82c-0.98-1.09-2.18-1.54-3.29-1.88 c-2.85-0.87-9.39-1.44-9.39-1.44c2.04-0.13,5.99-0.47,9.39-1.38c0.78-0.21,1.84-0.53,2.82-1.41c1.09-0.98,1.54-2.18,1.88-3.29 c0.87-2.85,1.41-9.39,1.41-9.39s0.5,6.46,1.41,9.86c0.21,0.78,0.53,1.84,1.41,2.82c0.98,1.09,2.18,1.54,3.29,1.88 C2027.46,173.43,2034,173.94,2034,173.94z"/> <path fill="#FFFFFF" d="M2153,958.17c0,0-9.08,0.76-14.24,2.14c-1.18,0.31-2.79,0.8-4.27,2.14c-1.66,1.49-2.34,3.31-2.85,4.98 c-1.32,4.32-2.18,13.57-2.18,13.57c-0.2-3.1-0.72-9.08-2.09-14.24c-0.31-1.18-0.8-2.79-2.14-4.27c-1.49-1.66-3.31-2.34-4.98-2.85 c-4.32-1.32-14.24-2.18-14.24-2.18c3.1-0.2,9.08-0.72,14.24-2.09c1.18-0.31,2.79-0.8,4.27-2.14c1.66-1.49,2.34-3.31,2.85-4.98 c1.32-4.32,2.14-14.24,2.14-14.24s0.76,9.79,2.14,14.95c0.31,1.18,0.8,2.79,2.14,4.27c1.49,1.66,3.31,2.34,4.98,2.85 C2143.08,957.39,2153,958.17,2153,958.17z"/>' ) ) ); } function item_2() public pure returns (string memory) { return base( string( abi.encodePacked( '<linearGradient id="SVGID_00000024718741016041171440000004507879553339700395_" gradientUnits="userSpaceOnUse" x1="1200" y1="1400" x2="1200" y2="-9.094947e-13"> <stop offset="0" style="stop-color:#FF4712"/> <stop offset="0.059" style="stop-color:#D8401F"/> <stop offset="0.1343" style="stop-color:#AD392E"/> <stop offset="0.2157" style="stop-color:#87323B"/> <stop offset="0.3023" style="stop-color:#672C46"/> <stop offset="0.3956" style="stop-color:#4D284F"/> <stop offset="0.498" style="stop-color:#392456"/> <stop offset="0.6144" style="stop-color:#2B225A"/> <stop offset="0.7568" style="stop-color:#22205D"/> <stop offset="1" style="stop-color:#20205E"/> </linearGradient> <rect display="inline" fill="url(#SVGID_00000024718741016041171440000004507879553339700395_)" width="2400" height="1400"/> <path display="inline" fill="#4F4F4F" d="M1599.49,321.74c-3.87,3.3-22.49,19.1-31.14,12.12c-4.53-3.66-3.8-11.53-5.01-18.92 c-0.69-4.25-2.02-8.34-5.37-11.37c-6.02-5.46-11.3-0.9-15.57-6.05c-7.56-9.14-1.82-36.62,10.38-42.4c5.33-2.52,6.79,1.49,15.57,0 c12.96-2.2,15.09-11.85,25.95-12.11c0.61-0.02,1.2,0,1.78,0.03c6.16,0.45,10.87,3.89,13.79,6.02c1.5,1.09,13.11,9.83,15.57,24.23 C1629.39,296.36,1606.72,315.61,1599.49,321.74z"/> <linearGradient id="SVGID_00000066491601182367025960000010964496249827179920_" gradientUnits="userSpaceOnUse" x1="1317.4856" y1="128.874" x2="1582.4454" y2="281.8486"> <stop offset="0" style="stop-color:#6B6B6B"/> <stop offset="0.1772" style="stop-color:#6D6969"/> <stop offset="0.2817" style="stop-color:#766464"/> <stop offset="0.3674" style="stop-color:#845A5A"/> <stop offset="0.4429" style="stop-color:#984C4C"/> <stop offset="0.5117" style="stop-color:#B23A3A"/> <stop offset="0.5756" style="stop-color:#D22424"/> <stop offset="0.6346" style="stop-color:#F70A0A"/> <stop offset="0.6453" style="stop-color:#FF0505"/> <stop offset="0.6592" style="stop-color:#FE1105"/> <stop offset="0.7161" style="stop-color:#FB3D03"/> <stop offset="0.7735" style="stop-color:#F96202"/> <stop offset="0.8306" style="stop-color:#F77E01"/> <stop offset="0.8876" style="stop-color:#F69301"/> <stop offset="0.9441" style="stop-color:#F59F00"/> <stop offset="1" style="stop-color:#F5A300"/> </linearGradient> <path display="inline" fill="url(#SVGID_00000066491601182367025960000010964496249827179920_)" d="M1596.08,243.04 c-0.58-0.03-1.17-0.05-1.78-0.03c-10.86,0.26-12.99,9.91-25.95,12.11c-8.78,1.49-10.24-2.52-15.57,0 c-12.2,5.78-17.94,33.26-10.38,42.4c4.27,5.15,9.55,0.59,15.57,6.05c3.35,3.03,4.68,7.12,5.37,11.37 c-15.2-0.7-24.34-8.94-24.34-8.94c-3.42-3.09-4.16-5.25-9-9c-7.44-5.76-10.81-4.63-18-9c-10.54-6.41-7.71-11.55-18-18 c-9.39-5.89-14.91-3.59-18-9c-3.82-6.69,3.28-12.58,0-18c-5.69-9.4-32.63-0.83-36-9c-1.11-2.68,1.39-4.6,0-9 c-1.34-4.25-4.94-6.47-9-9c-18.96-11.8-23.25-14.85-27-18c-3.21-2.7-6.01-5.07-9-9c-6.85-8.98-4.85-13.13-9-18 c-8.2-9.61-21.16,0.5-36-9c-8.58-5.49-6.64-10.39-18-18c-10.16-6.81-18.24-7.27-18-9c0.36-2.55,18.23-3.79,36,0 c12.48,2.66,23.81,7.58,27,9c9.03,4.03,15.84,8.2,27,9c5.79,0.41,4.98-0.64,9,0c10.5,1.66,18.16,9.15,27,18 c7.16,7.17,6.2,7.77,9,9c9.92,4.36,18.31-4.81,27,0c5.13,2.84,3.63,6.82,9,9c6.68,2.71,11.17-2.59,18,0c4.58,1.73,4.19,4.73,9,9 c8.92,7.91,15.78,2.49,27,9c8.85,5.14,6.86,9.83,18,18c5.38,3.95,9.14,5.27,18,9C1583.65,237.65,1590.63,240.59,1596.08,243.04z" /> <path display="inline" fill="#4F4F4F" d="M900.47,662.68c-3.08,1-14.92,11.48-20.66,7.28c-2.19-1.6-2.53-4.54-2.86-7.74 c-0.13-1.19-0.25-2.42-0.47-3.63c-0.46-2.55-3.62-3.96-3.56-6.83C873,648,875.83,651.1,873,648c-5.02-5.49,0-9,0-9s4.25-4.46,9-9 c6.08-5.81,7.71-13.91,14.32-14.59c0.23-0.03,0.47-0.04,0.71-0.05c0.4-0.01,0.8,0,1.18,0.02c4.09,0.27,7.21,2.34,9.15,3.62 c1,0.65,9.63,2.02,10.34,14.56C918,639,918,657,900.47,662.68z"/> <linearGradient id="SVGID_00000136387035474477831400000013426835187356488123_" gradientUnits="userSpaceOnUse" x1="719.7072" y1="570.3789" x2="883.9691" y2="637.4237"> <stop offset="0.0984" style="stop-color:#6B6B6B"/> <stop offset="0.1848" style="stop-color:#706868"/> <stop offset="0.2811" style="stop-color:#7D5F5F"/> <stop offset="0.3823" style="stop-color:#934F4F"/> <stop offset="0.4867" style="stop-color:#B33A3A"/> <stop offset="0.5927" style="stop-color:#DA1E1E"/> <stop offset="0.6761" style="stop-color:#FF0505"/> <stop offset="0.7043" style="stop-color:#FE1A04"/> <stop offset="0.7752" style="stop-color:#FB4B03"/> <stop offset="0.8425" style="stop-color:#F87102"/> <stop offset="0.9043" style="stop-color:#F68D01"/> <stop offset="0.9588" style="stop-color:#F59D00"/> <stop offset="1" style="stop-color:#F5A300"/> </linearGradient> <path display="inline" fill="url(#SVGID_00000136387035474477831400000013426835187356488123_)" d="M896.32,615.41 c-6.61,0.68-8.24,8.78-14.32,14.59c-4.75,4.54-9,9-9,9s-5.02,3.51,0,9c2.83,3.1-4-3.28,0,0c2.22,1.82,3.02,8.04,3.48,10.59 c0.22,1.21,0.34,2.44,0.47,3.63c-2.01-1.29-4.23-2.73-6.67-4.32c-5.27-3.43-7.38-4.98-11.41-6.46c-8.32-3.08-9.82-0.35-15.78-3.28 c-7.55-3.71-7.6-9.3-14.93-11.28c-3.95-1.07-5.26,0.2-7.89-1.64c-3.93-2.75-3.11-7.03-7.04-9.65c-3.16-2.11-4.5,0.11-7.89-1.64 c-5.73-2.95-4.56-10.7-10.56-14.47c-1.69-1.07-1.61-0.34-7.89-1.64c-7.76-1.61-14.39-3.06-19.3-8.1 c-1.89-1.93-1.06-1.87-3.52-4.83c-4.76-5.7-9.45-7.87-14.93-11.28c-1.94-1.21-13.96-1.88-20.14-7.63c-8.79-8.19-37.09-16.91-36-18 c0.75-0.74,31.25-1.54,38.53,1.5c8.14,3.39,9.76,0.62,15.78,3.27C757.73,567.36,757.12,575,765,576c3.98,0.5,5.99,0.84,13.03,1.34 c3.07,0.21,5.32,0.87,7.89,1.63c2.99,0.9,6.08-2.97,15.08-2.97c3.09,0,9.52,13.5,12.11,12.71c2.68-0.81,2.63-2.83,4.37-3.19 c5.28-1.09,11.66,16.39,18.45,16.11c3.91-0.16,4-6.05,8.74-6.37c3.83-0.26,4.88,3.51,11.41,6.46c7.16,3.23,8.54-0.11,15.78,3.27 c4.93,2.31,5.7,4.52,11.41,6.47c2.65,0.9,4.09,0.97,5.73,1.21c0.66,0.09,1.35,0.21,2.16,0.42c0,0,0.52,0.14,1.41,0.48 C893.49,613.93,894.79,614.51,896.32,615.41z"/>' ) ) ); } function item_3() public pure returns (string memory) { return base( string( abi.encodePacked( '<linearGradient id="SVGID_00000113320258516848068960000018121497635509836725_" gradientUnits="userSpaceOnUse" x1="1200" y1="1400" x2="1200" y2="-9.094947e-13"> <stop offset="0" style="stop-color:#F59AFF"/> <stop offset="0.0339" style="stop-color:#D083DE"/> <stop offset="0.078" style="stop-color:#A76AB9"/> <stop offset="0.1277" style="stop-color:#815398"/> <stop offset="0.1817" style="stop-color:#613F7B"/> <stop offset="0.2414" style="stop-color:#452E63"/> <stop offset="0.3088" style="stop-color:#2F214F"/> <stop offset="0.3875" style="stop-color:#1E1740"/> <stop offset="0.4847" style="stop-color:#130F36"/> <stop offset="0.6212" style="stop-color:#0C0B30"/> <stop offset="1" style="stop-color:#0A0A2E"/> </linearGradient> <rect display="inline" fill="url(#SVGID_00000113320258516848068960000018121497635509836725_)" width="2400" height="1400"/> <path display="inline" fill="#FFFFFF" d="M1950.42,266.79c-0.99-0.55-1.95-1.2-2.86-1.95 C1948.52,265.49,1949.48,266.14,1950.42,266.79z"/> <path display="inline" fill="#FFFFFF" d="M720,54"/> <path display="inline" fill="#FFFFFF" d="M1957.32,253.32c0,11.19-10.04,17.64-17.21,17.94c-0.58,0.02-2.76,0.08-5.41-0.91 c-0.75-0.28-1.5-0.62-2.23-1.04c-0.86-0.58-1.65-1.3-2.6-1.76c-74.15-35.74-192.29-90.63-380.95-111.35 c5.45-0.1,211.93,0.73,396.62,80.09C1952.38,238.67,1957.32,245.4,1957.32,253.32z"/> <path display="inline" fill="#FFFFFF" d="M1107,302.14c0,0-8.69,0.73-13.64,2.05c-1.13,0.3-2.67,0.76-4.09,2.05 c-1.59,1.43-2.24,3.17-2.73,4.77c-1.26,4.14-2.09,13-2.09,13c-0.19-2.97-0.69-8.69-2-13.64c-0.3-1.13-0.76-2.67-2.05-4.09 c-1.43-1.59-3.17-2.24-4.77-2.73c-4.14-1.26-13.64-2.09-13.64-2.09c2.97-0.19,8.69-0.69,13.64-2c1.13-0.3,2.67-0.76,4.09-2.05 c1.59-1.43,2.24-3.17,2.73-4.77c1.26-4.14,2.05-13.64,2.05-13.64s0.73,9.38,2.05,14.32c0.3,1.13,0.76,2.67,2.05,4.09 c1.43,1.59,3.17,2.24,4.77,2.73C1097.5,301.4,1107,302.14,1107,302.14z"/> <path display="inline" fill="#FFFFFF" d="M1863,531.77c0,0-10.43,0.88-16.36,2.45c-1.35,0.36-3.2,0.91-4.91,2.45 c-1.9,1.72-2.69,3.8-3.27,5.73c-1.51,4.97-2.51,15.6-2.51,15.6c-0.23-3.56-0.83-10.43-2.4-16.36c-0.36-1.35-0.91-3.2-2.45-4.91 c-1.72-1.9-3.8-2.69-5.73-3.27c-4.97-1.51-16.36-2.51-16.36-2.51c3.56-0.23,10.43-0.83,16.36-2.4c1.35-0.36,3.2-0.91,4.91-2.45 c1.9-1.72,2.69-3.8,3.27-5.73c1.51-4.97,2.45-16.36,2.45-16.36s0.88,11.25,2.45,17.18c0.36,1.35,0.91,3.2,2.45,4.91 c1.72,1.9,3.8,2.69,5.73,3.27C1851.6,530.87,1863,531.77,1863,531.77z"/> <path display="inline" fill="#FFFFFF" d="M2101,947.31c0,0-4.25,0.36-6.67,1c-0.55,0.15-1.3,0.37-2,1 c-0.78,0.7-1.1,1.55-1.33,2.33c-0.62,2.02-1.02,6.35-1.02,6.35c-0.09-1.45-0.34-4.25-0.98-6.67c-0.15-0.55-0.37-1.3-1-2 c-0.7-0.78-1.55-1.1-2.33-1.33c-2.02-0.62-6.67-1.02-6.67-1.02c1.45-0.09,4.25-0.34,6.67-0.98c0.55-0.15,1.3-0.37,2-1 c0.78-0.7,1.1-1.55,1.33-2.33c0.62-2.02,1-6.67,1-6.67s0.36,4.58,1,7c0.15,0.55,0.37,1.3,1,2c0.7,0.78,1.55,1.1,2.33,1.33 C2096.36,946.95,2101,947.31,2101,947.31z"/> <path display="inline" fill="#FFFFFF" d="M319,362.31c0,0-4.25,0.36-6.67,1c-0.55,0.15-1.3,0.37-2,1c-0.78,0.7-1.1,1.55-1.33,2.33 c-0.62,2.02-1.02,6.35-1.02,6.35c-0.09-1.45-0.34-4.25-0.98-6.67c-0.15-0.55-0.37-1.3-1-2c-0.7-0.78-1.55-1.1-2.33-1.33 c-2.02-0.62-6.67-1.02-6.67-1.02c1.45-0.09,4.25-0.34,6.67-0.98c0.55-0.15,1.3-0.37,2-1c0.78-0.7,1.1-1.55,1.33-2.33 c0.62-2.02,1-6.67,1-6.67s0.36,4.58,1,7c0.15,0.55,0.37,1.3,1,2c0.7,0.78,1.55,1.1,2.33,1.33C314.36,361.95,319,362.31,319,362.31 z"/> <path display="inline" fill="#FFFFFF" d="M954,743.14c0,0-8.69,0.73-13.64,2.05c-1.13,0.3-2.67,0.76-4.09,2.05 c-1.59,1.43-2.24,3.17-2.73,4.77c-1.26,4.14-2.09,13-2.09,13c-0.19-2.97-0.69-8.69-2-13.64c-0.3-1.13-0.76-2.67-2.05-4.09 c-1.43-1.59-3.17-2.24-4.77-2.73c-4.14-1.26-13.64-2.09-13.64-2.09c2.97-0.19,8.69-0.69,13.64-2c1.13-0.3,2.67-0.76,4.09-2.05 c1.59-1.43,2.24-3.17,2.73-4.77c1.26-4.14,2.05-13.64,2.05-13.64s0.73,9.38,2.05,14.32c0.3,1.13,0.76,2.67,2.05,4.09 c1.43,1.59,3.17,2.24,4.77,2.73C944.5,742.4,954,743.14,954,743.14z"/>' ) ) ); } function item_5() public pure returns (string memory) { return base( string( abi.encodePacked( '<linearGradient id="SVGID_00000133510378263355515220000001589380067270124467_" gradientUnits="userSpaceOnUse" x1="1200" y1="1400" x2="1200" y2="-9.094947e-13"> <stop offset="0" style="stop-color:#F2F6FF"/> <stop offset="0.018" style="stop-color:#E3E9F7"/> <stop offset="0.0691" style="stop-color:#BFCAE5"/> <stop offset="0.1266" style="stop-color:#9FAFD4"/> <stop offset="0.1901" style="stop-color:#8398C6"/> <stop offset="0.262" style="stop-color:#6D85BB"/> <stop offset="0.3458" style="stop-color:#5C76B2"/> <stop offset="0.4495" style="stop-color:#516CAC"/> <stop offset="0.5949" style="stop-color:#4A67A9"/> <stop offset="0.9985" style="stop-color:#4865A8"/> </linearGradient> <rect display="inline" fill="url(#SVGID_00000133510378263355515220000001589380067270124467_)" width="2400" height="1400"/> <path display="inline" fill="#FFFFFF" d="M1458,272.94c0,0-5.99,0.5-9.39,1.41c-0.78,0.21-1.84,0.53-2.82,1.41 c-1.09,0.98-1.54,2.18-1.88,3.29c-0.87,2.85-1.44,8.95-1.44,8.95c-0.13-2.04-0.47-5.99-1.38-9.39c-0.21-0.78-0.53-1.84-1.41-2.82 c-0.98-1.09-2.18-1.54-3.29-1.88c-2.85-0.87-9.39-1.44-9.39-1.44c2.04-0.13,5.99-0.47,9.39-1.38c0.78-0.21,1.84-0.53,2.82-1.41 c1.09-0.98,1.54-2.18,1.88-3.29c0.87-2.85,1.41-9.39,1.41-9.39s0.5,6.46,1.41,9.86c0.21,0.78,0.53,1.84,1.41,2.82 c0.98,1.09,2.18,1.54,3.29,1.88C1451.46,272.43,1458,272.94,1458,272.94z"/> <path display="inline" fill="#FFFFFF" d="M297,358.57c0,0-7.73,0.65-12.12,1.82c-1,0.27-2.37,0.68-3.64,1.82 c-1.41,1.27-1.99,2.82-2.42,4.24c-1.12,3.68-1.86,11.55-1.86,11.55c-0.17-2.64-0.61-7.73-1.78-12.12c-0.27-1-0.68-2.37-1.82-3.64 c-1.27-1.41-2.82-1.99-4.24-2.42c-3.68-1.12-12.12-1.86-12.12-1.86c2.64-0.17,7.73-0.61,12.12-1.78c1-0.27,2.37-0.68,3.64-1.82 c1.41-1.27,1.99-2.82,2.42-4.24C276.3,346.44,277,338,277,338s0.65,8.33,1.82,12.73c0.27,1,0.68,2.37,1.82,3.64 c1.27,1.41,2.82,1.99,4.24,2.42C288.56,357.91,297,358.57,297,358.57z"/> <path display="inline" fill="#FFFFFF" d="M2079,891.26c0,0-3.48,0.29-5.45,0.82c-0.45,0.12-1.07,0.3-1.64,0.82 c-0.63,0.57-0.9,1.27-1.09,1.91c-0.5,1.66-0.84,5.2-0.84,5.2c-0.08-1.19-0.28-3.48-0.8-5.45c-0.12-0.45-0.3-1.07-0.82-1.64 c-0.57-0.63-1.27-0.9-1.91-1.09c-1.66-0.5-5.45-0.84-5.45-0.84c1.19-0.08,3.48-0.28,5.45-0.8c0.45-0.12,1.07-0.3,1.64-0.82 c0.63-0.57,0.9-1.27,1.09-1.91c0.5-1.66,0.82-5.45,0.82-5.45s0.29,3.75,0.82,5.73c0.12,0.45,0.3,1.07,0.82,1.64 c0.57,0.63,1.27,0.9,1.91,1.09C2075.2,890.96,2079,891.26,2079,891.26z"/>' ) ) ); } function item_6() public pure returns (string memory) { return base( string( abi.encodePacked( '<linearGradient id="SVGID_00000011033732603716368720000003251866600748883587_" gradientUnits="userSpaceOnUse" x1="1200.5664" y1="1402.3561" x2="1200.5664" y2="-9.094947e-13"> <stop offset="0" style="stop-color:#070726"/> <stop offset="0.3069" style="stop-color:#125269"/> <stop offset="1" style="stop-color:#2BF9FF"/> </linearGradient> <rect x="1.13" fill="url(#SVGID_00000011033732603716368720000003251866600748883587_)" width="2398.87" height="1402.36"/> <g> <path fill="#112135" d="M810.87,292.52c-143.66-15.55-105.24-144.53-231.37-172.92c-26.57-15.31,71.34-13.83,79.29-7.16 c9.56,3.38,11.18-7.47,19.58-7.42c12.33,3.55,57.74-21.57,40.95,5.06c-3.76,12.22-24.27,27.86-16.61,39.52 c11.76,12.14,63.45,43.42,77.1,26.93c9.62-17.17,15.64-2.26,30.75,0.27c55.99,24.11,122.94,1.14,180.45-9.84 c230.04-31.64,86.02,63.16-24.87,109.67c-13.37,5.26-13.38,5.24-19.37,18.24c-4.7,22.43-26.36,62.53-41.41,73.03 c-81.16,32.61,5.31-48.01,12.12-74.23c-52.07,16.25-100.61,46.93-155.4,50.36C708.15,330.37,796.28,306.95,810.87,292.52z"/> </g> <g> <path fill="#254873" d="M1397.78,573.06c1.36,11.24-18.46,12.37-25.45,18.64c-26.25,14.68-8.83,20.45-42.58,21.6 c14.75-0.38,3.41,27.16-5.01,30.77c47.96-1.97,3.67-44.24,115.89-24.68c-4.87,3.03-11.01,4.43-15.2,7.31 c6.27,8.89,19.41,0.06,27.56-1.03c17.44-10.55-11.14,12.81-16.33,17.31c16.77,13.61,35.15-13.14,48.38-22.57 c9.17-11.23,46.82-19.4,61.92-17.57C1596.96,583.4,1408.93,562.94,1397.78,573.06z"/> </g> <g id="Calque_16"> </g> <g> <circle opacity="0.25" fill="#FFFFFF" cx="1976.59" cy="715.59" r="18.18"/> <path fill="#F2F2F2" d="M1989.74,710.44c-0.3-0.01-0.61-0.01-0.91-0.01c-1.51,0-3.01,0.08-4.48,0.23c-1.2-2.6-2.76-4.99-4.62-7.12 c1.77-0.22,3.57-0.34,5.4-0.34c0.1,0,0.2,0,0.31,0C1987.26,705.32,1988.73,707.77,1989.74,710.44z"/> <circle opacity="0.25" fill="#FFFFFF" cx="1448.11" cy="980.59" r="7.72"/> <path fill="#F2F2F2" d="M1453.69,978.41c-0.13,0-0.26,0-0.39,0c-0.64,0-1.28,0.03-1.9,0.1c-0.51-1.1-1.17-2.12-1.96-3.02 c0.75-0.09,1.52-0.14,2.29-0.14c0.04,0,0.09,0,0.13,0C1452.64,976.23,1453.26,977.27,1453.69,978.41z"/> <circle opacity="0.25" fill="#FFFFFF" cx="1491.2" cy="748.95" r="18.18"/> <path fill="#F2F2F2" d="M1504.35,743.8c-0.3-0.01-0.61-0.01-0.91-0.01c-1.51,0-3.01,0.08-4.48,0.23c-1.2-2.6-2.76-4.99-4.62-7.12 c1.77-0.22,3.57-0.34,5.4-0.34c0.1,0,0.2,0,0.31,0C1501.87,738.69,1503.34,741.13,1504.35,743.8z"/> <circle opacity="0.25" fill="#FFFFFF" cx="898.15" cy="1081.83" r="7.08"/> <path fill="#F2F2F2" d="M903.28,1079.83c-0.12,0-0.24,0-0.35,0c-0.59,0-1.17,0.03-1.75,0.09c-0.47-1.01-1.08-1.95-1.8-2.78 c0.69-0.09,1.39-0.13,2.1-0.13c0.04,0,0.08,0,0.12,0C902.31,1077.83,902.88,1078.79,903.28,1079.83z"/> <circle opacity="0.25" fill="#FFFFFF" cx="913.62" cy="1054.55" r="11.31"/> <path fill="#F2F2F2" d="M921.8,1051.34c-0.19,0-0.38-0.01-0.57-0.01c-0.94,0-1.87,0.05-2.79,0.14c-0.75-1.62-1.72-3.11-2.88-4.43 c1.1-0.14,2.22-0.21,3.36-0.21c0.06,0,0.13,0,0.19,0C920.26,1048.16,921.17,1049.68,921.8,1051.34z"/> <circle opacity="0.25" fill="#FFFFFF" cx="312.09" cy="481.91" r="18.18"/> <path fill="#F2F2F2" d="M325.24,476.76c-0.3-0.01-0.61-0.01-0.91-0.01c-1.51,0-3.01,0.08-4.48,0.23c-1.2-2.6-2.76-4.99-4.62-7.12 c1.77-0.22,3.57-0.34,5.4-0.34c0.1,0,0.2,0,0.31,0C322.76,471.64,324.23,474.09,325.24,476.76z"/> <circle opacity="0.25" fill="#FFFFFF" cx="355.48" cy="390.39" r="12.91"/> <path fill="#F2F2F2" d="M364.83,386.74c-0.22,0-0.43-0.01-0.65-0.01c-1.08,0-2.14,0.06-3.18,0.16c-0.85-1.85-1.96-3.55-3.28-5.06 c1.26-0.16,2.54-0.24,3.84-0.24c0.07,0,0.15,0,0.22,0C363.07,383.1,364.11,384.84,364.83,386.74z"/> <circle opacity="0.25" fill="#FFFFFF" cx="275.59" cy="295.78" r="27.38"/> <path fill="#F2F2F2" d="M295.39,288.03c-0.46-0.01-0.91-0.01-1.37-0.01c-2.28,0-4.53,0.12-6.75,0.35 c-1.81-3.91-4.16-7.52-6.96-10.73c2.66-0.34,5.38-0.51,8.13-0.51c0.15,0,0.31,0,0.46,0C291.66,280.32,293.87,284.01,295.39,288.03 z"/> <circle opacity="0.25" fill="#FFFFFF" cx="2057.89" cy="799" r="9.59"/> <path fill="#F2F2F2" d="M2064.82,796.28c-0.16,0-0.32-0.01-0.48-0.01c-0.8,0-1.59,0.04-2.36,0.12c-0.63-1.37-1.46-2.63-2.44-3.76 c0.93-0.12,1.88-0.18,2.85-0.18c0.05,0,0.11,0,0.16,0C2063.51,793.58,2064.29,794.87,2064.82,796.28z"/> <circle opacity="0.25" fill="#FFFFFF" cx="2030.57" cy="889.72" r="18.18"/> <path fill="#F2F2F2" d="M2043.72,884.57c-0.3-0.01-0.61-0.01-0.91-0.01c-1.51,0-3.01,0.08-4.48,0.23c-1.2-2.6-2.76-4.99-4.62-7.12 c1.77-0.22,3.57-0.34,5.4-0.34c0.1,0,0.2,0,0.31,0C2041.24,879.45,2042.71,881.9,2043.72,884.57z"/> </g>' ) ) ); } function base(string memory children) private pure returns (string memory) { return string(abi.encodePacked('<g id="Backgrounds">', children, "</g>")); } }
pragma solidity ^0.8.6; pragma abicoder v2; import "base64-sol/base64.sol"; library SkylineDetails { function item_1() public pure returns (string memory) { return base( string( abi.encodePacked( '<g display="inline"> <path fill="#112135" d="M2400,1286.91v104.05c-0.04,0.58-0.1,1.16-0.15,1.74c-0.21,2.15-1.47,4.21-2.61,7.3H0v-104.97 c0-11.38,66.79,0.91,78.54,0.19c16.67-1.02,33.89,2.64,50.12-0.13c67.63-11.52,135.11-24.09,202.39-37.49 c43.98-8.76,87.43-20.07,131.36-29.08c8.27-1.69,18.14,0.68,26.46,3.54c36.88,12.66,82.21-0.98,106.37-32.05 c4.79-6.16,12.08-10.48,18.5-15.27c16.05-11.97,33.82-22.12,48.05-35.94c20.74-20.14,38.83-43,58.37-64.41 c10.78-11.81,20.78-10.59,29.89,2.73c9.67,14.15,14.93,34.29,40.4,27.07c3.92-1.11,12.31,10.25,17.28,16.86 c10.41,13.86,22.47,14.33,38.26,9.93c9.56-2.66,22.51-1.81,31.25,2.68c37.03,19.03,64.51,16.21,97.76-8.16 c53.5-39.2,108.34-76.58,162.53-114.85c18.25-12.9,31.99-11.72,46.04,8.07c16.28,22.95,34.61,45.02,55.11,64.19 c12.42,11.61,29.84,19.93,46.45,24.48c21.99,6.02,32.02,21.72,42.72,38.68c5.15,8.16,10.75,17.8,18.68,22.13 c39.83,21.72,81.66,39.96,120.47,63.27c29.27,17.57,56.93,14.17,85.73,4.29c30.97-10.63,62-10.26,94.27-7.99 c22.45,1.57,46.28-2.91,68.06-9.45c22.3-6.7,43.02-18.88,64.15-29.24c51.39-25.19,98.92-6.75,147,11.6 c58.03,22.14,116.54,43.03,174.88,64.35c5,1.83,10.4,4.25,15.48,3.97C2184.9,1275.2,2400,1248.38,2400,1286.91z"/> </g>' ) ) ); } function item_2() public pure returns (string memory) { return base( string( abi.encodePacked( '<g> <path fill="#112135" d="M2400,1149.25V1400H0v-176.77h9.13c0.05-26.33-0.07-52.66,0.05-78.99c3.02-0.06,6.03-0.07,9.06-0.07 c0.02-1.82,0.04-3.63,0.07-5.44c0.33-0.67,1-1.99,1.34-2.66c5.28,0,10.56,0,15.84,0.01c0.03,25.34,0,50.66,0.01,76 c0.02,3.73-0.39,7.56,0.81,11.18c4.3-0.18,8.63,0.21,12.95-0.16c0.33-0.33,0.99-1,1.33-1.33c0.29-22.47,0.03-44.97,0.12-67.46 c7.09-0.01,14.2,0.01,21.29,0c0.01-22.98-0.01-45.95,0-68.93c3.24-0.04,6.47,0.22,9.7-0.1c2.92-2.29,0.9-6.8,1.45-10.02 c7.73,0.04,15.48-0.11,23.2,0.09c0.07,3.01,0.08,6.01,0.06,9.02c2.38,0,4.77,0.01,7.16,0.02c-0.01,34.46,0.05,68.93-0.03,103.38 c0,1.85,0.28,3.69,0.59,5.52c11.98-0.3,23.96,0.19,35.94-0.25c0.14,9.57-0.19,19.16,0.13,28.72c0.33,0.34,0.99,1.01,1.33,1.34 c8.62,0.32,17.29,0.02,25.92,0.13c0.16-24.82-0.27-49.66,0.22-74.47c1.61-0.08,3.23-0.17,4.85-0.25 c0.06-3.33-0.21-6.68,0.12-9.99c2.2-2.84,6.51-0.94,9.64-1.43c0.44-3.71,0.42-7.44,0.31-11.16c7.04-0.02,14.07,0.04,21.09-0.03 c2.07,3.74,1.12,8.11,1.28,12.19c2.03,0.01,4.06,0.02,6.08,0.03c0.02,28.36,0,56.73,0.01,85.11h45.64v-12.17 c3.56-0.62,8.41,1.55,11.03-1.45c0.21-23.82,0.22-47.69-0.01-71.52h22.87c4.52-2.32,7.55-6.56,11.11-10.05 c7.64-0.17,15.29-0.05,22.94-0.07c0.06,14.49-0.12,28.99,0.09,43.5c6.04,0.14,12.1,0.05,18.15,0.06c0.02-12.83,0-25.66,0.01-38.5 c5.4-0.01,10.82,0.01,16.23,0v-8.14c8.73-0.94,17.62-0.71,26.38-0.14c0.07,3.95-0.27,7.93,0.1,11.89 c2.54,3.01,7.4,0.79,10.91,1.55c0.19,5.37,0.09,10.74,0.11,16.11c3.72,0,7.44,0.01,11.17,0.01c0.01,13.18-0.01,26.36,0,39.54 c2.89,0.01,5.8-0.21,8.68,0.11c2,0.86,1.46,3.22,1.43,4.94c-0.98,8.09,0.45,16.21,0.03,24.33c7.62-0.12,15.27,0.2,22.89-0.13 c1.96-0.88,1.36-3.21,1.48-4.89c-0.22-4.43,0.5-8.94-0.69-13.27c3.92,0.07,7.86,0.04,11.81,0.04c0-53.73,0.03-107.46-0.02-161.2 c3.37-0.53,6.8-0.46,10.19-0.86c0.05-3.94-0.27-7.89,0.09-11.82c0.66-1.63,2.47-1.5,3.91-1.49c13.86,0.09,27.73,0.01,41.6,0.06 c0,54.04-0.01,108.09,0,162.14h34.48c0-10.82,0.02-21.63-0.03-32.43c-0.13-1.73,0.38-3.35,1.03-4.91 c7.77,0.33,15.57,0.33,23.33-0.03c-0.02-22.69,0.02-45.38-0.02-68.06c0.09-2.58-0.48-5.33,0.82-7.7c0.07-0.47,0.23-1.41,0.3-1.89 c2.3-3.36,5.87-5.51,8.47-8.62c10.13,0.03,20.27-0.06,30.4,0.05c1.05,0.83,2.14,1.64,3.22,2.45c1.77,2.39,3.82,4.55,5.96,6.62 c4.23,0.01,8.45,0,12.69,0c0.02,18.92,0,37.83,0.01,56.75c2.1,0,4.21,0,6.32-0.01c0.5,1.99,0.86,4.03,0.82,6.09 c-0.09,10.47-0.03,20.94-0.05,31.42c6.11-0.02,12.22,0.02,18.33,0.02c1.75,0.07,3.41-0.54,5.03-1.15 c-0.1-67.21,0.01-134.41-0.06-201.61c-0.43-3.08,2.59-4.82,4.37-6.79c11.89-11.78,23.62-23.69,35.51-35.45 c1.04-1.31,2.76-1.24,4.28-1.42c0.16,7.53,0.9,15.13-0.21,22.6c0.22,0.46,0.68,1.4,0.9,1.86c10.41-0.02,20.8-0.01,31.22-0.01 c0,44.28,0.01,88.55-0.01,132.83c-0.22,1.3,0.62,2.98,2.12,2.94c5.37,0.17,10.76-0.03,16.14,0.04 c0.05-15.25-0.07-30.48,0.05-45.72c-0.16-3.01,2.61-4.68,4.55-6.47c2.37-2.5,4.77-4.97,6.98-7.62c12.36,0.03,24.73,0,37.09,0.01 c0,49.66-0.01,99.32,0,148.98c7.45,0.02,14.91-0.01,22.37,0c-0.03,15.72-0.22,31.46,0.06,47.17c0.32,0.34,0.98,1.02,1.32,1.36 c10.66,0.3,21.34,0.03,32.02,0.12c0.01-8.11-0.01-16.22,0.01-24.32c3.91-0.02,7.83,0.02,11.76-0.04c0.87-1.96,2.88-3.02,3.84-4.9 c0.31-0.06,0.93-0.19,1.25-0.27c0.64-1.28,1.3-2.79,3.07-2.74c5.17-0.43,10.37-0.03,15.56-0.16 c-0.01-22.61,0.02-45.22-0.01-67.83c0.11-2.62-0.56-5.47,0.89-7.83c0.07-1.34,0.13-2.67,0.21-4c1.42-0.63,2.37-1.9,3.55-2.87 c1.18-1.5,2.54-2.86,4.06-4.04c1.44-1.93,3.46-3.31,4.91-5.22c1.06-0.96,2.1-1.94,3.17-2.91c1.08-1.3,2.35-2.43,3.67-3.52 c12.29-0.07,24.6-0.19,36.89,0.02c0.34,0.34,1.01,1,1.34,1.34c0.47,4.08-0.23,8.21,0.25,12.29c0.33,0.34,1,1.01,1.33,1.34 c8.96,0.32,17.95,0.01,26.93,0.12c0.02,37.6-0.03,75.2,0.02,112.8c1.41-0.2,3.11-0.13,3.38-1.91c1.6-1.11,2.98-2.49,4.14-4.04 c2.67-2.07,4.92-4.54,7.22-6.98c1.22-1.46,2.56-2.82,4.05-4.02c1.11-1.61,3.41-2.5,3.38-4.71c0.29-8.07,0.01-16.16,0.11-24.24 c3.73-0.01,7.47-0.04,11.22,0.03c0.21-1.36,0.42-2.73,0.46-4.11c-0.16-9.78,1.09-19.55,0.26-29.31 c-0.69-7.07,0.04-14.17-0.49-21.23c0.21-0.56,0.64-1.67,0.86-2.22c2.98,0.1,5.98,0.09,8.98,0.08c-0.02-3.34,0-6.66,0.02-9.99 c7.42-0.19,14.85-0.14,22.27-0.05c0.01,3.35,0.02,6.69,0.02,10.04c4.59,0.05,9.2,0.05,13.79,0c0.34,0.67,1.02,1.99,1.37,2.66 c0.06,3.35,0.06,6.69,0.03,10.04c1.23,1.31,2.4,2.69,3.49,4.13c3.7,2.45,5.6,6.93,9.68,8.84c2.78,5.74-0.76,12.72,2.27,18.39 c5.89,6.52,12.5,12.41,18.54,18.78c5.87,0.85,11.82,0.15,17.72,0.32c5.08-0.08,10.18,0.3,15.26-0.17 c-0.02-6.47-0.01-12.94-0.01-19.42c3.39,0,6.79-0.01,10.2,0c0.04-2.59-0.33-5.16-0.58-7.73c1.18-1.87,3.8-0.81,5.64-1.08 c4.03,0.44,8.36-0.96,12.2,0.78c-0.17,9.09-0.05,18.19-0.08,27.29h22.31c0.01-19.59-0.02-39.18,0.01-58.77 c3.36-0.01,6.74-0.01,10.13-0.01c-0.01-3.72,0-7.43,0.01-11.14c7.42-0.02,14.86-0.01,22.3-0.01c-0.01,3.72,0,7.43,0,11.15 c3.03,0,6.06,0,9.11,0.02c0.02,33.23,0.06,66.47-0.02,99.7c4.82-4.78,9.8-9.44,14.45-14.4c2.36-2.92,5.1-5.59,8.49-7.29 c3.35-0.59,8.02,1.51,10.44-1.44c0.37-5.89-0.06-11.82,0.19-17.73c4.03-0.05,8.05-0.06,12.09-0.07c0.02-29.39,0-58.78,0.01-88.18 c2.56-0.42,6.1,1.09,8-1.08c0.33-5.4,0-10.81,0.08-16.21c0.02-1.38-0.27-3.26,1.41-3.82c1.54-0.28,3.12-0.18,4.71-0.21 c0.24-7.27,0.1-14.57,0.16-21.86c0.61-0.34,1.85-1.03,2.48-1.37c5.2-0.06,10.42-0.06,15.63-0.08c1.3-0.23,2.95,0.6,2.98,2.09 c0.15,6.74-0.05,13.49,0.04,20.23c2.01,0.01,4.04,0.01,6.08,0.02c0.01,7.77-0.02,15.55,0.01,23.32c3,0.01,6,0.04,9.03,0.11 c0.16,6.04,0.05,12.08,0.09,18.12c2.62,0.01,5.26,0.01,7.91-0.01c1.72,4.89,1.15,10.12,1.21,15.2 c0.01,19.77-0.02,39.54,0.01,59.31c11.9,12.06,23.96,23.95,35.92,35.96h12.75c0.01-16.87-0.01-33.75,0.01-50.61 c0.05-4.61-0.58-9.36,1.16-13.76c1.37-1.89,3.02-3.55,4.91-4.94c0.01-67.62,0-135.24,0-202.85c16.44-16.3,32.75-32.74,49.11-49.1 c0.65,0,1.94,0,2.58-0.01c0.02,75.68,0.02,151.37,0,227.04c-0.25,1.32,0.43,3.15,2.08,2.99c7.41,0.14,14.85-0.03,22.28-0.05 c0.04,9.86-0.12,19.72,0.06,29.57c-0.14,4.14,3.25,6.91,6.01,9.45c-0.01,14.4,0.01,28.79-0.01,43.19 c0.03,3.41-0.49,7.02,1.3,10.13c10.04-0.08,20.09-0.01,30.15-0.03c0.09-22.15-0.17-44.31,0.12-66.44c0.33-0.34,1-1.01,1.32-1.34 c3.56-0.35,7.14-0.05,10.73-0.13c0.07-3.56-0.23-7.15,0.12-10.71c0.34-0.33,1.01-0.99,1.34-1.33c6.3,0.12,12.88-1.03,19,0.78 c0.49-0.27,1.45-0.84,1.93-1.11c-0.17-5-0.06-9.99-0.07-14.98c4.91-0.13,9.86,0.23,14.77-0.12c2.89-2.32,0.89-6.79,1.43-10.03 c6.92,0.28,14.05-0.55,20.88,0.4c7.31,6.66,13.96,14.06,21.15,20.88c3.22,0.09,6.47,0.03,9.72-0.28 c-0.04,28.14-0.03,56.27-0.02,84.4h24.97c0.34-0.67,1-1.99,1.34-2.66c0.13-22.07-0.02-44.15,0.08-66.22 c4.03,0.01,8.09,0.02,12.15-0.02c0.45-2.92-1.36-7.01,1.44-9.01c6.62-0.35,13.27,0.01,19.9-0.14c0.43,3.42-1.03,7.36,0.62,10.47 c3.08,1.59,7.04,0.32,10.48,0.69c0.03,12.28-0.07,24.57,0.05,36.86c1.62-0.71,3.16-1.68,4.26-3.12c2.49-3.39,6.08-5.72,8.87-8.85 c0-12.35-0.01-24.69,0-37.03c-0.25-10.82,0.49-21.69-0.41-32.48c7.01,0.21,14.07-0.26,21.08,0.22c3.41,1.22,4.89,5.08,7.68,7.24 c0.09,12.4-0.04,24.78,0.06,37.18c3.74,2.97,6.87,6.61,10.29,9.94c1.5,1.31,1.92,3.34,1.87,5.26 c-0.02,17.23-0.01,34.45-0.01,51.67h25.34c0.01-42.56-0.01-85.13,0.01-127.69c10.48,0,20.95,0,31.43,0.01 c0.08,18.44-0.17,36.91,0.12,55.35c0.3,0.32,0.93,0.96,1.25,1.27c4.59,0.36,9.22,0,13.84,0.12c0.02,8.58-0.06,17.15,0.04,25.72 c0.34,0.63,1,1.87,1.35,2.5c3.49,1.71,4.99,5.58,8.26,7.58c1.2,1.67,2.57,3.22,4,4.72c3.72,0.03,7.45,0.04,11.19,0.01 c2.83-2.88,5.65-5.78,8.61-8.52c0-9.99-0.02-19.99,0.01-29.98c9.07-0.01,18.16,0,27.25,0c0.02,6.62-0.14,13.24,0.09,19.85 c3.44,3.15,6.63,6.56,9.96,9.84c2.06,2.09,4.5,3.95,5.74,6.71c0.63,0.07,1.9,0.2,2.54,0.26c0.18,4.53-0.2,9.09,0.17,13.62 c0.33,0.32,0.97,0.96,1.3,1.29c11.73,0.31,23.49,0.03,35.24,0.11c0.07-15.39-0.08-30.79,0.02-46.18c0.31-0.33,0.95-1,1.27-1.33 c9.31-0.31,18.63,0,27.96-0.12c0.01-11.14-0.01-22.29,0-33.44h39.55c0,17.91-0.02,35.81-0.01,53.71c7.43,0.01,14.87,0.01,22.32,0 c0-5.27-0.02-10.54,0.01-15.81c2.17-1.98,4.83-3.59,6.47-6.12c0.66-0.89,1.14-2.36,2.55-2.26c7.28-0.35,14.62-0.01,21.93-0.13 c3-3.05,6.12-5.99,9.05-9.11c7.61-0.02,15.22-0.01,22.84-0.01c0,17.91-0.01,35.81,0,53.71h22.31 c0.08-15.83-0.17-31.66,0.11-47.47c0.3-0.2,0.93-0.61,1.23-0.81c5.97-0.48,11.99,0.58,17.95-0.25c0.04-4.1-0.56-8.34,0.86-12.29 c7.43,0.16,14.89-0.07,22.35,0.08c1.45-0.05,2.31,1.59,2.12,2.91c-0.02,19.27-0.03,38.56-0.01,57.83 c6.74-0.02,13.49,0.02,20.23,0.02c1.29,0.21,3.23-0.38,3.06-2.05c0.2-8.43-0.19-16.86,0.13-25.26c1.03-4.03,4.68-6.45,6.96-9.73 c0.07-20.08,0-40.17,0.03-60.26c8.78-0.02,17.58-0.01,26.36-0.01c-0.03,18.28,0.07,36.54-0.05,54.8 c7.22,1.15,14.62-0.37,21.89,0.52c4.4,1.76,7.12,5.96,10.62,8.99c0,15.73-0.01,31.44,0,47.17c4.72,0.01,9.45,0.01,14.19,0 c0.02-30.4-0.03-60.79,0.02-91.19c10.83,0,21.65-0.07,32.48,0.01c1.65-0.23,2,1.8,1.89,3.01c-0.01,15.2-0.14,30.41,0.06,45.61 c6.08,0.02,12.18-0.01,18.27,0.01c0.02,17.56,0,35.13,0.01,52.69c16.23,0.04,32.46-0.08,48.69,0.06 c1.14-3.97,0.53-8.15,0.79-12.21c0.46-19.93,0.27-39.87-0.38-59.79c-0.32-25.27-0.34-50.56-0.2-75.83 c4.65-0.25,9.3-0.17,13.98-0.18c-0.02-3.38-0.01-6.76,0.02-10.14c4.7,0.03,9.43,0.05,14.17-0.01c-0.01,2.7-0.01,5.4,0.01,8.11 h9.12c0,25.33-0.01,50.67,0,76.01H2400z"/> </g>' ) ) ); } function base(string memory children) private pure returns (string memory) { return string( abi.encodePacked( '<g id="Skyline">', children, '</g><path d="M2400,1353.36V1400H0v-24.25h52.25v-69.03h5.72v-7.64h44.66v-41.85h2.79v41.85h15.35v7.64h6.14v69.03h29.86v-20.53h76.52 v20.53h14.92l14.95-20.55v-44.75h121.3v23.09l34.12,31.01h74.13v-3.73H569l22.6-20.52h35.65v-23.09h2.79v23.09h25.01v44.77h85.85 v-22.38h132.5v24.25h56.3l-1-0.28c0,0,0,0,15.62-22.44v-12.14h-7.31v-9.76h7.31v-9.48h19.2v-40.73h4.18v40.73h107.27v9.48h7.15 v9.76h-7.15v19.94h59.73l20.52-20.53h61.58v24.26h24.27v-42.91h54.53v-21.21h2.79v21.21h15.47v57.83h20.53v-22.39H1465v-19.67 l14.13-15.77h49.32v39.18h237.02v-40.86h-5.25v-12.55h5.25v-45.47h11.49v-45.2h4.18v45.2h40.31v24.56l14.15,10.88h26.9v18.66h128.4 l24.63-20.73v-65.09h55.99v115.67h50.39v-76.49h5.25v-3.84h80.93v3.84h12.73l48.58,72.76H2400z"/>' ) ); } }
pragma solidity ^0.8.6; pragma abicoder v2; library SpaceSkyDetails { function item_4() public pure returns (string memory) { return base( '<linearGradient id="SVGID_00000147213030137463215980000015764296731886910114_" gradientUnits="userSpaceOnUse" x1="2000.5797" y1="703.7239" x2="2000.5797" y2="703.7239"> <stop offset="0" style="stop-color:#2BF9FF"/> <stop offset="0.0396" style="stop-color:#24CDD7"/> <stop offset="0.0835" style="stop-color:#1EA4B3"/> <stop offset="0.1328" style="stop-color:#197E91"/> <stop offset="0.1865" style="stop-color:#145E74"/> <stop offset="0.2458" style="stop-color:#10425B"/> <stop offset="0.3128" style="stop-color:#0D2C48"/> <stop offset="0.3911" style="stop-color:#0A1B38"/> <stop offset="0.4878" style="stop-color:#08102E"/> <stop offset="0.6234" style="stop-color:#070928"/> <stop offset="1" style="stop-color:#070726"/> </linearGradient> <path fill="url(#SVGID_00000147213030137463215980000015764296731886910114_)" d="M2000.58,703.72"/> <linearGradient id="SVGID_00000058576935550027061160000003107970444899556014_" gradientUnits="userSpaceOnUse" x1="1200" y1="1400" x2="1200" y2="-9.094947e-13"> <stop offset="0" style="stop-color:#2BF9FF"/> <stop offset="0.0396" style="stop-color:#24CDD7"/> <stop offset="0.0835" style="stop-color:#1EA4B3"/> <stop offset="0.1328" style="stop-color:#197E91"/> <stop offset="0.1865" style="stop-color:#145E74"/> <stop offset="0.2458" style="stop-color:#10425B"/> <stop offset="0.3128" style="stop-color:#0D2C48"/> <stop offset="0.3911" style="stop-color:#0A1B38"/> <stop offset="0.4878" style="stop-color:#08102E"/> <stop offset="0.6234" style="stop-color:#070928"/> <stop offset="1" style="stop-color:#070726"/> </linearGradient> <polyline fill="url(#SVGID_00000058576935550027061160000003107970444899556014_)" points="2400,1400 0,1400 0,0 2400,0 "/> <path fill="#45C3FF" d="M2400,774.82l3,629.18l-973.06-4c0,0-106.94-428,307.76-686.47C2133,522,2400,774.82,2400,774.82z"/> <g> <defs> <perspective id="perspective83"></perspective> </defs> <namedview bordercolor="#666666" borderopacity="1" gridtolerance="10" guidetolerance="10" id="namedview77" objecttolerance="10" pagecolor="#ffffff" showgrid="false"> </namedview> <g id="Layer_5_1_" transform="translate(460.18617,41.20343)"> </g> <g id="g2903_1_" transform="matrix(1.021638,0,0,1.021638,470.14366,37.569946)"> <polygon id="polygon55_1_" fill="#666667" points="949.36,531.73 914.08,577.47 944.15,588.69 979.43,542.96 "/> <path id="path57_1_" d="M986.65,539.3c0,0,2.74-7.33,7.15-13.46c4.4-6.13,10.47-11.06,10.47-11.06l-32.69-23.58 c0,0-7.76,3.34-12.25,9.59c-4.32,6.01-5.36,14.94-5.36,14.94L986.65,539.3L986.65,539.3z"/> <path id="path59_1_" fill="#666667" d="M1001.18,526.37c-8.78,11.15-14.25,23.69-12.78,28.95c-1.21-3.42-5.06-16.87,4.01-30 c9.39-13.6,22.13-13.88,26.82-13.45C1015.1,512.16,1008.09,517.6,1001.18,526.37z"/> <path id="path61_1_" fill="#989898" d="M991.72,557.77c-0.6,0.03-1.14-0.05-1.6-0.25c-0.2-0.08-0.39-0.19-0.56-0.32 c-0.11-0.09-0.22-0.18-0.32-0.29c-0.2-0.21-0.38-0.46-0.53-0.75c-0.45-0.87-0.62-2.05-0.54-3.47c0.01-0.24,0.04-0.48,0.06-0.73 c0.05-0.5,0.14-1.02,0.25-1.57c0.05-0.27,0.12-0.55,0.18-0.84c0.03-0.14,0.07-0.28,0.11-0.43c0.07-0.29,0.16-0.58,0.24-0.88 c0.04-0.15,0.09-0.3,0.14-0.45c0.09-0.3,0.19-0.61,0.3-0.93c2.01-5.95,6.21-13.49,11.73-20.49c5.37-6.81,10.8-11.62,14.89-13.56 c0.22-0.1,0.44-0.2,0.65-0.29c0.21-0.09,0.42-0.17,0.63-0.24c0.2-0.07,0.4-0.13,0.6-0.19c0.68-0.19,1.31-0.27,1.88-0.23 c0.16,0.01,0.32,0.03,0.47,0.06c0.9,0.17,1.6,0.68,2.05,1.55c2.4,4.66-3.18,18-12.47,29.78c-0.29,0.37-0.58,0.73-0.87,1.09 C1002.32,552.54,995.66,557.56,991.72,557.77L991.72,557.77z"/> <rect id="rect63_1_" x="1014.63" y="520.74" transform="matrix(0.7621 -0.6475 0.6475 0.7621 -105.3348 784.8772)" width="1.48" height="30.06"/> <rect id="rect65_1_" x="1009.74" y="529.2" transform="matrix(0.3335 -0.9428 0.9428 0.3335 160.4519 1315.3987)" width="1.48" height="30.06"/> <path id="path67_1_" d="M1020.98,546.42l-23.02-15.46c0.21-0.52,0.36-0.99,0.76-1.27l23.08,15.51L1020.98,546.42L1020.98,546.42z "/> <circle id="circle69_1_" cx="1023.69" cy="547.61" r="4.01"> </circle> <polygon id="polygon71_1_" fill="#666667" points="1018.45,443.7 981.83,491.08 1012.13,502.02 1048.76,454.63 "/> <path id="path73_1_" d="M999.1,492.92l2.01,1.71l-10.41,13.32c-0.33-0.19-1.86-1.48-2.14-1.71L999.1,492.92L999.1,492.92z"/> <path id="path75_1_" d="M972.66,527.17l2.01,1.71l-10.41,13.32c-0.33-0.19-1.86-1.48-2.14-1.71L972.66,527.17L972.66,527.17z"/> </g> </g> <path fill="#FFFFFF" d="M1134,760.88c-10.68,0.75-12.8,1.79-13.53,13.12c-0.39-11.48-3-12.89-13.47-13.53 c11.47-0.39,12.91-2.99,13.5-13.47C1121.24,758.12,1122.13,760.29,1134,760.88z"/> <path fill="#FFFFFF" d="M2159.02,170.53c-20.1,1.66-23.28,2.84-24.89,24.14c-1.04-21.67-5-23.39-24.8-24.89 c21.64-1.05,23.43-4.97,24.85-24.8C2135.81,165.88,2136.72,169.16,2159.02,170.53z"/> <path fill="#FFFFFF" d="M2295,629.93c-14.41,1.11-16.96,2.21-18.03,17.49c-0.64-15.51-3.79-17.06-17.97-18.03 c15.49-0.65,17.08-3.77,18-17.97C2278.09,626.4,2278.98,629.03,2295,629.93z"/> <path fill="#FFFFFF" d="M360,410.14c0,0-8.69,0.73-13.64,2.05c-1.13,0.3-2.67,0.76-4.09,2.05c-1.59,1.43-2.24,3.17-2.73,4.77 c-1.26,4.14-2.09,13-2.09,13c-0.19-2.97-0.69-8.69-2-13.64c-0.3-1.13-0.76-2.67-2.05-4.09c-1.43-1.59-3.17-2.24-4.77-2.73 c-4.14-1.26-13.64-2.09-13.64-2.09c2.97-0.19,8.69-0.69,13.64-2c1.13-0.3,2.67-0.76,4.09-2.05c1.59-1.43,2.24-3.17,2.73-4.77 c1.26-4.14,2.05-13.64,2.05-13.64s0.73,9.38,2.05,14.32c0.3,1.13,0.76,2.67,2.05,4.09c1.43,1.59,3.17,2.24,4.77,2.73 C350.5,409.4,360,410.14,360,410.14z"/> <path fill="#FFFFFF" d="M1062,194.4c-25.7,2.24-29.37,3.37-31.56,30.6c-1.49-27.74-6.07-29.49-31.44-31.56 c27.7-1.49,29.54-6.05,31.5-31.44C1032.57,188.5,1033.72,192.66,1062,194.4z"/> <g> <path fill="#4A8DB5" d="M1642.75,893.26c-98.09,82.11-174.48,189.62-219.23,309.99c10.54-158.53,86.19-308.87,203.97-412.21 c0.71,4.86,1.2,12.47,1.29,21.66C1628.68,843.48,1633.64,868.21,1642.75,893.26z"/> <path fill="#4A8DB5" d="M2400,765.03v9.79c-114.25-47.45-251.05-65.74-377.78-48.5c-6.99,1.37-10.04,1.17-12.18-8.83 c-4.55-16.81-8.83-13.92-24-13.79c-9.71,0.41-13.92,0-29.09-2.73c-36.82-9.87-20.3,15.12-45.89,2.37 c-16.88-8.99-30.06-5.22-41.88,6.94c-5.6,7.19-23.49,1.26-16.18,13.02c4.25,9.63,29.42,6.54,33.05,15.89 c0.45,1.17,1.36,8.67,2.14,17.56c-6.05,1.97-12.06,4.03-18.03,6.16c-22.14-22.75-61.28-42.94-91.51-40.55 c-8.75,1.94-28.44,12.56-35.64,7.91c-5.22-1.83,1.75-8.93-5.31-16.74C1936.56,597.74,2223.84,621.32,2400,765.03z"/> <g> <g transform="translate(0.000000,643.000000) scale(0.100000,-0.100000)"> <path fill="#1E591E" d="M20170.5-840c-443.2-61.2-874-161.5-1288.6-297.5c-7.8,88.9-16.9,163.9-21.4,175.6 c-35.58,93.03-289.3,63.25-330.49,158.91c-73.04,117.44,105.94,58.44,161.79,130.2c40,46.49,117.5,95.99,172.9,110.39 c162.67,63.2,335.46-157.43,428.5-44.41c58.4,60.81,79.3,62.41,276.3,27.11c188.13-42.26,296.71-21.09,436.3-27.59 C20105.72-613.81,20083.27-841.91,20170.5-840z"/> <path fill="#1E591E" d="M20286.1-825c-21.2-2.6-42.7-5.3-63.9-8.2C20248.1-827.6,20269.1-824.8,20286.1-825z"/> <path fill="#1E591E" d="M16431.2-2499.5c-1.2-1-2.5-2.1-3.7-3.1c15.2-39.5,27.9-64.1,35-64.5c3.5-0.1,7.2,1.5,10.9,4.7 c18.6,15.7,38.3,69.1,47.9,131.9c0.3,2,0.5,3.9,0.7,5.9C16491.5-2449.3,16461.3-2474.3,16431.2-2499.5z"/> <path fill="#1E591E" d="M18418.6-978.1c-162.38,104.78-466.7,208.74-632.1,184.51c-87.55-19.41-284.38-125.57-356.4-79.11 c-51.87,17.85,17.23,89.84-53.1,167.39c-394.8-216.82-764.88-477.01-1102.1-775.1c7.1-48.6,12-124.7,12.9-216.6 c-1.03-307.8,48.58-555.1,139.7-805.6c31.32,26.25,62.75,52.29,94.5,78h0.1c10.05,57.57,9.57,78.97,17.8,14.4 c648.21,521.71,1373.16,929.83,2161.7,1211.1C18615.3-1113.1,18519.7-1039.2,18418.6-978.1z M18154.5-1214.8 c-16.5-0.4-22.6-9.3-29-38.6c-65.14-214.71-360.06-271.98-490.8-80.19c-108.14,168.36,57.04,201.25,217.19,126.18 c114.04-43.75,223.91-33.42,250.81,82.9c12.89,58.61,29.39,68.31,36.49,21.61c2.4-16.9,11.5-45.5,21.3-66.1 C18180.6-1212.4,18180.4-1213.3,18154.5-1214.8z"/> <path fill="#1E591E" d="M24000-5132.3v-373.9c-6.3,3.6-12.4,7.9-18.4,12.8c-49.4,40.6-115.3,168.8-138.1,265 c-18.6,82.9-27.8,101.4-76.9,162.3c-31.4,38.7-60.3,84-64.7,101.4c-8.9,33.7,0.1,93.1,15.6,103c14.5,10.1,76.2-16.8,120.6-52.2 c25.3-19.9,72.4-80.5,119-152.2C23970.9-5087.7,23985.7-5110.5,24000-5132.3z"/> <path fill="#1E591E" d="M21929.1-5490.2c-26.3-100.7-46.5-150.5-96.1-250.2c-35.5-67.9-76.6-142.8-92.7-164.9 c-61.9-85.7-158.1-99.3-196.5-27.3c-22.1,43.8-21.8,59.1,17.3,268.6c34.7,190,46.4,215,110,248.1c19.8,11,36.2,24.8,36.7,31.9 c-0.4,7.2,11.1,12.9,23.4,13.2c13.4,0.2,40.3,15.7,59.7,34c19.6,19.2,54.7,39.1,82.9,46.2 C21971.6-5265.1,21980.2-5295.7,21929.1-5490.2z"/> </g> </g> <path fill="#329431" d="M1841.88,830.83c12.01,3.74,17.88,20.19,7.47,26.94c-7.78,7.22-25.47-13.71-33.33-6.74 c-15.46,14.7-76.68,49.06-62.4,76.76c-19.39,39.1-19.93-79.71-54.95-37.81c-17.44,40.48,36.6,14.61,25.99,35.43 c-8.36,3.87,2.38,15.23,4.86,21.36c2.54,6.96-2.36,22.15,7.75,24.94c48.53-12.65,33.46-2.56,73.37,25.81 c30.19,18.62,27.26,52.16,58.8,65.39c16.02,14.42,16.67,28.61-1.38,41.07c-20.25,15.09-15.9,50.71-49.15,50.6 c-23.92,2.88-27.24,33.44-48.95,39.48c-12.64,7.49-25.96,18.55-41.22,18.35c-5.36,0.15-5.36,0.15-7.89,5.12 c-12.65,20.5-33.58,47-17.36,68.47c-106.12,20.68,7.27-132.79,16.84-174.75c-5.83-56.77-32.05-63.81,16.64-116.26 c1.56-12.15-18.85,0.51-22-23.79c-8.26-30.1-68.32-43.56-60.97-87.17c39.03-27.65,195.7-145.94,225.17-107.14 c-2.07,4.16-24.73,5.57-24.92,8.55c15.4,13.33,31.16,35.93,35.25,52.32c-0.11,16.52-29.61,8.9-30.58-5.72 C1860.54,824.34,1830.89,827.79,1841.88,830.83z"/> <path fill="#329431" d="M2033.79,741.16c-0.52,0.5-3,1.08-5.49,1.25c-2.5,0.16-5.89,1.16-7.44,2.15 c-3.22,2.05-3.43,3.03-3.39,13.99c0.16,10.38-3.37,13.39-13.82,12.01l-5.89-0.68l-1.59,4.46c-1.04,2.84-2.53,4.97-4.3,6.01 c-4.49,2.7-15.96,4.57-30.84,5.18c-24.05,0.84-28.75,1.75-42.21,8c-13.13,6.11-19.8,5.25-24.81-3.12c-3.31-5.44-3.77-8-5.48-29.47 c-0.11-1.42-0.22-2.82-0.34-4.19c41.46-13.6,84.54-23.63,128.86-29.75h0.01c0.01,0,0.01,0,0.02,0s0.01,0,0.02,0 c1.37,0.04,3.03-0.21,5.12-0.68c2.12-0.29,4.27-0.56,6.39-0.82c0.01,0,0.01,0,0.02,0s0.01,0,0.02,0c0.01,0,0.01,0,0.02,0 c3.36,0.05,5.21,1.26,6.42,3.76C2036.56,732.35,2035.83,739.36,2033.79,741.16z"/> <path fill="#329431" d="M2398.22,847.15c-14.45,2.07-47.02-2.29-56.86,2.92c-8.34,3.91-2.01-3.16-13.74-10.61 c-9.02-5.06-16.02-4.45-31.62,2.65c-10.82,10.67-61.24,2.53-81.91,0.88c12.55-45.34-148.74-30.79-110.22,10.4 c-33.51,29.22-22.88-5.56-45.88-16.26c-13.35-4.11-10.19,28.65-2.9,32.64c-5.89,3.39-12.03,6.23-9.38,14.21 c6.1,13.81-44.2,14.16-15.61,40.59c-1.97,0.56-7.26,0.24-7.15,2.73c-12.62,21.43-45.16,37.04-47.45,69.3 c-5.15,29.73,5.61,74.09,44.59,62.47c28.5-4.35,12.97,5.75,30.6,11.26c3.9,0.86,4.25,1.14,3.28,2.77 c-1.97,3.36-4.88,19.81-4.71,26c2.08,18.26,5.78,28.94-6.25,50.13c-14.81,29.21-14.54,48.16,1.19,76.34 c3.24,5.74,5.44,11.55,7.03,18.25c5.55,28.98,30.76,21.84,44.8,2.1c12.06-19.34,29.65-23.84,35.95-42.76 c6.69-22.36,29.9-3.61,27.23-42.64c-5.88-35.88,45.42-46.28,55.88-88.54c-5.75-1.24-18.78-2.54-20.63-6.29 c-6.49-5.92-13.82-33.36-14.11-37.21c2.97,5.27,10.88,33.99,16.55,30.78c15.14,1,68.63-6.66,60.86-34.5 c-1.5-4.32-1.5-4.32,10.8,1.67c47.16,22.12,22.25,55.13,35.91,73.97c21.08,11.51,19.3-33.52,35.27-37.79 c16.64-9.35,35.56,5.37,33.29,22.7c2.21,0.39,6.66,1.17,8.87,1.55c2.56,4.36,5.66,26.97,10.59,22.1c2.57-3.39,4.16,5.5,7.51,6.98 V846.97C2399.39,847.03,2398.8,847.09,2398.22,847.15z M2118.44,862.54c11.11,2.71,16.67-0.53,18.64-13.5 c0.6-12.78,11.94-17.83,10.03-11.1c-2.7,5.15,1.11,13.6,4.63,18.94c-11.88,6.34-32.15,26.34-37.36,6.41 C2113.74,861.1,2113.95,861.04,2118.44,862.54z M2161.09,972.31c-5.41-9.76-28.85-19.45-40.09-15.09 c-6.09,1.63-6.93,1.24-19.21-7.62c-23.18-14.87,3.26-31.44-55.13-26.29c36.64-28.49,39.65-17.59,64.44,12.88 c3.61-2.34,4.04-7.37,7.46-10.13c2.28-1.54,2.36-1.42,7.88,12.08c7.76,18.3,5.38,15.06,19.67,8.33 c6.68,6.06,25.27,17.73,19.58,21.73c-0.98,1.63-1.75,4.22-1.69,5.78C2164.01,976.74,2164.01,976.74,2161.09,972.31z M2169.15,999.38c-1.94-2.78-3.84-8.12-4.08-11.65C2163.56,978.76,2174.52,1007.96,2169.15,999.38z M2232.64,1010.52 c-12.88-3.75-16.72-8.78-14.02-17.23c4.28,5.27,15.03,13.81,21.85,19.36L2232.64,1010.52z"/> </g>' ); } function base(string memory children) private pure returns (string memory) { return string(abi.encodePacked('<g id="Backgrounds">', children, "</g>")); } }
pragma solidity ^0.8.6; library DetailsHelper { function backgroundBase(string memory children, uint256 index) internal pure returns (string memory) { return string( abi.encodePacked( '<g style=" fill:rgb(100%,83.921569%,13.72549%);" id="', toString(index), '">', children, "</g>" ) ); } function toString(uint256 value) private pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./extensions/IERC721Metadata.sol"; import "../../utils/Address.sol"; import "../../utils/Context.sol"; import "../../utils/Strings.sol"; import "../../utils/introspection/ERC165.sol"; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
// SPDX-License-Identifier: MIT /// @title Base64 /// @author Brecht Devos - <[email protected]> /// @notice Provides a function for encoding some bytes in base64 library Base64 { string internal constant TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; function encode(bytes memory data) internal pure returns (string memory) { if (data.length == 0) return ''; // load the table into memory string memory table = TABLE; // multiply by 4/3 rounded up uint256 encodedLen = 4 * ((data.length + 2) / 3); // add some extra buffer at the end required for the writing string memory result = new string(encodedLen + 32); assembly { // set the actual output length mstore(result, encodedLen) // prepare the lookup table let tablePtr := add(table, 1) // input ptr let dataPtr := data let endPtr := add(dataPtr, mload(data)) // result ptr, jump over length let resultPtr := add(result, 32) // run over the input, 3 bytes at a time for {} lt(dataPtr, endPtr) {} { dataPtr := add(dataPtr, 3) // read 3 bytes let input := mload(dataPtr) // write 4 characters mstore(resultPtr, shl(248, mload(add(tablePtr, and(shr(18, input), 0x3F))))) resultPtr := add(resultPtr, 1) mstore(resultPtr, shl(248, mload(add(tablePtr, and(shr(12, input), 0x3F))))) resultPtr := add(resultPtr, 1) mstore(resultPtr, shl(248, mload(add(tablePtr, and(shr( 6, input), 0x3F))))) resultPtr := add(resultPtr, 1) mstore(resultPtr, shl(248, mload(add(tablePtr, and( input, 0x3F))))) resultPtr := add(resultPtr, 1) } // padding with '=' switch mod(mload(data), 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } } return result; } }
{ "metadata": { "bytecodeHash": "none" }, "optimizer": { "enabled": true, "runs": 800 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": { "libraries/details/BuildingDetailsEight.sol": { "BuildingDetailsEight": "0x1ec2897997453a5a00caf587697ca3958b216658" }, "libraries/details/BuildingDetailsEleven.sol": { "BuildingDetailsEleven": "0xaa7ec4cae811213c0c353c3761b6a868946bb36a" }, "libraries/details/BuildingDetailsFirst.sol": { "BuildingDetailsFirst": "0x44fc71f15baf20f4cf90a7377f439567dad1c78d" }, "libraries/details/BuildingDetailsNine.sol": { "BuildingDetailsNine": "0x6dc8ceee14da31b0684eb719e5cf6df468ffcca1" }, "libraries/details/BuildingDetailsSecond.sol": { "BuildingDetailsSecond": "0xf386eeac48bab1d0516bbbf78931eb3b10c0cbea" }, "libraries/details/BuildingDetailsSeven.sol": { "BuildingDetailsSeven": "0x6d8433150377f0ebc23616b0fa3792e0ad24b22b" }, "libraries/details/BuildingDetailsTen.sol": { "BuildingDetailsTen": "0x80871eccfa3033e9fc755c8b4633bf4d39f9e94c" }, "libraries/details/BuildingDetailsTwelveFPart.sol": { "BuildingDetailsTwelveFPart": "0xdca5b43ca0bff140a162a1abae6bae6a43023e72" }, "libraries/details/BuildingDetailsTwelveSPart.sol": { "BuildingDetailsTwelveSPart": "0x6a8d5b2fd790619bb408c09b548715114bbc5765" }, "libraries/details/MoonDetails.sol": { "MoonDetails": "0x672a8f0a75441201597aa35895f588654c8ac002" }, "libraries/details/SkyDetails.sol": { "SkyDetails": "0x10c4b46d2cac8133db39110985ea7cbe474edff9" }, "libraries/details/SkylineDetails.sol": { "SkylineDetails": "0x1a1cddd696c9159123678ce12426d45ca3f01744" }, "libraries/details/SpaceSkyDetails.sol": { "SpaceSkyDetails": "0x5eb926e1ef8ed374ac80e2028f3d676aba6004e4" } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract FantomNumbers","name":"_fantomNumbers","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"fantomNumbers","outputs":[{"internalType":"contract FantomNumbers","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMintStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newState","type":"bool"}],"name":"updateMintState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003877380380620038778339810160408190526200003491620001e2565b60408051808201825260068152654e464369547960d01b602080830191825283518085019094526004845263139190d560e21b9084015281519192916200007e916000916200013c565b508051620000949060019060208401906200013c565b505050620000b1620000ab620000e660201b60201c565b620000ea565b6001600b55600c80546001600160a01b0319166001600160a01b0392909216919091179055600e805460ff1916905562000251565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200014a9062000214565b90600052602060002090601f0160209004810192826200016e5760008555620001b9565b82601f106200018957805160ff1916838001178555620001b9565b82800160010185558215620001b9579182015b82811115620001b95782518255916020019190600101906200019c565b50620001c7929150620001cb565b5090565b5b80821115620001c75760008155600101620001cc565b600060208284031215620001f557600080fd5b81516001600160a01b03811681146200020d57600080fd5b9392505050565b600181811c908216806200022957607f821691505b602082108114156200024b57634e487b7160e01b600052602260045260246000fd5b50919050565b61361680620002616000396000f3fe60806040526004361061018b5760003560e01c80636c14aac2116100d6578063a22cb4651161007f578063e0fe711211610059578063e0fe71121461041d578063e985e9c51461043d578063f2fde38b1461048657600080fd5b8063a22cb465146103bd578063b88d4fde146103dd578063c87b56dd146103fd57600080fd5b8063853828b6116100b0578063853828b6146103825780638da5cb5b1461038a57806395d89b41146103a857600080fd5b80636c14aac21461032d57806370a082311461034d578063715018a61461036d57600080fd5b806323b872dd1161013857806342842e0e1161011257806342842e0e146102cd5780634f6ccce7146102ed5780636352211e1461030d57600080fd5b806323b872dd1461027a5780632f745c591461029a578063379607f5146102ba57600080fd5b8063095ea7b311610169578063095ea7b31461021f57806318160ddd146102415780631869e7d41461026057600080fd5b806301ffc9a71461019057806306fdde03146101c5578063081812fc146101e7575b600080fd5b34801561019c57600080fd5b506101b06101ab366004612d1f565b6104a6565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101da6104d1565b6040516101bc91906133cc565b3480156101f357600080fd5b50610207610202366004612dc7565b610563565b6040516001600160a01b0390911681526020016101bc565b34801561022b57600080fd5b5061023f61023a366004612cd8565b6105fd565b005b34801561024d57600080fd5b506008545b6040519081526020016101bc565b34801561026c57600080fd5b50600e546101b09060ff1681565b34801561028657600080fd5b5061023f610295366004612bb3565b610713565b3480156102a657600080fd5b506102526102b5366004612cd8565b61079a565b61023f6102c8366004612dc7565b610842565b3480156102d957600080fd5b5061023f6102e8366004612bb3565b611019565b3480156102f957600080fd5b50610252610308366004612dc7565b611034565b34801561031957600080fd5b50610207610328366004612dc7565b6110d8565b34801561033957600080fd5b50600c54610207906001600160a01b031681565b34801561035957600080fd5b50610252610368366004612b39565b611163565b34801561037957600080fd5b5061023f6111fd565b61023f611263565b34801561039657600080fd5b50600a546001600160a01b0316610207565b3480156103b457600080fd5b506101da6112fb565b3480156103c957600080fd5b5061023f6103d8366004612ca3565b61130a565b3480156103e957600080fd5b5061023f6103f8366004612bf4565b6113cf565b34801561040957600080fd5b506101da610418366004612dc7565b61145d565b34801561042957600080fd5b5061023f610438366004612d04565b611636565b34801561044957600080fd5b506101b0610458366004612b7a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561049257600080fd5b5061023f6104a1366004612b39565b6116a3565b60006001600160e01b0319821663780e9d6360e01b14806104cb57506104cb82611782565b92915050565b6060600080546104e0906134c6565b80601f016020809104026020016040519081016040528092919081815260200182805461050c906134c6565b80156105595780601f1061052e57610100808354040283529160200191610559565b820191906000526020600020905b81548152906001019060200180831161053c57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166105e15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610608826110d8565b9050806001600160a01b0316836001600160a01b031614156106765760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105d8565b336001600160a01b038216148061069257506106928133610458565b6107045760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105d8565b61070e83836117d2565b505050565b61071d3382611840565b61078f5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105d8565b61070e838383611937565b60006107a583611163565b82106108195760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016105d8565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600b5414156108955760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105d8565b6002600b5580158015906108aa5750611a0a81105b6108f65760405162461bcd60e51b815260206004820152601060248201527f546f6b656e20494420696e76616c69640000000000000000000000000000000060448201526064016105d8565b34678ac7230489e80000111561094e5760405162461bcd60e51b815260206004820152601d60248201527f46544d2076616c75652073656e74206973206e6f7420636f727265637400000060448201526064016105d8565b600c546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561099257600080fd5b505afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190612b5d565b6001600160a01b031614610a465760405162461bcd60e51b815260206004820152602a60248201527f4e46436954793a3a636c61696d3a204e6f74207468652046616e746f6d4e756d60448201527f62657273206f776e65720000000000000000000000000000000000000000000060648201526084016105d8565b600e5460ff16610a985760405162461bcd60e51b815260206004820152601460248201527f4d696e7420686173206e6f74207374617274656400000000000000000000000060448201526064016105d8565b6040805161016081018252600080825260208201819052600c54835163667386f760e01b81526004810186905291938301916001600160a01b039091169063667386f79060240160206040518083038186803b158015610af757600080fd5b505afa158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f9190612de0565b8152600c546040516322a8007f60e21b8152600481018690526020909201916001600160a01b0390911690638aa001fc9060240160206040518083038186803b158015610b7b57600080fd5b505afa158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb39190612de0565b8152600c5460405163fa7f71b160e01b8152600481018690526020909201916001600160a01b039091169063fa7f71b19060240160206040518083038186803b158015610bff57600080fd5b505afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c379190612de0565b8152600c54604051634f614dc160e11b8152600481018690526020909201916001600160a01b0390911690639ec29b829060240160206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190612de0565b8152600c5460405163059281d360e11b8152600481018690526020909201916001600160a01b0390911690630b2503a69060240160206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190612de0565b8152600c5460405163216cec3b60e11b8152600481018690526020909201916001600160a01b03909116906342d9d8769060240160206040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc39190612de0565b8152600c546040516346490e8360e11b8152600481018690526020909201916001600160a01b0390911690638c921d069060240160206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190612de0565b8152600c54604051639347e43f60e01b8152600481018690526020909201916001600160a01b0390911690639347e43f9060240160206040518083038186803b158015610e9357600080fd5b505afa158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190612de0565b8152602001600115158152509050600060068260a00151836080015184606001518560400151610efb9190613438565b610f059190613438565b610f0f9190613438565b610f19919061351c565b9050600060068361012001518461010001518560e001518660c00151610f3f9190613438565b610f499190613438565b610f539190613438565b610f5d919061351c565b9050610f6a826001613438565b8352610f77816001613438565b60208481019182526000868152600d90915260409081902085518155915160018301558401516002820155606084015160038201556080840151600482015560a0840151600582015560c0840151600682015560e0840151600782015561010084015160088201556101208401516009820155610140840151600a909101805460ff191691151591909117905561100e3385611af6565b50506001600b555050565b61070e838383604051806020016040528060008152506113cf565b600061103f60085490565b82106110b35760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016105d8565b600882815481106110c6576110c6613572565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806104cb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016105d8565b60006001600160a01b0382166111e15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016105d8565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146112575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b6112616000611b14565b565b600a546001600160a01b031633146112bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b6040514790733f6bd8a9acb724f62d04fec554478ee90f15c1c69082156108fc029083906000818181858888f193505050506112f857600080fd5b50565b6060600180546104e0906134c6565b6001600160a01b0382163314156113635760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d8565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6113d93383611840565b61144b5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105d8565b61145784848484611b66565b50505050565b6000818152600d60205260409020600a015460609060ff166114e75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016105d8565b6000828152600d60209081526040808320815161016081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff1615156101408201529061158661158183611be4565b611cfb565b9050600061159385611e63565b6040516020016115a3919061308d565b604051602081830303815290604052905060006115bf86611e63565b6040516020016115cf91906130d2565b604051602081830303815290604052905061160c8282856040516020016115f893929190612f0b565b604051602081830303815290604052611cfb565b60405160200161161c9190613124565b604051602081830303815290604052945050505050919050565b600a546001600160a01b031633146116905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b600e805460ff1916911515919091179055565b600a546001600160a01b031633146116fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b6001600160a01b0381166117795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105d8565b6112f881611b14565b60006001600160e01b031982166380ac58cd60e01b14806117b357506001600160e01b03198216635b5e139f60e01b145b806104cb57506301ffc9a760e01b6001600160e01b03198316146104cb565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611807826110d8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166118b95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105d8565b60006118c4836110d8565b9050806001600160a01b0316846001600160a01b031614806118ff5750836001600160a01b03166118f484610563565b6001600160a01b0316145b8061192f57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661194a826110d8565b6001600160a01b0316146119c65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016105d8565b6001600160a01b038216611a285760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d8565b611a33838383611f79565b611a3e6000826117d2565b6001600160a01b0383166000908152600360205260408120805460019290611a67908490613483565b90915550506001600160a01b0382166000908152600360205260408120805460019290611a95908490613438565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611b10828260405180602001604052806000815250612031565b5050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b71848484611937565b611b7d848484846120af565b6114575760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016105d8565b6060611bf38260000151612207565b611c1573672a8f0a75441201597aa35895f588654c8ac00284602001516122b4565b611c34731a1cddd696c9159123678ce12426d45ca3f0174460026122b4565b611c43856040015160016123b6565b611c52866060015160026123b6565b611c61876080015160036123b6565b611c708860a0015160046123b6565b611c7f8960c0015160056123b6565b611c8e8a60e0015160066123b6565b611c9e8b610100015160076123b6565b611cae8c610120015160086123b6565b604051602001611cc19493929190612e8c565b60408051601f1981840301815290829052611ce59897969594939291602001613239565b6040516020818303038152906040529050919050565b6060815160001415611d1b57505060408051602081019091526000815290565b60006040518060600160405280604081526020016135ca6040913990506000600384516002611d4a9190613438565b611d549190613450565b611d5f906004613464565b90506000611d6e826020613438565b67ffffffffffffffff811115611d8657611d86613588565b6040519080825280601f01601f191660200182016040528015611db0576020820181803683370190505b509050818152600183018586518101602084015b81831015611e1e5760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b93820193909352600401611dc4565b600389510660018114611e385760028114611e4957611e55565b613d3d60f01b600119830152611e55565b603d60f81b6000198301525b509398975050505050505050565b606081611e875750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611eb15780611e9b81613501565b9150611eaa9050600a83613450565b9150611e8b565b60008167ffffffffffffffff811115611ecc57611ecc613588565b6040519080825280601f01601f191660200182016040528015611ef6576020820181803683370190505b5090505b841561192f57611f0b600183613483565b9150611f18600a8661351c565b611f23906030613438565b60f81b818381518110611f3857611f38613572565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f72600a86613450565b9450611efa565b6001600160a01b038316611fd457611fcf81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611ff7565b816001600160a01b0316836001600160a01b031614611ff757611ff7838261284b565b6001600160a01b03821661200e5761070e816128e8565b826001600160a01b0316826001600160a01b03161461070e5761070e8282612997565b61203b83836129db565b61204860008484846120af565b61070e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016105d8565b60006001600160a01b0384163b156121fc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120f3903390899088908890600401613390565b602060405180830381600087803b15801561210d57600080fd5b505af192505050801561213d575060408051601f3d908101601f1916820190925261213a91810190612d3c565b60015b6121e2573d80801561216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b5080516121da5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016105d8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061192f565b506001949350505050565b60608160041461222f576104cb7310c4b46d2cac8133db39110985ea7cbe474edff9836122b4565b735eb926e1ef8ed374ac80e2028f3d676aba6004e4634b5369af6040518163ffffffff1660e01b815260040160006040518083038186803b15801561227357600080fd5b505af4158015612287573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104cb9190810190612d59565b919050565b6060600080846001600160a01b03166122cc85611e63565b6040516020016122dc9190613054565b60408051601f198184030181526004835260248301918290526122fe91612e41565b60408051918290039091206020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199092169190911790525161234a9190612e41565b600060405180830381855afa9150503d8060008114612385576040519150601f19603f3d011682016040523d82523d6000602084013e61238a565b606091505b50915091508161239957600080fd5b808060200190518101906123ad9190612d59565b95945050505050565b606060006060600785101561251d5760048511156123ea5773f386eeac48bab1d0516bbbf78931eb3b10c0cbea9150612402565b7344fc71f15baf20f4cf90a7377f439567dad1c78d91505b600080836001600160a01b031661241888611e63565b6040516020016124289190613000565b6040516020818303038152906040528760405160240161244a91815260200190565b60408051601f19818403018152908290529161246591612e41565b60408051918290039091206020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909216919091179052516124b19190612e41565b600060405180830381855afa9150503d80600081146124ec576040519150601f19603f3d011682016040523d82523d6000602084013e6124f1565b606091505b50915091508161250057600080fd5b808060200190518101906125149190612d59565b925050506127f1565b84600714156125b557604051630ea65d6360e11b815260048101859052736d8433150377f0ebc23616b0fa3792e0ad24b22b90631d4cbac6906024015b60006040518083038186803b15801561257257600080fd5b505af4158015612586573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ae9190810190612d59565b90506127f1565b84600814156125f657604051631b03908360e21b815260048101859052731ec2897997453a5a00caf587697ca3958b21665890636c0e420c9060240161255a565b8460091415612637576040516305f23d5160e51b815260048101859052736dc8ceee14da31b0684eb719e5cf6df468ffcca19063be47aa209060240161255a565b84600a1415612678576040516398faf70760e01b8152600481018590527380871eccfa3033e9fc755c8b4633bf4d39f9e94c906398faf7079060240161255a565b84600b14156126b9576040516366d1fe3b60e11b81526004810185905273aa7ec4cae811213c0c353c3761b6a868946bb36a9063cda3fc769060240161255a565b84600c14156127f157600073dca5b43ca0bff140a162a1abae6bae6a43023e7263d2b224f16040518163ffffffff1660e01b815260040160006040518083038186803b15801561270857600080fd5b505af415801561271c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127449190810190612d59565b90506000736a8d5b2fd790619bb408c09b548715114bbc576563d2b224f16040518163ffffffff1660e01b815260040160006040518083038186803b15801561278c57600080fd5b505af41580156127a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c89190810190612d59565b905081816040516020016127dd929190612e5d565b604051602081830303815290604052925050505b60006127fe600186613483565b61280a9061012c613464565b90508161281682611e63565b61281f87611e63565b60405160200161283193929190613169565b604051602081830303815290604052935050505092915050565b6000600161285884611163565b6128629190613483565b6000838152600760205260409020549091508082146128b5576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906128fa90600190613483565b6000838152600960205260408120546008805493945090928490811061292257612922613572565b90600052602060002001549050806008838154811061294357612943613572565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061297b5761297b61355c565b6001900381819060005260206000200160009055905550505050565b60006129a283611163565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612a315760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d8565b6000818152600260205260409020546001600160a01b031615612a965760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d8565b612aa260008383611f79565b6001600160a01b0382166000908152600360205260408120805460019290612acb908490613438565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b803580151581146122af57600080fd5b600060208284031215612b4b57600080fd5b8135612b568161359e565b9392505050565b600060208284031215612b6f57600080fd5b8151612b568161359e565b60008060408385031215612b8d57600080fd5b8235612b988161359e565b91506020830135612ba88161359e565b809150509250929050565b600080600060608486031215612bc857600080fd5b8335612bd38161359e565b92506020840135612be38161359e565b929592945050506040919091013590565b60008060008060808587031215612c0a57600080fd5b8435612c158161359e565b93506020850135612c258161359e565b925060408501359150606085013567ffffffffffffffff811115612c4857600080fd5b8501601f81018713612c5957600080fd5b8035612c6c612c6782613410565b6133df565b818152886020838501011115612c8157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215612cb657600080fd5b8235612cc18161359e565b9150612ccf60208401612b29565b90509250929050565b60008060408385031215612ceb57600080fd5b8235612cf68161359e565b946020939093013593505050565b600060208284031215612d1657600080fd5b612b5682612b29565b600060208284031215612d3157600080fd5b8135612b56816135b3565b600060208284031215612d4e57600080fd5b8151612b56816135b3565b600060208284031215612d6b57600080fd5b815167ffffffffffffffff811115612d8257600080fd5b8201601f81018413612d9357600080fd5b8051612da1612c6782613410565b818152856020838501011115612db657600080fd5b6123ad82602083016020860161349a565b600060208284031215612dd957600080fd5b5035919050565b600060208284031215612df257600080fd5b5051919050565b60008151808452612e1181602086016020860161349a565b601f01601f19169290920160200192915050565b60008151612e3781856020860161349a565b9290920192915050565b60008251612e5381846020870161349a565b9190910192915050565b60008351612e6f81846020880161349a565b835190830190612e8381836020880161349a565b01949350505050565b60008551612e9e818460208a0161349a565b855190830190612eb2818360208a0161349a565b8551910190612ec581836020890161349a565b8451910190612ed881836020880161349a565b7f3c2f7376673e000000000000000000000000000000000000000000000000000091019081526006019695505050505050565b7f7b226e616d65223a220000000000000000000000000000000000000000000000815260008451612f4381600985016020890161349a565b7f222c20226465736372697074696f6e223a2200000000000000000000000000006009918401918201528451612f8081601b84016020890161349a565b7f222c2022696d616765223a202200000000000000000000000000000000000000601b92909101918201527f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000060288201528351612fe481604284016020880161349a565b61227d60f01b6042929091019182015260440195945050505050565b646974656d5f60d81b81526000825161302081600585016020870161349a565b7f2875696e743235362900000000000000000000000000000000000000000000006005939091019283015250600e01919050565b646974656d5f60d81b81526000825161307481600585016020870161349a565b61282960f01b6005939091019283015250600701919050565b7f4e464349545920230000000000000000000000000000000000000000000000008152600082516130c581600885016020870161349a565b9190910160080192915050565b7f436974792067656e6572617465642066726f6d2046616e746f6d204e756d62658152637273202360e01b60208201526000825161311781602485016020870161349a565b9190910160240192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161315c81601d85016020870161349a565b91909101601d0192915050565b7f3c646566733e00000000000000000000000000000000000000000000000000008152600084516131a181600685016020890161349a565b7f3c2f646566733e3c75736520793d223230302220783d2200000000000000000060069184019182015284516131de81601d84016020890161349a565b7f2220687265663d22230000000000000000000000000000000000000000000000601d9290910191820152835161321c81602684016020880161349a565b6211179f60e91b6026929091019182015260290195945050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f73766722207072657365727665417370656374526174696f3d2270726560208201527f7365727665222076696577426f783d223020302032343030203134303022206560408201527f6e61626c652d6261636b67726f756e643d226e6577203020302032343030203160608201527f343030223e0000000000000000000000000000000000000000000000000000006080820152600060858a5161330a8183860160208f0161349a565b8a51908401906133208184840160208f0161349a565b8a519101906133358184840160208e0161349a565b895191019061334a8184840160208d0161349a565b885191019061335f8184840160208c0161349a565b61337f61337961337385848601018b612e25565b89612e25565b87612e25565b9d9c50505050505050505050505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526133c26080830184612df9565b9695505050505050565b602081526000612b566020830184612df9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561340857613408613588565b604052919050565b600067ffffffffffffffff82111561342a5761342a613588565b50601f01601f191660200190565b6000821982111561344b5761344b613530565b500190565b60008261345f5761345f613546565b500490565b600081600019048311821515161561347e5761347e613530565b500290565b60008282101561349557613495613530565b500390565b60005b838110156134b557818101518382015260200161349d565b838111156114575750506000910152565b600181811c908216806134da57607f821691505b602082108114156134fb57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561351557613515613530565b5060010190565b60008261352b5761352b613546565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112f857600080fd5b6001600160e01b0319811681146112f857600080fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c6343000806000a000000000000000000000000df619176953e4ae0319514fe5c01404bbcd82d54
Deployed Bytecode
0x60806040526004361061018b5760003560e01c80636c14aac2116100d6578063a22cb4651161007f578063e0fe711211610059578063e0fe71121461041d578063e985e9c51461043d578063f2fde38b1461048657600080fd5b8063a22cb465146103bd578063b88d4fde146103dd578063c87b56dd146103fd57600080fd5b8063853828b6116100b0578063853828b6146103825780638da5cb5b1461038a57806395d89b41146103a857600080fd5b80636c14aac21461032d57806370a082311461034d578063715018a61461036d57600080fd5b806323b872dd1161013857806342842e0e1161011257806342842e0e146102cd5780634f6ccce7146102ed5780636352211e1461030d57600080fd5b806323b872dd1461027a5780632f745c591461029a578063379607f5146102ba57600080fd5b8063095ea7b311610169578063095ea7b31461021f57806318160ddd146102415780631869e7d41461026057600080fd5b806301ffc9a71461019057806306fdde03146101c5578063081812fc146101e7575b600080fd5b34801561019c57600080fd5b506101b06101ab366004612d1f565b6104a6565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101da6104d1565b6040516101bc91906133cc565b3480156101f357600080fd5b50610207610202366004612dc7565b610563565b6040516001600160a01b0390911681526020016101bc565b34801561022b57600080fd5b5061023f61023a366004612cd8565b6105fd565b005b34801561024d57600080fd5b506008545b6040519081526020016101bc565b34801561026c57600080fd5b50600e546101b09060ff1681565b34801561028657600080fd5b5061023f610295366004612bb3565b610713565b3480156102a657600080fd5b506102526102b5366004612cd8565b61079a565b61023f6102c8366004612dc7565b610842565b3480156102d957600080fd5b5061023f6102e8366004612bb3565b611019565b3480156102f957600080fd5b50610252610308366004612dc7565b611034565b34801561031957600080fd5b50610207610328366004612dc7565b6110d8565b34801561033957600080fd5b50600c54610207906001600160a01b031681565b34801561035957600080fd5b50610252610368366004612b39565b611163565b34801561037957600080fd5b5061023f6111fd565b61023f611263565b34801561039657600080fd5b50600a546001600160a01b0316610207565b3480156103b457600080fd5b506101da6112fb565b3480156103c957600080fd5b5061023f6103d8366004612ca3565b61130a565b3480156103e957600080fd5b5061023f6103f8366004612bf4565b6113cf565b34801561040957600080fd5b506101da610418366004612dc7565b61145d565b34801561042957600080fd5b5061023f610438366004612d04565b611636565b34801561044957600080fd5b506101b0610458366004612b7a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561049257600080fd5b5061023f6104a1366004612b39565b6116a3565b60006001600160e01b0319821663780e9d6360e01b14806104cb57506104cb82611782565b92915050565b6060600080546104e0906134c6565b80601f016020809104026020016040519081016040528092919081815260200182805461050c906134c6565b80156105595780601f1061052e57610100808354040283529160200191610559565b820191906000526020600020905b81548152906001019060200180831161053c57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166105e15760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610608826110d8565b9050806001600160a01b0316836001600160a01b031614156106765760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105d8565b336001600160a01b038216148061069257506106928133610458565b6107045760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105d8565b61070e83836117d2565b505050565b61071d3382611840565b61078f5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105d8565b61070e838383611937565b60006107a583611163565b82106108195760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016105d8565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600b5414156108955760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016105d8565b6002600b5580158015906108aa5750611a0a81105b6108f65760405162461bcd60e51b815260206004820152601060248201527f546f6b656e20494420696e76616c69640000000000000000000000000000000060448201526064016105d8565b34678ac7230489e80000111561094e5760405162461bcd60e51b815260206004820152601d60248201527f46544d2076616c75652073656e74206973206e6f7420636f727265637400000060448201526064016105d8565b600c546040516331a9108f60e11b81526004810183905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561099257600080fd5b505afa1580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190612b5d565b6001600160a01b031614610a465760405162461bcd60e51b815260206004820152602a60248201527f4e46436954793a3a636c61696d3a204e6f74207468652046616e746f6d4e756d60448201527f62657273206f776e65720000000000000000000000000000000000000000000060648201526084016105d8565b600e5460ff16610a985760405162461bcd60e51b815260206004820152601460248201527f4d696e7420686173206e6f74207374617274656400000000000000000000000060448201526064016105d8565b6040805161016081018252600080825260208201819052600c54835163667386f760e01b81526004810186905291938301916001600160a01b039091169063667386f79060240160206040518083038186803b158015610af757600080fd5b505afa158015610b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2f9190612de0565b8152600c546040516322a8007f60e21b8152600481018690526020909201916001600160a01b0390911690638aa001fc9060240160206040518083038186803b158015610b7b57600080fd5b505afa158015610b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb39190612de0565b8152600c5460405163fa7f71b160e01b8152600481018690526020909201916001600160a01b039091169063fa7f71b19060240160206040518083038186803b158015610bff57600080fd5b505afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c379190612de0565b8152600c54604051634f614dc160e11b8152600481018690526020909201916001600160a01b0390911690639ec29b829060240160206040518083038186803b158015610c8357600080fd5b505afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb9190612de0565b8152600c5460405163059281d360e11b8152600481018690526020909201916001600160a01b0390911690630b2503a69060240160206040518083038186803b158015610d0757600080fd5b505afa158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f9190612de0565b8152600c5460405163216cec3b60e11b8152600481018690526020909201916001600160a01b03909116906342d9d8769060240160206040518083038186803b158015610d8b57600080fd5b505afa158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc39190612de0565b8152600c546040516346490e8360e11b8152600481018690526020909201916001600160a01b0390911690638c921d069060240160206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e479190612de0565b8152600c54604051639347e43f60e01b8152600481018690526020909201916001600160a01b0390911690639347e43f9060240160206040518083038186803b158015610e9357600080fd5b505afa158015610ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecb9190612de0565b8152602001600115158152509050600060068260a00151836080015184606001518560400151610efb9190613438565b610f059190613438565b610f0f9190613438565b610f19919061351c565b9050600060068361012001518461010001518560e001518660c00151610f3f9190613438565b610f499190613438565b610f539190613438565b610f5d919061351c565b9050610f6a826001613438565b8352610f77816001613438565b60208481019182526000868152600d90915260409081902085518155915160018301558401516002820155606084015160038201556080840151600482015560a0840151600582015560c0840151600682015560e0840151600782015561010084015160088201556101208401516009820155610140840151600a909101805460ff191691151591909117905561100e3385611af6565b50506001600b555050565b61070e838383604051806020016040528060008152506113cf565b600061103f60085490565b82106110b35760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016105d8565b600882815481106110c6576110c6613572565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806104cb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016105d8565b60006001600160a01b0382166111e15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016105d8565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146112575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b6112616000611b14565b565b600a546001600160a01b031633146112bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b6040514790733f6bd8a9acb724f62d04fec554478ee90f15c1c69082156108fc029083906000818181858888f193505050506112f857600080fd5b50565b6060600180546104e0906134c6565b6001600160a01b0382163314156113635760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d8565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6113d93383611840565b61144b5760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105d8565b61145784848484611b66565b50505050565b6000818152600d60205260409020600a015460609060ff166114e75760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016105d8565b6000828152600d60209081526040808320815161016081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff1615156101408201529061158661158183611be4565b611cfb565b9050600061159385611e63565b6040516020016115a3919061308d565b604051602081830303815290604052905060006115bf86611e63565b6040516020016115cf91906130d2565b604051602081830303815290604052905061160c8282856040516020016115f893929190612f0b565b604051602081830303815290604052611cfb565b60405160200161161c9190613124565b604051602081830303815290604052945050505050919050565b600a546001600160a01b031633146116905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b600e805460ff1916911515919091179055565b600a546001600160a01b031633146116fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105d8565b6001600160a01b0381166117795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105d8565b6112f881611b14565b60006001600160e01b031982166380ac58cd60e01b14806117b357506001600160e01b03198216635b5e139f60e01b145b806104cb57506301ffc9a760e01b6001600160e01b03198316146104cb565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611807826110d8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166118b95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105d8565b60006118c4836110d8565b9050806001600160a01b0316846001600160a01b031614806118ff5750836001600160a01b03166118f484610563565b6001600160a01b0316145b8061192f57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661194a826110d8565b6001600160a01b0316146119c65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016105d8565b6001600160a01b038216611a285760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d8565b611a33838383611f79565b611a3e6000826117d2565b6001600160a01b0383166000908152600360205260408120805460019290611a67908490613483565b90915550506001600160a01b0382166000908152600360205260408120805460019290611a95908490613438565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611b10828260405180602001604052806000815250612031565b5050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611b71848484611937565b611b7d848484846120af565b6114575760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016105d8565b6060611bf38260000151612207565b611c1573672a8f0a75441201597aa35895f588654c8ac00284602001516122b4565b611c34731a1cddd696c9159123678ce12426d45ca3f0174460026122b4565b611c43856040015160016123b6565b611c52866060015160026123b6565b611c61876080015160036123b6565b611c708860a0015160046123b6565b611c7f8960c0015160056123b6565b611c8e8a60e0015160066123b6565b611c9e8b610100015160076123b6565b611cae8c610120015160086123b6565b604051602001611cc19493929190612e8c565b60408051601f1981840301815290829052611ce59897969594939291602001613239565b6040516020818303038152906040529050919050565b6060815160001415611d1b57505060408051602081019091526000815290565b60006040518060600160405280604081526020016135ca6040913990506000600384516002611d4a9190613438565b611d549190613450565b611d5f906004613464565b90506000611d6e826020613438565b67ffffffffffffffff811115611d8657611d86613588565b6040519080825280601f01601f191660200182016040528015611db0576020820181803683370190505b509050818152600183018586518101602084015b81831015611e1e5760039283018051603f601282901c811687015160f890811b8552600c83901c8216880151811b6001860152600683901c8216880151811b60028601529116860151901b93820193909352600401611dc4565b600389510660018114611e385760028114611e4957611e55565b613d3d60f01b600119830152611e55565b603d60f81b6000198301525b509398975050505050505050565b606081611e875750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611eb15780611e9b81613501565b9150611eaa9050600a83613450565b9150611e8b565b60008167ffffffffffffffff811115611ecc57611ecc613588565b6040519080825280601f01601f191660200182016040528015611ef6576020820181803683370190505b5090505b841561192f57611f0b600183613483565b9150611f18600a8661351c565b611f23906030613438565b60f81b818381518110611f3857611f38613572565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611f72600a86613450565b9450611efa565b6001600160a01b038316611fd457611fcf81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611ff7565b816001600160a01b0316836001600160a01b031614611ff757611ff7838261284b565b6001600160a01b03821661200e5761070e816128e8565b826001600160a01b0316826001600160a01b03161461070e5761070e8282612997565b61203b83836129db565b61204860008484846120af565b61070e5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016105d8565b60006001600160a01b0384163b156121fc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906120f3903390899088908890600401613390565b602060405180830381600087803b15801561210d57600080fd5b505af192505050801561213d575060408051601f3d908101601f1916820190925261213a91810190612d3c565b60015b6121e2573d80801561216b576040519150601f19603f3d011682016040523d82523d6000602084013e612170565b606091505b5080516121da5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60648201526084016105d8565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061192f565b506001949350505050565b60608160041461222f576104cb7310c4b46d2cac8133db39110985ea7cbe474edff9836122b4565b735eb926e1ef8ed374ac80e2028f3d676aba6004e4634b5369af6040518163ffffffff1660e01b815260040160006040518083038186803b15801561227357600080fd5b505af4158015612287573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104cb9190810190612d59565b919050565b6060600080846001600160a01b03166122cc85611e63565b6040516020016122dc9190613054565b60408051601f198184030181526004835260248301918290526122fe91612e41565b60408051918290039091206020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199092169190911790525161234a9190612e41565b600060405180830381855afa9150503d8060008114612385576040519150601f19603f3d011682016040523d82523d6000602084013e61238a565b606091505b50915091508161239957600080fd5b808060200190518101906123ad9190612d59565b95945050505050565b606060006060600785101561251d5760048511156123ea5773f386eeac48bab1d0516bbbf78931eb3b10c0cbea9150612402565b7344fc71f15baf20f4cf90a7377f439567dad1c78d91505b600080836001600160a01b031661241888611e63565b6040516020016124289190613000565b6040516020818303038152906040528760405160240161244a91815260200190565b60408051601f19818403018152908290529161246591612e41565b60408051918290039091206020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909216919091179052516124b19190612e41565b600060405180830381855afa9150503d80600081146124ec576040519150601f19603f3d011682016040523d82523d6000602084013e6124f1565b606091505b50915091508161250057600080fd5b808060200190518101906125149190612d59565b925050506127f1565b84600714156125b557604051630ea65d6360e11b815260048101859052736d8433150377f0ebc23616b0fa3792e0ad24b22b90631d4cbac6906024015b60006040518083038186803b15801561257257600080fd5b505af4158015612586573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ae9190810190612d59565b90506127f1565b84600814156125f657604051631b03908360e21b815260048101859052731ec2897997453a5a00caf587697ca3958b21665890636c0e420c9060240161255a565b8460091415612637576040516305f23d5160e51b815260048101859052736dc8ceee14da31b0684eb719e5cf6df468ffcca19063be47aa209060240161255a565b84600a1415612678576040516398faf70760e01b8152600481018590527380871eccfa3033e9fc755c8b4633bf4d39f9e94c906398faf7079060240161255a565b84600b14156126b9576040516366d1fe3b60e11b81526004810185905273aa7ec4cae811213c0c353c3761b6a868946bb36a9063cda3fc769060240161255a565b84600c14156127f157600073dca5b43ca0bff140a162a1abae6bae6a43023e7263d2b224f16040518163ffffffff1660e01b815260040160006040518083038186803b15801561270857600080fd5b505af415801561271c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127449190810190612d59565b90506000736a8d5b2fd790619bb408c09b548715114bbc576563d2b224f16040518163ffffffff1660e01b815260040160006040518083038186803b15801561278c57600080fd5b505af41580156127a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127c89190810190612d59565b905081816040516020016127dd929190612e5d565b604051602081830303815290604052925050505b60006127fe600186613483565b61280a9061012c613464565b90508161281682611e63565b61281f87611e63565b60405160200161283193929190613169565b604051602081830303815290604052935050505092915050565b6000600161285884611163565b6128629190613483565b6000838152600760205260409020549091508082146128b5576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008546000906128fa90600190613483565b6000838152600960205260408120546008805493945090928490811061292257612922613572565b90600052602060002001549050806008838154811061294357612943613572565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061297b5761297b61355c565b6001900381819060005260206000200160009055905550505050565b60006129a283611163565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612a315760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d8565b6000818152600260205260409020546001600160a01b031615612a965760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d8565b612aa260008383611f79565b6001600160a01b0382166000908152600360205260408120805460019290612acb908490613438565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b803580151581146122af57600080fd5b600060208284031215612b4b57600080fd5b8135612b568161359e565b9392505050565b600060208284031215612b6f57600080fd5b8151612b568161359e565b60008060408385031215612b8d57600080fd5b8235612b988161359e565b91506020830135612ba88161359e565b809150509250929050565b600080600060608486031215612bc857600080fd5b8335612bd38161359e565b92506020840135612be38161359e565b929592945050506040919091013590565b60008060008060808587031215612c0a57600080fd5b8435612c158161359e565b93506020850135612c258161359e565b925060408501359150606085013567ffffffffffffffff811115612c4857600080fd5b8501601f81018713612c5957600080fd5b8035612c6c612c6782613410565b6133df565b818152886020838501011115612c8157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215612cb657600080fd5b8235612cc18161359e565b9150612ccf60208401612b29565b90509250929050565b60008060408385031215612ceb57600080fd5b8235612cf68161359e565b946020939093013593505050565b600060208284031215612d1657600080fd5b612b5682612b29565b600060208284031215612d3157600080fd5b8135612b56816135b3565b600060208284031215612d4e57600080fd5b8151612b56816135b3565b600060208284031215612d6b57600080fd5b815167ffffffffffffffff811115612d8257600080fd5b8201601f81018413612d9357600080fd5b8051612da1612c6782613410565b818152856020838501011115612db657600080fd5b6123ad82602083016020860161349a565b600060208284031215612dd957600080fd5b5035919050565b600060208284031215612df257600080fd5b5051919050565b60008151808452612e1181602086016020860161349a565b601f01601f19169290920160200192915050565b60008151612e3781856020860161349a565b9290920192915050565b60008251612e5381846020870161349a565b9190910192915050565b60008351612e6f81846020880161349a565b835190830190612e8381836020880161349a565b01949350505050565b60008551612e9e818460208a0161349a565b855190830190612eb2818360208a0161349a565b8551910190612ec581836020890161349a565b8451910190612ed881836020880161349a565b7f3c2f7376673e000000000000000000000000000000000000000000000000000091019081526006019695505050505050565b7f7b226e616d65223a220000000000000000000000000000000000000000000000815260008451612f4381600985016020890161349a565b7f222c20226465736372697074696f6e223a2200000000000000000000000000006009918401918201528451612f8081601b84016020890161349a565b7f222c2022696d616765223a202200000000000000000000000000000000000000601b92909101918201527f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000060288201528351612fe481604284016020880161349a565b61227d60f01b6042929091019182015260440195945050505050565b646974656d5f60d81b81526000825161302081600585016020870161349a565b7f2875696e743235362900000000000000000000000000000000000000000000006005939091019283015250600e01919050565b646974656d5f60d81b81526000825161307481600585016020870161349a565b61282960f01b6005939091019283015250600701919050565b7f4e464349545920230000000000000000000000000000000000000000000000008152600082516130c581600885016020870161349a565b9190910160080192915050565b7f436974792067656e6572617465642066726f6d2046616e746f6d204e756d62658152637273202360e01b60208201526000825161311781602485016020870161349a565b9190910160240192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161315c81601d85016020870161349a565b91909101601d0192915050565b7f3c646566733e00000000000000000000000000000000000000000000000000008152600084516131a181600685016020890161349a565b7f3c2f646566733e3c75736520793d223230302220783d2200000000000000000060069184019182015284516131de81601d84016020890161349a565b7f2220687265663d22230000000000000000000000000000000000000000000000601d9290910191820152835161321c81602684016020880161349a565b6211179f60e91b6026929091019182015260290195945050505050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f73766722207072657365727665417370656374526174696f3d2270726560208201527f7365727665222076696577426f783d223020302032343030203134303022206560408201527f6e61626c652d6261636b67726f756e643d226e6577203020302032343030203160608201527f343030223e0000000000000000000000000000000000000000000000000000006080820152600060858a5161330a8183860160208f0161349a565b8a51908401906133208184840160208f0161349a565b8a519101906133358184840160208e0161349a565b895191019061334a8184840160208d0161349a565b885191019061335f8184840160208c0161349a565b61337f61337961337385848601018b612e25565b89612e25565b87612e25565b9d9c50505050505050505050505050565b60006001600160a01b038087168352808616602084015250836040830152608060608301526133c26080830184612df9565b9695505050505050565b602081526000612b566020830184612df9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561340857613408613588565b604052919050565b600067ffffffffffffffff82111561342a5761342a613588565b50601f01601f191660200190565b6000821982111561344b5761344b613530565b500190565b60008261345f5761345f613546565b500490565b600081600019048311821515161561347e5761347e613530565b500290565b60008282101561349557613495613530565b500390565b60005b838110156134b557818101518382015260200161349d565b838111156114575750506000910152565b600181811c908216806134da57607f821691505b602082108114156134fb57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561351557613515613530565b5060010190565b60008261352b5761352b613546565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112f857600080fd5b6001600160e01b0319811681146112f857600080fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c6343000806000a
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.