Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
4b93825f
Commit
4b93825f
authored
Oct 16, 2020
by
pengjun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add paillier testcase
parent
e43e8e02
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
43 deletions
+64
-43
storage_test.go
plugin/dapp/storage/executor/storage_test.go
+22
-0
storagedb.go
plugin/dapp/storage/executor/storagedb.go
+2
-2
storage.proto
plugin/dapp/storage/proto/storage.proto
+2
-2
storage.pb.go
plugin/dapp/storage/types/storage.pb.go
+38
-39
No files found.
plugin/dapp/storage/executor/storage_test.go
View file @
4b93825f
...
@@ -165,6 +165,28 @@ func TestStorage(t *testing.T) {
...
@@ -165,6 +165,28 @@ func TestStorage(t *testing.T) {
assert
.
Equal
(
t
,
common
.
Sha256
(
contents
[
0
]),
reply
.
GetEncryptStorage
()
.
ContentHash
)
assert
.
Equal
(
t
,
common
.
Sha256
(
contents
[
0
]),
reply
.
GetEncryptStorage
()
.
ContentHash
)
assert
.
Equal
(
t
,
crypted
,
reply
.
GetEncryptStorage
()
.
EncryptContent
)
assert
.
Equal
(
t
,
crypted
,
reply
.
GetEncryptStorage
()
.
EncryptContent
)
assert
.
Equal
(
t
,
ivs
[
0
],
reply
.
GetEncryptStorage
()
.
Nonce
)
assert
.
Equal
(
t
,
ivs
[
0
],
reply
.
GetEncryptStorage
()
.
Nonce
)
// 同态加密
c1
,
_
:=
common
.
FromHex
(
"010076833cbc35c9b7a87eda9aab7aafec45bd7eb8c0e9306141e7d1e84ecd87a5cb9f80343551bd9b0d04669fd74d020fca8837d9b3b471e3e13c125a06663d820cabb36c243747a11ea2601a9cb32e61c697dcdc846c492d954fa8c3ca2be662e8c0142138b647ce5d9e7c4c4d2ace8ba3c5699fbec98beef24e3c740967ec0b72b1626ecd4a7ce54960ae9bc1e2ea5594b05778f4f772aa213a06421744ed8dd775fb8f212bcc7e0da5fe4949051e6aa09d47db7e8d5028ecc41cea2aed4e23aefd80714519662fae980e3a6ca3defc0dd5596cb7e90da29e1bdd84db82603aed78fb8f98687898cd675da74452052ff1761446bf2ee922fc8c56b7e1beb2d4b91042742837052b340e4afce1836badf4a56ef775bb6a94fd91686a44122543fdab3ee90488160068769fbce2e74ffd5e052bb4c651969c4755f6eb5d7ea0cee3e7fa58f4b38b1722535909bd0f325a0b8d0797c15300ab06095b305f46497bbd75c3682d379387f55f638cd10639db1f050090bfd5d291718cee9fc6894d04ba6ef0acb477184512984f435b13e9bffe630bbc8ceade6d269487bf219e25b3beecc46afb98fb8e1fec1a9ad0af0a16e70611f9a4337af05a2ff82d7c9dcebeea9d8e2070413e49e29ff564e6dcee5696e39dc590ff8f8f553834c66c5ae730d05441e3fcc59de0d6efb12fd8852e19f2e309e4ac4cbf0634655fcaab5a70b4eab49829190ea2862c2568e8b69ff0324055f92275de05f2de1d6a8a78333370da754708f7a827f5e9bbe2e58d58294cafef37898a5a5a4866678b6e07941a3bfcb3c3f2d150f830a12d8e0dd20d756099be48f10d51521b3ba0c49f2ab139724ae3962999d75b88bf572fbfd86b6eef3bad5a446b97949d95f9e742500f8609ecfe189d2b4d5a47ea997164f48b3872ec525f16ec23fa5700d10d3385019edfabfec780f15b639f6863332c69fe6b17895620821fe6aaf94caab29c0fec19ff1bebc59f5ed8f973a3b720257cce803541406ae8e75163cf0049f8fbf14d239e86089cdefba8bcbb03db284283a1ff572320aeb7d4a139d4429e00c8bb196539d7"
)
c2
,
_
:=
common
.
FromHex
(
"010076833cbc35c9b7a87eda9aab7aafec45bd7eb8c0e9306141e7d1e84ecd87a5cb9f80343551bd9b0d04669fd74d020fca8837d9b3b471e3e13c125a06663d820cabb36c243747a11ea2601a9cb32e61c697dcdc846c492d954fa8c3ca2be662e8c0142138b647ce5d9e7c4c4d2ace8ba3c5699fbec98beef24e3c740967ec0b72b1626ecd4a7ce54960ae9bc1e2ea5594b05778f4f772aa213a06421744ed8dd775fb8f212bcc7e0da5fe4949051e6aa09d47db7e8d5028ecc41cea2aed4e23aefd80714519662fae980e3a6ca3defc0dd5596cb7e90da29e1bdd84db82603aed78fb8f98687898cd675da74452052ff1761446bf2ee922fc8c56b7e1beb2d4b9338ddba1f37e26ef7e0b9cb3bec18dc4b450d91a1a0901a3aca75000b58dd639635dce66553945a698b186c89443361ab4c1d3525de6bace217cd27fce0c8f6efc9e7c95269139487b5772182d8276ed6edfe0560537d18330aae4191af1dfae0a430b2021401bc17a111730f7114f514b7b84cb09bf717c67bb25c21a31b3a062f32dceb99103cdd622242148ec1799d04f4f3f4fc5af9e18cfaf356388b1413cc95b6f5bc0c293acf09ad0513e15d2ea525f120930e6072e0cf750e4e03bbf65b278ad92476f5e507bb51f01c3d2797931794cad156b5980fb5ec51fc82e99fde99e81dd85e9dba1d549aa8768c609e46171750b7bc636b709e47c92b076f1b7f71bff1fd690f8bfcdbf48559f777017b9ad300cbb3a1089f3eb6fed5632be9edecc33be09da7d43275640a097114f8f9e529289cce15d7b4ba613feda9e4d818743bf2741c5cd2aaaec7cc96ed835ee909ea0e9675f57bad4ad01688cc2a77e6181a0bca9a46d0ca160a1d94771e24db357e861e1f029104782445413c6d4861404df9ec3140b895083ebbb8a92bbc7decc8990353e9347a7933f85ef94ed325a331b3e6e6c752086adc7926abac3dfd8c8f3d7add64c80f327c1c4d74fde7a6c8981f79ede165f0584e5d6317d7272d9836098cd8ef82fbe85770962b709dfe1f2ae3454ac471e6ea24c6545f332a3eb4eecbc09e2276748d484a5216361"
)
c3
,
_
:=
common
.
FromHex
(
"010076833cbc35c9b7a87eda9aab7aafec45bd7eb8c0e9306141e7d1e84ecd87a5cb9f80343551bd9b0d04669fd74d020fca8837d9b3b471e3e13c125a06663d820cabb36c243747a11ea2601a9cb32e61c697dcdc846c492d954fa8c3ca2be662e8c0142138b647ce5d9e7c4c4d2ace8ba3c5699fbec98beef24e3c740967ec0b72b1626ecd4a7ce54960ae9bc1e2ea5594b05778f4f772aa213a06421744ed8dd775fb8f212bcc7e0da5fe4949051e6aa09d47db7e8d5028ecc41cea2aed4e23aefd80714519662fae980e3a6ca3defc0dd5596cb7e90da29e1bdd84db82603aed78fb8f98687898cd675da74452052ff1761446bf2ee922fc8c56b7e1beb2d4b90a734625f41c1709ad56e8a801346d70f190e7080c805de1e380198a4ebaf86ca6e5b9dbdc6eacad7c545f78c718a6e0262bc61d68244f99255d0fc8126cfbc0449e935bf5ee81af5e600f7d5b23b4b2d1f48482e037642690035f0289d4d3c72662d63e958edf8d566c765bcbc44cedc618b31db5eebdc6fd5848d53161e3e01c6c73010c32391db709a71cedb4c45fb71ec85de48ace0cba009ef2c0a88386e62b9607faf36c9b219508281267c0df2a182a88ad8fd146101564f5a14c7fd5ed2d4ae547c8741a31c560501230edd5417c622a7aba8d7efb08c08d5b7c45508c766353f2d43bd092834461f0673196abc8ef56b9fd54bdf82c2a392ff8dedcef3d90d3e47370d31083c2d19cefe2ce83936fd881f4a38ef3e5aaf3b0d48842ded5e6a16fc2fb7b5379406c2889e1d9de1fe611645310ba5b5048e817f44c451b5ec557c0e3b8e64049a437b82f901866ba4c1994d3c3caf02f81582f7409d10480df2c353eb63db4ec57671b2ac6c28fce842c605bae902ac5bb649f08199307458b542849d663809c9980a7c939b4f1f6d2eddf3dfe02f70ee4cf8956bf7a6a29a307939cd17eebdbcc80fb830bd545351a12c275375feaf3f690c52cc76dc7521ce87f621163b551a70e06d5bd3274bdc144f61f4ff8f1cdb2fcf97c67df1935057fdadaa23bf675892b4db841a63d49cd788c34498c70fb4ea787f3f8c1"
)
tx
,
err
=
CreateTx
(
"EncryptStorage"
,
&
oty
.
EncryptNotaryStorage
{
ContentHash
:
common
.
Sha256
(
c1
),
EncryptContent
:
c1
,
Nonce
:
ivs
[
0
]},
PrivKeyA
,
cfg
)
assert
.
Nil
(
t
,
err
)
Exec_Block
(
t
,
stateDB
,
kvdb
,
env
,
tx
)
txhash
=
common
.
ToHex
(
tx
.
Hash
())
reply
,
err
=
QueryStorageByKey
(
stateDB
,
kvdb
,
txhash
,
cfg
)
assert
.
Nil
(
t
,
err
)
assert
.
Equal
(
t
,
common
.
Sha256
(
c1
),
reply
.
GetEncryptStorage
()
.
ContentHash
)
assert
.
Equal
(
t
,
c1
,
reply
.
GetEncryptStorage
()
.
EncryptContent
)
tx
,
err
=
CreateTx
(
"EncryptAdd"
,
&
oty
.
EncryptNotaryAdd
{
Key
:
txhash
,
EncryptAdd
:
c2
},
PrivKeyA
,
cfg
)
assert
.
Nil
(
t
,
err
)
Exec_Block
(
t
,
stateDB
,
kvdb
,
env
,
tx
)
reply
,
err
=
QueryStorageByKey
(
stateDB
,
kvdb
,
txhash
,
cfg
)
assert
.
Nil
(
t
,
err
)
assert
.
Equal
(
t
,
c3
,
reply
.
GetEncryptStorage
()
.
EncryptContent
)
}
}
func
signTx
(
tx
*
types
.
Transaction
,
hexPrivKey
string
)
(
*
types
.
Transaction
,
error
)
{
func
signTx
(
tx
*
types
.
Transaction
,
hexPrivKey
string
)
(
*
types
.
Transaction
,
error
)
{
...
...
plugin/dapp/storage/executor/storagedb.go
View file @
4b93825f
...
@@ -197,7 +197,7 @@ func (s *StorageAction) EncryptAdd(payload *ety.EncryptNotaryAdd) (*types.Receip
...
@@ -197,7 +197,7 @@ func (s *StorageAction) EncryptAdd(payload *ety.EncryptNotaryAdd) (*types.Receip
var
kvs
[]
*
types
.
KeyValue
var
kvs
[]
*
types
.
KeyValue
cfg
:=
s
.
api
.
GetConfig
()
cfg
:=
s
.
api
.
GetConfig
()
store
,
err
:=
QueryStorage
(
s
.
db
,
s
.
localdb
,
payload
.
ContentHash
)
store
,
err
:=
QueryStorage
(
s
.
db
,
s
.
localdb
,
payload
.
Key
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Errorf
(
"EncryptAdd.QueryStorage. err:%v"
,
err
)
fmt
.
Errorf
(
"EncryptAdd.QueryStorage. err:%v"
,
err
)
return
nil
,
err
return
nil
,
err
...
@@ -227,7 +227,7 @@ func (s *StorageAction) EncryptAdd(payload *ety.EncryptNotaryAdd) (*types.Receip
...
@@ -227,7 +227,7 @@ func (s *StorageAction) EncryptAdd(payload *ety.EncryptNotaryAdd) (*types.Receip
}
else
{
}
else
{
log
:=
&
types
.
ReceiptLog
{
Ty
:
ety
.
TyEncryptAddLog
}
log
:=
&
types
.
ReceiptLog
{
Ty
:
ety
.
TyEncryptAddLog
}
logs
=
append
(
logs
,
log
)
logs
=
append
(
logs
,
log
)
kvs
=
append
(
kvs
,
&
types
.
KeyValue
{
Key
:
Key
(
payload
.
ContentHash
),
Value
:
types
.
Encode
(
newStore
)})
kvs
=
append
(
kvs
,
&
types
.
KeyValue
{
Key
:
Key
(
payload
.
Key
),
Value
:
types
.
Encode
(
newStore
)})
}
}
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kvs
,
Logs
:
logs
}
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kvs
,
Logs
:
logs
}
...
...
plugin/dapp/storage/proto/storage.proto
View file @
4b93825f
...
@@ -89,8 +89,8 @@ message EncryptShareNotaryStorage {
...
@@ -89,8 +89,8 @@ message EncryptShareNotaryStorage {
// 加密存证数据运算
// 加密存证数据运算
message
EncryptNotaryAdd
{
message
EncryptNotaryAdd
{
//
存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
//
源操作数存证索引
string
contentHash
=
1
;
string
key
=
1
;
//待操作数据
//待操作数据
bytes
encryptAdd
=
2
;
bytes
encryptAdd
=
2
;
}
}
...
...
plugin/dapp/storage/types/storage.pb.go
View file @
4b93825f
...
@@ -668,8 +668,8 @@ func (m *EncryptShareNotaryStorage) GetValue() string {
...
@@ -668,8 +668,8 @@ func (m *EncryptShareNotaryStorage) GetValue() string {
// 加密存证数据运算
// 加密存证数据运算
type
EncryptNotaryAdd
struct
{
type
EncryptNotaryAdd
struct
{
//
存证明文内容的hash值,推荐使用sha256哈希,限制256位得摘要值
//
源操作数存证索引
ContentHash
string
`protobuf:"bytes,1,opt,name=contentHash,proto3" json:"contentHash
,omitempty"`
Key
string
`protobuf:"bytes,1,opt,name=key,proto3" json:"key
,omitempty"`
//待操作数据
//待操作数据
EncryptAdd
[]
byte
`protobuf:"bytes,2,opt,name=encryptAdd,proto3" json:"encryptAdd,omitempty"`
EncryptAdd
[]
byte
`protobuf:"bytes,2,opt,name=encryptAdd,proto3" json:"encryptAdd,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
...
@@ -702,9 +702,9 @@ func (m *EncryptNotaryAdd) XXX_DiscardUnknown() {
...
@@ -702,9 +702,9 @@ func (m *EncryptNotaryAdd) XXX_DiscardUnknown() {
var
xxx_messageInfo_EncryptNotaryAdd
proto
.
InternalMessageInfo
var
xxx_messageInfo_EncryptNotaryAdd
proto
.
InternalMessageInfo
func
(
m
*
EncryptNotaryAdd
)
Get
ContentHash
()
string
{
func
(
m
*
EncryptNotaryAdd
)
Get
Key
()
string
{
if
m
!=
nil
{
if
m
!=
nil
{
return
m
.
ContentHash
return
m
.
Key
}
}
return
""
return
""
}
}
...
@@ -884,39 +884,38 @@ func init() {
...
@@ -884,39 +884,38 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"storage.proto"
,
fileDescriptor_0d2c4ccf1453ffdb
)
}
func
init
()
{
proto
.
RegisterFile
(
"storage.proto"
,
fileDescriptor_0d2c4ccf1453ffdb
)
}
var
fileDescriptor_0d2c4ccf1453ffdb
=
[]
byte
{
var
fileDescriptor_0d2c4ccf1453ffdb
=
[]
byte
{
// 530 bytes of a gzipped FileDescriptorProto
// 528 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x95
,
0xd1
,
0x8a
,
0xd3
,
0x4c
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x95
,
0x4d
,
0x8b
,
0xd3
,
0x40
,
0x14
,
0xc7
,
0x37
,
0x49
,
0xd3
,
0x7c
,
0x39
,
0xe9
,
0x86
,
0xee
,
0x7c
,
0xeb
,
0x1a
,
0x51
,
0x34
,
0xe4
,
0x18
,
0xc7
,
0x37
,
0x4d
,
0xd3
,
0x98
,
0x27
,
0xdd
,
0xd0
,
0x1d
,
0xd7
,
0x35
,
0xa2
,
0x68
,
0xc8
,
0x61
,
0x62
,
0x29
,
0x82
,
0xbd
,
0xa8
,
0x57
,
0x82
,
0xa0
,
0x5d
,
0x59
,
0xa8
,
0x28
,
0x8a
,
0xb3
,
0xfb
,
0x02
,
0x29
,
0x82
,
0x3d
,
0xd4
,
0x93
,
0x20
,
0x68
,
0x57
,
0x17
,
0x2a
,
0x8a
,
0xe2
,
0xac
,
0x5f
,
0x20
,
0x9b
,
0xd9
,
0x74
,
0x30
,
0xa5
,
0x61
,
0x26
,
0x24
,
0x53
,
0x31
,
0x2f
,
0xe3
,
0x9d
,
0x8f
,
0xe2
,
0x95
,
0x2f
,
0x0e
,
0xa6
,
0x34
,
0xcc
,
0x84
,
0x64
,
0x2a
,
0xe6
,
0xcb
,
0x78
,
0xf3
,
0xa3
,
0x78
,
0xf2
,
0x4b
,
0x49
,
0x25
,
0x99
,
0x9c
,
0x64
,
0x93
,
0x76
,
0x16
,
0xbc
,
0xf0
,
0x46
,
0xf0
,
0x6e
,
0xe6
,
0x9c
,
0x33
,
0xbf
,
0x26
,
0xcf
,
0xa4
,
0x49
,
0x9b
,
0x05
,
0x0f
,
0x5e
,
0x84
,
0xbd
,
0xcd
,
0x3c
,
0x2f
,
0xbf
,
0xe7
,
0xe5
,
0xf3
,
0x9f
,
0xf3
,
0x9f
,
0x36
,
0x70
,
0x5c
,
0x4a
,
0x51
,
0xc4
,
0x9f
,
0xd9
,
0x3c
,
0x2f
,
0x84
,
0x14
,
0x3f
,
0x6d
,
0xe0
,
0xb8
,
0x90
,
0x22
,
0x8f
,
0xbe
,
0xb2
,
0x59
,
0x96
,
0x0b
,
0x29
,
0x88
,
0x25
,
0xcb
,
0xc4
,
0x96
,
0x55
,
0xce
,
0xca
,
0xe8
,
0x87
,
0x05
,
0xce
,
0x55
,
0x93
,
0x20
,
0x6f
,
0xc1
,
0x4f
,
0x04
,
0x8c
,
0x15
,
0xe1
,
0x2f
,
0x13
,
0xec
,
0xab
,
0xda
,
0x41
,
0xde
,
0x81
,
0x17
,
0x0b
,
0x2e
,
0x19
,
0x97
,
0x97
,
0x8c
,
0x4b
,
0x8c
,
0x04
,
0x46
,
0x68
,
0xcc
,
0xbc
,
0xc5
,
0x93
,
0xb9
,
0xaa
,
0x9d
,
0xbf
,
0x69
,
0x68
,
0xf1
,
0x8d
,
0xc0
,
0x98
,
0xba
,
0xf3
,
0x27
,
0x33
,
0x15
,
0x3b
,
0x7b
,
0x53
,
0x3b
,
0x3f
,
0xf1
,
0x92
,
0x1f
,
0x79
,
0x56
,
0x7d
,
0x10
,
0x32
,
0x2e
,
0x2a
,
0x2c
,
0x5b
,
0x1d
,
0xd1
,
0xbd
,
0x83
,
0xe4
,
0xb4
,
0xfc
,
0x28
,
0x64
,
0x94
,
0x97
,
0x18
,
0xb6
,
0x3c
,
0xa2
,
0x7b
,
0x89
,
0xe4
,
0x35
,
0xb8
,
0x49
,
0x35
,
0x78
,
0x69
,
0x5c
,
0xa6
,
0x2d
,
0xc7
,
0x54
,
0x9c
,
0x47
,
0xc8
,
0x59
,
0xc5
,
0x65
,
0xaa
,
0x83
,
0x54
,
0x24
,
0x9a
,
0x33
,
0x50
,
0x9c
,
0x47
,
0xc8
,
0x59
,
0x46
,
0x45
,
0xd2
,
0x07
,
0x69
,
0xa7
,
0x90
,
0xf4
,
0x8f
,
0x90
,
0x97
,
0xe0
,
0x65
,
0x1b
,
0xbe
,
0x6d
,
0x09
,
0x96
,
0x22
,
0x04
,
0x48
,
0x78
,
0xbf
,
0x97
,
0xe0
,
0xa6
,
0x6b
,
0xbe
,
0xd1
,
0x04
,
0x53
,
0x11
,
0x7c
,
0x24
,
0x7c
,
0x58
,
0xf3
,
0xcd
,
0x41
,
0xe1
,
0xdb
,
0x83
,
0xd3
,
0xbd
,
0x72
,
0x72
,
0x09
,
0x3e
,
0xe3
,
0x49
,
0x51
,
0xe5
,
0xdd
,
0x55
,
0x46
,
0x76
,
0x2b
,
0x9c
,
0x5c
,
0x82
,
0xc7
,
0x78
,
0x9c
,
0x97
,
0x59
,
0x33
,
0xca
,
0x50
,
0x01
,
0x1e
,
0x22
,
0x0a
,
0xf0
,
0x10
,
0x01
,
0x97
,
0x4d
,
0xf2
,
0xe0
,
0x1a
,
0xc3
,
0x43
,
0xe4
,
0x1a
,
0xfe
,
0x6f
,
0x23
,
0xe0
,
0xb2
,
0x76
,
0x1e
,
0x8c
,
0xd1
,
0x4d
,
0x22
,
0x5f
,
0xe0
,
0xae
,
0xb6
,
0x24
,
0x51
,
0xce
,
0x34
,
0x69
,
0x5c
,
0xb0
,
0x96
,
0x65
,
0x2b
,
0x56
,
0x38
,
0x64
,
0xa9
,
0x8a
,
0x7d
,
0xa0
,
0xee
,
0x38
,
0x79
,
0xcb
,
0x52
,
0xac
,
0xa0
,
0xcb
,
0x52
,
0x11
,
0xfb
,
0xc0
,
0xbe
,
0x74
,
0xf2
,
0x02
,
0x00
,
0xcd
,
0x8b
,
0x01
,
0x80
,
0xe1
,
0xe5
,
0x7a
,
0x1d
,
0x8c
,
0x15
,
0xec
,
0xbe
,
0x4e
,
0xd8
,
0x72
,
0xbd
,
0x5e
,
0x1d
,
0xd5
,
0xca
,
0x1f
,
0x29
,
0xd8
,
0xfd
,
0xbe
,
0xc6
,
0x16
,
0xab
,
0xd5
,
0xf2
,
0x88
,
0xb6
,
0x82
,
0x89
,
0xd1
,
0x5e
,
0x31
,
0xf1
,
0xc1
,
0x94
,
0x55
,
0xe0
,
0x84
,
0xc6
,
0xcc
,
0xa6
,
0xa6
,
0xac
,
0x2e
,
0x1c
,
0x07
,
0x03
,
0x59
,
0xfa
,
0x76
,
0x60
,
0x4c
,
0x2d
,
0x3a
,
0x90
,
0xe5
,
0x85
,
0x0d
,
0xd6
,
0xb7
,
0x28
,
0xb0
,
0xbf
,
0xc4
,
0xd9
,
0x8e
,
0x45
,
0x3f
,
0x2d
,
0x38
,
0x46
,
0xfe
,
0x32
,
0x91
,
0x1b
,
0xc1
,
0xff
,
0xdd
,
0xb2
,
0xf0
,
0xb7
,
0x09
,
0xc7
,
0xc8
,
0x5f
,
0xc4
,
0x72
,
0x2d
,
0xf8
,
0xad
,
0x9a
,
0xff
,
0xb1
,
0xb9
,
0xf9
,
0x17
,
0xbb
,
0x99
,
0x41
,
0x70
,
0x97
,
0x3d
,
0x24
,
0x00
,
0x07
,
0xed
,
0x51
,
0x86
,
0x4e
,
0x9a
,
0x29
,
0xf8
,
0x37
,
0xc9
,
0x43
,
0x7c
,
0xb0
,
0x51
,
0x1e
,
0x25
,
0xe8
,
0x98
,
0xea
,
0x2b
,
0x99
,
0x68
,
0xbb
,
0x25
,
0x53
,
0xb0
,
0xb6
,
0xac
,
0x52
,
0xf6
,
0xb8
,
0xb4
,
0x5e
,
0xd6
,
0x0d
,
0x44
,
0xae
,
0x80
,
0xb9
,
0x61
,
0xa5
,
0x92
,
0xc7
,
0xa1
,
0xd5
,
0xb1
,
0x2a
,
0x20
,
0x32
,
0xb5
,
0x6d
,
0x8b
,
0x0e
,
0xa6
,
0x6d
,
0x53
,
0x53
,
0xe4
,
0xe4
,
0x14
,
0x1b
,
0xa8
,
0xf9
,
0xb9
,
0x14
,
0xbb
,
0x5d
,
0xc1
,
0x3d
,
0x44
,
0x46
,
0x4e
,
0xb1
,
0x80
,
0xda
,
0x9f
,
0x43
,
0xb1
,
0xda
,
0x15
,
0xdc
,
0xeb
,
0x15
,
0x91
,
0x10
,
0xad
,
0x89
,
0x84
,
0xc0
,
0xa8
,
0x36
,
0x11
,
0xfb
,
0xa8
,
0xb5
,
0xa6
,
0x49
,
0x07
,
0xb5
,
0xfa
,
0xd0
,
0x18
,
0x56
,
0x22
,
0x62
,
0x1d
,
0x75
,
0xee
,
0x29
,
0xd2
,
0x40
,
0xcd
,
0x36
,
0x34
,
0x86
,
0x93
,
0x03
,
0x04
,
0x4e
,
0x0e
,
0x7c
,
0xad
,
0x81
,
0xb5
,
0xaf
,
0x2d
,
0xb0
,
0x5e
,
0x77
,
0x4d
,
0xcc
,
0xc3
,
0x26
,
0x5d
,
0x2b
,
0x60
,
0xa5
,
0xab
,
0x06
,
0x56
,
0xe7
,
0xa6
,
0xc8
,
0xe0
,
0xb0
,
0x88
,
0xd9
,
0x53
,
0xa4
,
0x96
,
0xa6
,
0xc9
,
0x40
,
0xf9
,
0x37
,
0x03
,
0x4e
,
0x75
,
0xe6
,
0x93
,
0x10
,
0x3c
,
0x9c
,
0xca
,
0xea
,
0xd3
,
0xf9
,
0x0f
,
0x03
,
0x4e
,
0xfb
,
0xc4
,
0x27
,
0x01
,
0xb8
,
0xb8
,
0x95
,
0xe5
,
0x6e
,
0x80
,
0xb6
,
0xf6
,
0x02
,
0xfd
,
0x10
,
0x39
,
0xef
,
0xde
,
0x14
,
0x4e
,
0x1a
,
0x05
,
0xec
,
0x45
,
0xeb
,
0xc6
,
0x5c
,
0x89
,
0x9c
,
0x37
,
0x6f
,
0x0a
,
0x37
,
0x8d
,
0x0d
,
0xec
,
0x59
,
0xab
,
0xc2
,
0x5c
,
0xf0
,
0xb8
,
0x9e
,
0xf0
,
0xa4
,
0xb9
,
0xdd
,
0x84
,
0x36
,
0x9b
,
0x56
,
0xe0
,
0x48
,
0x23
,
0xd0
,
0xee
,
0x0b
,
0xfc
,
0x6e
,
0x6e
,
0x4c
,
0xeb
,
0x8b
,
0x6e
,
0x70
,
0xd8
,
0xd3
,
0xa0
,
0xd5
,
0x6e
,
0xf0
,
0xa7
,
0x01
,
0x0f
,
0x6e
,
0xc0
,
0x83
,
0x3b
,
0x5f
,
0xd4
,
0x1f
,
0x54
,
0x79
,
0x06
,
0xe3
,
0x7c
,
0x77
,
0xf3
,
0x0e
,
0x67
,
0x36
,
0x7c
,
0x51
,
0xff
,
0xb0
,
0xcb
,
0x33
,
0x18
,
0x65
,
0xdb
,
0xeb
,
0xf7
,
0xb8
,
0xb3
,
0x31
,
0xc5
,
0xdb
,
0xa1
,
0xb8
,
0xfb
,
0x6d
,
0x9d
,
0xd7
,
0x30
,
0xdd
,
0x7f
,
0xab
,
0x3a
,
0x75
,
0xee
,
0x50
,
0xdd
,
0xe3
,
0x5f
,
0xf7
,
0xf9
,
0x16
,
0x26
,
0xfb
,
0x6f
,
0x55
,
0xe7
,
0x1a
,
0xbb
,
0xdc
,
0xc7
,
0x9d
,
0xa7
,
0x5e
,
0xc1
,
0xd3
,
0x6f
,
0x94
,
0xf5
,
0x22
,
0xd1
,
0x39
,
0x4c
,
0x3e
,
0xed
,
0xd8
,
0xed
,
0x7d
,
0xcf
,
0x60
,
0x77
,
0xd2
,
0xb2
,
0x84
,
0xe7
,
0x30
,
0xfe
,
0xbc
,
0x65
,
0xbb
,
0xf9
,
0xce
,
0x60
,
0x24
,
0xbf
,
0x37
,
0x2c
,
0xbf
,
0xf6
,
0x60
,
0xb8
,
0x8b
,
0x9e
,
0xc1
,
0xc9
,
0x45
,
0x2c
,
0x93
,
0x74
,
0x50
,
0x1c
,
0x80
,
0xa3
,
0x39
,
0x14
,
0x6f
,
0xe1
,
0x33
,
0x38
,
0xb9
,
0x88
,
0x64
,
0x9c
,
0x74
,
0x82
,
0x7d
,
0xb0
,
0x6b
,
0xd3
,
0xa4
,
0xcb
,
0xc0
,
0x08
,
0xad
,
0x99
,
0x4b
,
0xdb
,
0x6d
,
0xf4
,
0x0a
,
0xcb
,
0x29
,
0xcb
,
0xb3
,
0x77
,
0xe1
,
0x1b
,
0x81
,
0x39
,
0x75
,
0xa8
,
0xbe
,
0x86
,
0xaf
,
0x30
,
0x9c
,
0xb2
,
0x2c
,
0x6d
,
0xc2
,
0xae
,
0xfc
,
0x29
,
0xfc
,
0x87
,
0x1f
,
0xb8
,
0xa6
,
0xde
,
0x5b
,
0xf8
,
0xf8
,
0x23
,
0xc4
,
0x0a
,
0xda
,
0x9f
,
0xc2
,
0x1d
,
0xfc
,
0xa0
,
0xd5
,
0xf1
,
0xee
,
0xdc
,
0xc3
,
0x1f
,
0x1d
,
0x46
,
0xd0
,
0xc6
,
0x1f
,
0xe5
,
0xa3
,
0x29
,
0xf8
,
0x94
,
0x25
,
0x6c
,
0xd3
,
0xfd
,
0x35
,
0x2c
,
0x5c
,
0x70
,
0x30
,
0x7b
,
0x33
,
0x4e
,
0xc0
,
0xa3
,
0x2c
,
0x66
,
0xeb
,
0xe6
,
0xaf
,
0x60
,
0xee
,
0x80
,
0x8d
,
0xde
,
0xeb
,
0x91
,
0xfa
,
0x56
,
0xdf
,
0xc7
,
0xe7
,
0xbf
,
0x02
,
0x00
,
0x00
,
0xff
,
0xff
,
0x5c
,
0x62
,
0x13
,
0xfb
,
0x30
,
0x07
,
0x1e
,
0x3e
,
0xff
,
0x13
,
0x00
,
0x00
,
0xff
,
0xff
,
0x66
,
0xc3
,
0x4e
,
0x48
,
0x20
,
0x07
,
0x00
,
0x00
,
0x00
,
0x00
,
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment