<svg width="4532" height="2159pt" viewBox="0 0 3399.03 2158.6" xmlns="http://www.w3.org/2000/svg"><g class="graph"><path fill="#fff" stroke="transparent" d="M0 2158.6V0h3399.034v2158.6H0z"/><g class="node"><path fill="#f2f2f2" stroke="#000" d="M473.698 1040.9V916.1h946.377v124.8H473.698z"/><text text-anchor="middle" x="942.887" y="-1221.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Interface&gt;&gt;</text><text text-anchor="middle" x="942.887" y="-1205.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ChainlinkRequestInterface</text><path fill="none" stroke="#000" d="M473.698 957.7h946.377M473.698 982.5h946.377"/><text x="477.698" y="-1155.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">External:</text><text x="477.698" y="-1138.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">oracleRequest(sender: address, payment: uint256, id: bytes32, callbackAddress: address, callbackFunctionId: bytes4, nonce: uint256, version: uint256, data: bytes)</text><text x="477.698" y="-1121.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">cancelOracleRequest(requestId: bytes32, payment: uint256, callbackFunctionId: bytes4, expiration: uint256)</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2507.412 381.3V4.5h356.95v376.8h-356.95z"/><text text-anchor="middle" x="2681.887" y="-2133.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Library&gt;&gt;</text><text text-anchor="middle" x="2681.887" y="-2116.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Buffer</text><path fill="none" stroke="#000" d="M2507.412 46.1h356.95M2507.412 70.9h356.95"/><text x="2511.412" y="-2067.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="2511.412" y="-2050.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">resize(buf: buffer, capacity: uint)</text><text x="2511.412" y="-2033.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">max(a: uint, b: uint): uint</text><text x="2511.412" y="-2016.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">write(buf: buffer, off: uint, data: bytes32, len: uint): buffer</text><text x="2511.412" y="-1999.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">writeInt(buf: buffer, off: uint, data: uint, len: uint): buffer</text><text x="2511.412" y="-1983.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="2511.412" y="-1966.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">writeUint8(buf: buffer, off: uint, data: uint8): buffer</text><text x="2511.412" y="-1949.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">init(buf: buffer, capacity: uint): buffer</text><text x="2511.412" y="-1932.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">truncate(buf: buffer): buffer</text><text x="2511.412" y="-1915.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">write(buf: buffer, off: uint, data: bytes, len: uint): buffer</text><text x="2511.412" y="-1899.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">append(buf: buffer, data: bytes, len: uint): buffer</text><text x="2511.412" y="-1882.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">append(buf: buffer, data: bytes): buffer</text><text x="2511.412" y="-1865.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">fromBytes(b: bytes): buffer</text><text x="2511.412" y="-1848.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">appendUint8(buf: buffer, data: uint8): buffer</text><text x="2511.412" y="-1831.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">writeBytes20(buf: buffer, off: uint, data: bytes20): buffer</text><text x="2511.412" y="-1815.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">appendBytes20(buf: buffer, data: bytes20): buffer</text><text x="2511.412" y="-1798.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">appendBytes32(buf: buffer, data: bytes32): buffer</text><text x="2511.412" y="-1781.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">appendInt(buf: buffer, data: uint, len: uint): buffer</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2639.981 648.3v-83.2h91.812v83.2h-91.812z"/><text text-anchor="middle" x="2681.887" y="-1572.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;struct&gt;&gt;</text><text text-anchor="middle" x="2681.887" y="-1556.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">buffer</text><path fill="none" stroke="#000" d="M2639.981 606.7h91.812"/><text x="2643.981" y="-1531.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">buf: bytes</text><text x="2643.981" y="-1514.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">capacity: uint</text></g><g class="edge" stroke="#000"><path fill="none" d="M2685.887 564.745V393.487"/><path d="M2685.887 393.42l4-6-4-6-4 6 4 6z"/></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2718.74 1091.3V865.7h658.294v225.6H2718.74z"/><text text-anchor="middle" x="3043.887" y="-1272.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Library&gt;&gt;</text><text text-anchor="middle" x="3043.887" y="-1255.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Chainlink</text><path fill="none" stroke="#000" d="M2718.74 907.3h658.294"/><text x="2722.74" y="-1230.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="2722.74" y="-1213.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">defaultBufferSize: uint256</text><path fill="none" stroke="#000" d="M2718.74 948.9h658.294"/><text x="2722.74" y="-1189.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="2722.74" y="-1172.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">initialize(self: Request, _id: bytes32, _callbackAddress: address, _callbackFunction: bytes4): Chainlink.Request</text><text x="2722.74" y="-1155.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setBuffer(self: Request, _data: bytes)</text><text x="2722.74" y="-1138.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">add(self: Request, _key: string, _value: string)</text><text x="2722.74" y="-1121.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">addBytes(self: Request, _key: string, _value: bytes)</text><text x="2722.74" y="-1105.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">addInt(self: Request, _key: string, _value: int256)</text><text x="2722.74" y="-1088.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">addUint(self: Request, _key: string, _value: uint256)</text><text x="2722.74" y="-1071.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">addStringArray(self: Request, _key: string, _values: string[])</text></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M3112.662 865.318c10.027-22.444 18.834-46.318 24.225-69.718 37.697-163.625 88.352-235.013 0-377.8-57.53-92.976-166.36-148.77-262.697-181.529"/><path d="M2872.988 239.56l-8.378-6.485 10.593-.155-2.215 6.64z"/></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M3377.09 1017.282c11.415-10.318 17.944-23.245 17.944-38.782 0-12.017-3.906-22.473-10.957-31.368"/><path d="M3381.401 949.396l-4.31-9.678 9.405 4.878-5.095 4.8z"/></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2749.926 795.1V418.3h377.921v376.8h-377.92z"/><text text-anchor="middle" x="2934.887" y="-1719.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Library&gt;&gt;</text><text text-anchor="middle" x="2934.887" y="-1702.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">CBOR</text><path fill="none" stroke="#000" d="M2749.926 459.9h377.921"/><text x="2753.926" y="-1678.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="2753.926" y="-1661.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_INT: uint8</text><text x="2753.926" y="-1644.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_NEGATIVE_INT: uint8</text><text x="2753.926" y="-1627.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_BYTES: uint8</text><text x="2753.926" y="-1610.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_STRING: uint8</text><text x="2753.926" y="-1594.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_ARRAY: uint8</text><text x="2753.926" y="-1577.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_MAP: uint8</text><text x="2753.926" y="-1560.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">MAJOR_TYPE_CONTENT_FREE: uint8</text><path fill="none" stroke="#000" d="M2749.926 602.3h377.921"/><text x="2753.926" y="-1535.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="2753.926" y="-1518.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeType(buf: Buffer.buffer, major: uint8, value: uint)</text><text x="2753.926" y="-1502.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeIndefiniteLengthType(buf: Buffer.buffer, major: uint8)</text><text x="2753.926" y="-1485.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="2753.926" y="-1468.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeUInt(buf: Buffer.buffer, value: uint)</text><text x="2753.926" y="-1451.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeInt(buf: Buffer.buffer, value: int)</text><text x="2753.926" y="-1434.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeBytes(buf: Buffer.buffer, value: bytes)</text><text x="2753.926" y="-1418.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeString(buf: Buffer.buffer, value: string)</text><text x="2753.926" y="-1401.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">startArray(buf: Buffer.buffer)</text><text x="2753.926" y="-1384.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">startMap(buf: Buffer.buffer)</text><text x="2753.926" y="-1367.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">endSequence(buf: Buffer.buffer)</text></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M3014.814 865.686l-17.748-60.535"/><path d="M2993.63 805.869l.545-10.58 6.172 8.61-6.717 1.97z"/></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2513.877 1559.9v-133.6h168.02v133.6h-168.02z"/><text text-anchor="middle" x="2593.887" y="-711.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;struct&gt;&gt;</text><text text-anchor="middle" x="2593.887" y="-694.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Request</text><path fill="none" stroke="#000" d="M2513.877 1467.9h168.02"/><text x="2517.877" y="-670.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">id: bytes32</text><text x="2517.877" y="-653.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">callbackAddress: address</text><text x="2517.877" y="-636.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">callbackFunctionId: bytes4</text><text x="2517.877" y="-619.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">nonce: uint256</text><text x="2517.877" y="-602.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">buf: Buffer.buffer</text></g><g class="edge" stroke="#000"><path fill="none" d="M2601.11 1426.12c6.738-72.61 27.317-188.32 89.777-264.72 19.262-23.56 42.35-44.407 67.397-62.78"/><path d="M2758.588 1098.404l7.208-.229 2.562-6.74-7.208.228-2.562 6.74z"/></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M1437.722 1032.5v-108h270.33v108h-270.33z"/><text text-anchor="middle" x="1568.887" y="-1213.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Abstract&gt;&gt;</text><text text-anchor="middle" x="1568.887" y="-1196.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ENSResolver</text><path fill="none" stroke="#000" d="M1437.722 966.1h270.33M1437.722 990.9h270.33"/><text x="1441.722" y="-1147.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Public:</text><text x="1441.722" y="-1130.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;abstract&gt;&gt; addr(node: bytes32): address</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M1725.94 1124.9V832.1h423.893v292.8H1725.94z"/><text text-anchor="middle" x="1933.887" y="-1305.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Interface&gt;&gt;</text><text text-anchor="middle" x="1933.887" y="-1289.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ENSInterface</text><path fill="none" stroke="#000" d="M1725.94 873.7h423.893M1725.94 898.5h423.893"/><text x="1729.94" y="-1239.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">External:</text><text x="1729.94" y="-1222.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setSubnodeOwner(node: bytes32, label: bytes32, owner: address)</text><text x="1729.94" y="-1205.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setResolver(node: bytes32, resolver: address)</text><text x="1729.94" y="-1189.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setOwner(node: bytes32, owner: address)</text><text x="1729.94" y="-1172.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setTTL(node: bytes32, ttl: uint64)</text><text x="1729.94" y="-1155.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">owner(node: bytes32): address</text><text x="1729.94" y="-1138.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">resolver(node: bytes32): address</text><text x="1729.94" y="-1121.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ttl(node: bytes32): uint64</text><text x="1729.94" y="-1105.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Public:</text><text x="1729.94" y="-1088.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; NewOwner(node: bytes32, label: bytes32, owner: address)</text><text x="1729.94" y="-1071.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; Transfer(node: bytes32, owner: address)</text><text x="1729.94" y="-1054.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; NewResolver(node: bytes32, resolver: address)</text><text x="1729.94" y="-1037.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; NewTTL(node: bytes32, ttl: uint64)</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M4 1124.9V832.1h451.774v292.8H4z"/><text text-anchor="middle" x="225.887" y="-1305.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Interface&gt;&gt;</text><text text-anchor="middle" x="225.887" y="-1289.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">LinkTokenInterface</text><path fill="none" stroke="#000" d="M4 873.7h451.774M4 898.5h451.774"/><text x="8" y="-1239.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">External:</text><text x="8" y="-1222.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">name(): (tokenName: string)</text><text x="8" y="-1205.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">allowance(owner: address, spender: address): (success: bool)</text><text x="8" y="-1189.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">balanceOf(owner: address): (balance: uint256)</text><text x="8" y="-1172.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">decimals(): (decimalPlaces: uint8)</text><text x="8" y="-1155.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">decreaseApproval(spender: address, addedValue: uint256): (success: bool)</text><text x="8" y="-1138.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">increaseApproval(spender: address, subtractedValue: uint256)</text><text x="8" y="-1121.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">approve(spender: address, value: uint256): (success: bool)</text><text x="8" y="-1105.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">symbol(): (tokenSymbol: string)</text><text x="8" y="-1088.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">totalSupply(): (totalTokensIssued: uint256)</text><text x="8" y="-1071.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">transfer(to: address, value: uint256): (success: bool)</text><text x="8" y="-1054.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">transferAndCall(to: address, value: uint256, data: bytes): (success: bool)</text><text x="8" y="-1037.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">transferFrom(from: address, to: address, value: uint256): (success: bool)</text></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M2823.677 418.266l-17.272-28.25"/><path d="M2803.355 391.737l-2.23-10.358 8.202 6.706-5.972 3.652z"/></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2167.808 1032.5v-108h246.157v108h-246.157z"/><text text-anchor="middle" x="2286.887" y="-1213.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Interface&gt;&gt;</text><text text-anchor="middle" x="2286.887" y="-1196.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ChainlinkRegistryInterface</text><path fill="none" stroke="#000" d="M2167.808 966.1h246.157M2167.808 990.9h246.157"/><text x="2171.808" y="-1147.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">External:</text><text x="2171.808" y="-1130.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">getChainlinkTokenAddress(): address</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2431.508 1057.7V899.3h268.758v158.4h-268.758z"/><text text-anchor="middle" x="2561.887" y="-1238.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;Library&gt;&gt;</text><text text-anchor="middle" x="2561.887" y="-1221.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">SafeMath</text><path fill="none" stroke="#000" d="M2431.508 940.9h268.758M2431.508 965.7h268.758"/><text x="2435.508" y="-1172.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="2435.508" y="-1155.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">mul(_a: uint256, _b: uint256): (c: uint256)</text><text x="2435.508" y="-1138.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">div(_a: uint256, _b: uint256): uint256</text><text x="2435.508" y="-1121.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">sub(_a: uint256, _b: uint256): uint256</text><text x="2435.508" y="-1105.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">add(_a: uint256, _b: uint256): (c: uint256)</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M1757.883 1824.3v-662.4h738.008v662.4h-738.008z"/><text text-anchor="middle" x="2122.887" y="-976.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ChainlinkClient</text><path fill="none" stroke="#000" d="M1757.883 1186.7h738.008"/><text x="1761.883" y="-951.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="1761.883" y="-934.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">AMOUNT_OVERRIDE: uint256</text><text x="1761.883" y="-917.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">SENDER_OVERRIDE: address</text><text x="1761.883" y="-900.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ARGS_VERSION: uint256</text><text x="1761.883" y="-884.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ENS_TOKEN_SUBNAME: bytes32</text><text x="1761.883" y="-867.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ENS_ORACLE_SUBNAME: bytes32</text><text x="1761.883" y="-850.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">CHAINLINK_REGISTRY: address</text><text x="1761.883" y="-833.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ens: ENSInterface</text><text x="1761.883" y="-816.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ensNode: bytes32</text><text x="1761.883" y="-800.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">link: LinkTokenInterface</text><text x="1761.883" y="-783.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">oracle: ChainlinkRequestInterface</text><text x="1761.883" y="-766.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">requests: uint256</text><text x="1761.883" y="-749.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">pendingRequests: mapping(bytes32=&gt;address)</text><text x="1761.883" y="-732.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="1761.883" y="-716.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">LINK: uint256</text><path fill="none" stroke="#000" d="M1757.883 1446.7h738.008"/><text x="1761.883" y="-691.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="1761.883" y="-674.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">encodeRequest(_req: Chainlink.Request): bytes</text><text x="1761.883" y="-657.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="1761.883" y="-640.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">chainlinkTokenAddress(): address</text><text x="1761.883" y="-624.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">buildChainlinkRequest(_specId: bytes32, _callbackAddress: address, _callbackFunctionSignature: bytes4): Chainlink.Request</text><text x="1761.883" y="-607.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">sendChainlinkRequestTo(_oracle: address, _req: Chainlink.Request, _payment: uint256): (requestId: bytes32)</text><text x="1761.883" y="-590.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">cancelChainlinkRequest(_requestId: bytes32, _payment: uint256, _callbackFunc: bytes4, _expiration: uint256)</text><text x="1761.883" y="-573.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setChainlinkOracle(_oracle: address)</text><text x="1761.883" y="-556.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setChainlinkToken(_link: address)</text><text x="1761.883" y="-540.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">sendChainlinkRequest(_req: Chainlink.Request, _payment: uint256): bytes32</text><text x="1761.883" y="-523.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">chainlinkOracleAddress(): address</text><text x="1761.883" y="-506.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">addChainlinkExternalRequest(_oracle: address, _requestId: bytes32)</text><text x="1761.883" y="-489.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">useChainlinkWithENS(_ens: address, _node: bytes32)</text><text x="1761.883" y="-472.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">updateChainlinkOracleWithENS()</text><text x="1761.883" y="-456.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">setPublicChainlinkToken()</text><text x="1761.883" y="-439.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">validateChainlinkCallback(_requestId: bytes32)</text><text x="1761.883" y="-422.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Public:</text><text x="1761.883" y="-405.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; ChainlinkRequested(id: bytes32)</text><text x="1761.883" y="-388.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; ChainlinkFulfilled(id: bytes32)</text><text x="1761.883" y="-372.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; ChainlinkCancelled(id: bytes32)</text><text x="1761.883" y="-355.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;modifier&gt;&gt; recordChainlinkFulfillment(_requestId: bytes32)</text><text x="1761.883" y="-338.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;modifier&gt;&gt; notPendingRequest(_requestId: bytes32)</text></g><g class="edge" stroke="#000"><path fill="none" d="M1757.573 1332.042L1099.374 1045"/><path d="M1097.861 1048.159l-7.767-7.206 10.566.79-2.799 6.416z"/></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M2496.048 1165.738a565.1 565.1 0 018.839-4.338c83.003-39.836 115.824-9.515 204-36 28.824-8.658 58.471-19.077 87.67-30.32"/><path d="M2795.432 1091.762l10.588-.361-8.052 6.885-2.536-6.524z"/></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M1757.618 1163.969a5748.806 5748.806 0 01-40.731-38.569c-28.66-27.417-59.555-58.692-85.351-85.319"/><path d="M1628.835 1042.324l-4.434-9.622 9.467 4.756-5.033 4.866z"/></g><g class="edge" stroke="#000"><path fill="none" d="M2005.187 1161.74l-9.994-27.21"/><path d="M1991.838 1135.548l-.162-10.593 6.733 8.18-6.57 2.413z"/></g><g class="edge" stroke="#000"><path fill="none" d="M1757.718 1351.976c-198.977-69.754-450.503-147.936-681.831-190.576-264.254-48.71-349.752 44.342-610.2-35.931"/><path d="M464.443 1128.747l-8.493-6.334 10.589-.345-2.096 6.679z"/></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M2232.49 1161.74l38.026-119.32"/><path d="M2267.236 1041.185l6.371-8.465.299 10.59-6.67-2.125z"/></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M2409.566 1161.74l81.77-95.852"/><path d="M2488.82 1063.447l9.152-5.336-3.827 9.879-5.326-4.543z"/></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2699.45 1605.9v-225.6h484.874v225.6H2699.45z"/><text text-anchor="middle" x="2937.887" y="-757.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Ownable</text><path fill="none" stroke="#000" d="M2699.45 1405.1h484.874"/><text x="2703.45" y="-732.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Public:</text><text x="2703.45" y="-716.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">owner: address</text><path fill="none" stroke="#000" d="M2699.45 1446.7h484.874"/><text x="2703.45" y="-691.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Internal:</text><text x="2703.45" y="-674.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">_transferOwnership(_newOwner: address)</text><text x="2703.45" y="-657.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Public:</text><text x="2703.45" y="-640.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; OwnershipRenounced(previousOwner: address)</text><text x="2703.45" y="-624.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; OwnershipTransferred(previousOwner: address, newOwner: address)</text><text x="2703.45" y="-607.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;modifier&gt;&gt; onlyOwner()</text><text x="2703.45" y="-590.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">constructor()</text><text x="2703.45" y="-573.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">renounceOwnership()</text><text x="2703.45" y="-556.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">transferOwnership(_newOwner: address)</text></g><g class="node"><path fill="#f2f2f2" stroke="#000" d="M2355.602 2154.1v-292.8h356.57v292.8h-356.57z"/><text text-anchor="middle" x="2529.887" y="-276.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ATestnetConsumer</text><path fill="none" stroke="#000" d="M2355.602 1886.1h356.57"/><text x="2359.602" y="-251.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="2359.602" y="-235.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">ORACLE_PAYMENT: uint256</text><text x="2359.602" y="-218.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">RESPONSE_TIME: uint256</text><text x="2359.602" y="-201.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">EXPECTED_RESPONSES: uint256</text><text x="2359.602" y="-184.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">prices: uint256[]</text><text x="2359.602" y="-167.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">receipts: mapping(bytes32=&gt;uint256)</text><path fill="none" stroke="#000" d="M2355.602 1994.9h356.57"/><text x="2359.602" y="-143.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Private:</text><text x="2359.602" y="-126.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">stringToBytes32(source: string): (result: bytes32)</text><text x="2359.602" y="-109.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">Public:</text><text x="2359.602" y="-92.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">&lt;&lt;event&gt;&gt; AveragePrice(price: uint256)</text><text x="2359.602" y="-75.9" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">constructor()</text><text x="2359.602" y="-59.1" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">requestEthereumPrice(_oracle: address, _jobId: string)</text><text x="2359.602" y="-42.3" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">fulfillEthereumPrice(_requestId: bytes32, _price: uint256)</text><text x="2359.602" y="-25.5" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">getChainlinkToken(): address</text><text x="2359.602" y="-8.7" font-family="Times,serif" font-size="14" transform="translate(4 2154.6)">withdrawLink()</text></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M2712.455 1982.665c174.555-28.561 422.315-81.422 480.432-157.865 178.444-234.715 96.98-384.962 0-663.4-7.43-21.334-18.502-42.05-31.275-61.405"/><path d="M3158.561 1101.732l-2.725-10.238 8.515 6.304-5.79 3.934z"/></g><g class="edge" stroke="#000"><path fill="none" stroke-dasharray="5,2" d="M2355.247 1980.254c-161.801-28.155-404.967-78.765-606.36-155.454-486.795-185.368-1007.454-505.327-1295.177-694.23"/><path d="M451.7 1133.436l-6.434-8.417 10.28 2.568-3.846 5.85z"/></g><path fill="none" stroke="#000" d="M2418.074 1861.269l-10.249-12.958m-8.395 6.311l-10.375-30.043 26.846 17.016-16.471 13.027zM2661.077 1861.12c10.177-12.211 20.222-24.43 29.81-36.32 50.695-62.875 105.002-134.122 150.088-194.425m-8.27-6.473l26.347-17.778-9.51 30.328-16.837-12.55z"/></g></svg>