mirror of
https://github.com/anyproto/anytype-heart.git
synced 2025-06-09 17:44:59 +09:00
Merge branch 'main' of ssh://github.com/anyproto/anytype-heart into fix-ristretto-32bit-main
This commit is contained in:
commit
6f9128496f
142 changed files with 9721 additions and 2946 deletions
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -1,2 +1,3 @@
|
|||
lib/lib.so filter=lfs diff=lfs merge=lfs -text
|
||||
dist/lib.so filter=lfs diff=lfs merge=lfs -text
|
||||
tests/integration/testdata/import/** linguist-generated=true
|
||||
|
|
1
Makefile
1
Makefile
|
@ -80,6 +80,7 @@ test-deps:
|
|||
@go build -o deps github.com/vektra/mockery/v2
|
||||
@go generate ./...
|
||||
@$(DEPS_PATH)/mockery --disable-version-string
|
||||
@go run ./cmd/testcase generate-json-helpers
|
||||
|
||||
clear-test-deps:
|
||||
@echo 'Removing test mocks...'
|
||||
|
|
|
@ -25,281 +25,283 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 4378 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x1c, 0xc9,
|
||||
0x56, 0xc0, 0x77, 0x5e, 0x58, 0xe8, 0xcb, 0x5d, 0x60, 0x2e, 0x2c, 0x7b, 0xc3, 0xbd, 0xce, 0x6e,
|
||||
0x36, 0xb1, 0x93, 0x38, 0x1e, 0x67, 0x93, 0xdd, 0xec, 0xe5, 0x5e, 0x24, 0xe4, 0xd8, 0xb1, 0xd7,
|
||||
0xdc, 0xc4, 0x31, 0x9e, 0x49, 0x22, 0xad, 0x84, 0x44, 0xbb, 0xa7, 0x32, 0x6e, 0xdc, 0xd3, 0xd5,
|
||||
0xb7, 0xbb, 0x66, 0xec, 0x01, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0xe2, 0xeb, 0x85, 0x07, 0x24,
|
||||
0x1e, 0xf8, 0x3f, 0x78, 0xe3, 0x71, 0x1f, 0x79, 0x44, 0xbb, 0xff, 0xc8, 0x55, 0x57, 0x9d, 0xae,
|
||||
0x8f, 0xd3, 0x75, 0xaa, 0x7b, 0xf6, 0x69, 0x57, 0x3e, 0xbf, 0xf3, 0x51, 0x5d, 0xa7, 0xaa, 0x4e,
|
||||
0x55, 0xf5, 0x74, 0xa2, 0x9b, 0xc5, 0xf9, 0x6e, 0x51, 0x72, 0xc1, 0xab, 0xdd, 0x8a, 0x95, 0xcb,
|
||||
0x34, 0x61, 0xcd, 0x7f, 0x47, 0xf2, 0xcf, 0xc3, 0x77, 0xe3, 0x7c, 0x25, 0x56, 0x05, 0xbb, 0xf1,
|
||||
0x81, 0x21, 0x13, 0x3e, 0x9f, 0xc7, 0xf9, 0xb4, 0x52, 0xc8, 0x8d, 0xf7, 0x8d, 0x84, 0x2d, 0x59,
|
||||
0x2e, 0xe0, 0xef, 0x8f, 0xfe, 0xfb, 0x7f, 0x06, 0xd1, 0x7b, 0xfb, 0x59, 0xca, 0x72, 0xb1, 0x0f,
|
||||
0x1a, 0xc3, 0x2f, 0xa3, 0xef, 0xee, 0x15, 0xc5, 0x11, 0x13, 0xaf, 0x59, 0x59, 0xa5, 0x3c, 0x1f,
|
||||
0x7e, 0x3c, 0x02, 0x07, 0xa3, 0xb3, 0x22, 0x19, 0xed, 0x15, 0xc5, 0xc8, 0x08, 0x47, 0x67, 0xec,
|
||||
0x67, 0x0b, 0x56, 0x89, 0x1b, 0xb7, 0xc3, 0x50, 0x55, 0xf0, 0xbc, 0x62, 0xc3, 0xb7, 0xd1, 0xaf,
|
||||
0xed, 0x15, 0xc5, 0x98, 0x89, 0x03, 0x56, 0x37, 0x60, 0x2c, 0x62, 0xc1, 0x86, 0x5b, 0x2d, 0x55,
|
||||
0x17, 0xd0, 0x3e, 0xee, 0x76, 0x83, 0xe0, 0x67, 0x12, 0x7d, 0xa7, 0xf6, 0x73, 0xb1, 0x10, 0x53,
|
||||
0x7e, 0x95, 0x0f, 0x3f, 0x6a, 0x2b, 0x82, 0x48, 0xdb, 0xbe, 0x15, 0x42, 0xc0, 0xea, 0x9b, 0xe8,
|
||||
0x97, 0xdf, 0xc4, 0x59, 0xc6, 0xc4, 0x7e, 0xc9, 0xea, 0xc0, 0x5d, 0x1d, 0x25, 0x1a, 0x29, 0x99,
|
||||
0xb6, 0xfb, 0x71, 0x90, 0x01, 0xc3, 0x5f, 0x46, 0xdf, 0x55, 0x92, 0x33, 0x96, 0xf0, 0x25, 0x2b,
|
||||
0x87, 0x5e, 0x2d, 0x10, 0x12, 0x8f, 0xbc, 0x05, 0x61, 0xdb, 0xfb, 0x3c, 0x5f, 0xb2, 0x52, 0xf8,
|
||||
0x6d, 0x83, 0x30, 0x6c, 0xdb, 0x40, 0x60, 0xfb, 0x6f, 0x07, 0xd1, 0x0f, 0xf6, 0x92, 0x84, 0x2f,
|
||||
0x72, 0xf1, 0x9c, 0x27, 0x71, 0xf6, 0x3c, 0xcd, 0x2f, 0x4f, 0xd8, 0xd5, 0xfe, 0x45, 0xcd, 0xe7,
|
||||
0x33, 0x36, 0x7c, 0xec, 0x3e, 0x55, 0x85, 0x8e, 0x34, 0x3b, 0xb2, 0x61, 0xed, 0xfb, 0xd3, 0xf5,
|
||||
0x94, 0x20, 0x96, 0x7f, 0x1c, 0x44, 0x1b, 0x38, 0x96, 0x31, 0xcf, 0x96, 0xcc, 0x44, 0xf3, 0x59,
|
||||
0x87, 0x61, 0x17, 0xd7, 0xf1, 0x3c, 0x59, 0x57, 0x0d, 0x22, 0xca, 0xa2, 0xef, 0xd9, 0xe9, 0x32,
|
||||
0x66, 0x95, 0x1c, 0x4e, 0xf7, 0xe8, 0x8c, 0x00, 0x44, 0x7b, 0xbe, 0xdf, 0x07, 0x05, 0x6f, 0x69,
|
||||
0x34, 0x04, 0x6f, 0x19, 0xaf, 0xb4, 0xb3, 0xbb, 0x5e, 0x0b, 0x16, 0xa1, 0x7d, 0xdd, 0xeb, 0x41,
|
||||
0x82, 0xab, 0x3f, 0x8c, 0x7e, 0xe5, 0x0d, 0x2f, 0x2f, 0xab, 0x22, 0x4e, 0x18, 0x0c, 0x85, 0x3b,
|
||||
0xae, 0x76, 0x23, 0xc5, 0xa3, 0x61, 0xb3, 0x0b, 0xb3, 0x92, 0xb6, 0x11, 0xbe, 0x2c, 0x18, 0x9e,
|
||||
0x83, 0x8c, 0x62, 0x2d, 0xa4, 0x92, 0x16, 0x43, 0x60, 0xfb, 0x32, 0x1a, 0x1a, 0xdb, 0xe7, 0x7f,
|
||||
0xc4, 0x12, 0xb1, 0x37, 0x9d, 0xe2, 0x5e, 0x31, 0xba, 0x92, 0x18, 0xed, 0x4d, 0xa7, 0x54, 0xaf,
|
||||
0xf8, 0x51, 0x70, 0x76, 0x15, 0xbd, 0x8f, 0x9c, 0x3d, 0x4f, 0x2b, 0xe9, 0x70, 0x27, 0x6c, 0x05,
|
||||
0x30, 0xed, 0x74, 0xd4, 0x17, 0x07, 0xc7, 0x7f, 0x3e, 0x88, 0xbe, 0xef, 0xf1, 0x7c, 0xc6, 0xe6,
|
||||
0x7c, 0xc9, 0x86, 0x0f, 0xbb, 0xad, 0x29, 0x52, 0xfb, 0xff, 0x64, 0x0d, 0x0d, 0x4f, 0x9a, 0x8c,
|
||||
0x59, 0xc6, 0x12, 0x41, 0xa6, 0x89, 0x12, 0x77, 0xa6, 0x89, 0xc6, 0xac, 0x11, 0xd6, 0x08, 0x8f,
|
||||
0x98, 0xd8, 0x5f, 0x94, 0x25, 0xcb, 0x05, 0xd9, 0x97, 0x06, 0xe9, 0xec, 0x4b, 0x07, 0xf5, 0xb4,
|
||||
0xe7, 0x88, 0x89, 0xbd, 0x2c, 0x23, 0xdb, 0xa3, 0xc4, 0x9d, 0xed, 0xd1, 0x18, 0x78, 0x48, 0xa2,
|
||||
0x5f, 0xb5, 0x9e, 0x98, 0x38, 0xce, 0xdf, 0xf2, 0x21, 0xfd, 0x2c, 0xa4, 0x5c, 0xfb, 0xd8, 0xea,
|
||||
0xe4, 0x3c, 0xcd, 0x78, 0x76, 0x5d, 0xf0, 0x92, 0xee, 0x16, 0x25, 0xee, 0x6c, 0x86, 0xc6, 0xc0,
|
||||
0xc3, 0x1f, 0x44, 0xef, 0xc1, 0x2c, 0xd9, 0xac, 0x67, 0xb7, 0xbd, 0x53, 0x28, 0x5e, 0xd0, 0xee,
|
||||
0x74, 0x50, 0x66, 0x72, 0x00, 0x19, 0x4c, 0x3e, 0x1f, 0x7b, 0xf5, 0xd0, 0xd4, 0x73, 0x3b, 0x0c,
|
||||
0xb5, 0x6c, 0x1f, 0xb0, 0x8c, 0x91, 0xb6, 0x95, 0xb0, 0xc3, 0xb6, 0x86, 0xc0, 0x76, 0x19, 0xfd,
|
||||
0x86, 0x7e, 0x2c, 0xf5, 0x3a, 0x2a, 0xe5, 0xf5, 0x24, 0xbd, 0x4d, 0xb4, 0xdb, 0x86, 0xb4, 0xaf,
|
||||
0x07, 0xfd, 0xe0, 0x56, 0x7b, 0x60, 0x04, 0xfa, 0xdb, 0x83, 0xc6, 0xdf, 0xed, 0x30, 0x04, 0xb6,
|
||||
0xff, 0x6e, 0x10, 0xfd, 0x10, 0x64, 0xcf, 0xf2, 0xf8, 0x3c, 0x63, 0x72, 0x49, 0x3c, 0x61, 0xe2,
|
||||
0x8a, 0x97, 0x97, 0xe3, 0x55, 0x9e, 0x10, 0xcb, 0xbf, 0x1f, 0xee, 0x58, 0xfe, 0x49, 0x25, 0xab,
|
||||
0xe2, 0x83, 0x86, 0x0a, 0x5e, 0xe0, 0x8a, 0xaf, 0x69, 0x81, 0xe0, 0x05, 0x55, 0xf1, 0xb9, 0x48,
|
||||
0xcb, 0xea, 0x8b, 0x7a, 0xda, 0xf4, 0x5b, 0x7d, 0x61, 0xcf, 0x93, 0xb7, 0x42, 0x88, 0x99, 0xb6,
|
||||
0x9a, 0x04, 0xe6, 0xf9, 0xdb, 0x74, 0xf6, 0xaa, 0x98, 0xd6, 0x69, 0x7c, 0xcf, 0x9f, 0xa1, 0x16,
|
||||
0x42, 0x4c, 0x5b, 0x04, 0x0a, 0xde, 0xfe, 0xc1, 0x14, 0x46, 0x30, 0x94, 0x0e, 0x4b, 0x3e, 0x7f,
|
||||
0xce, 0x66, 0x71, 0xb2, 0x82, 0xf1, 0xff, 0x69, 0x68, 0xe0, 0x61, 0x5a, 0x07, 0xf1, 0xd9, 0x9a,
|
||||
0x5a, 0x10, 0xcf, 0x7f, 0x0e, 0xa2, 0xdb, 0x4d, 0xf3, 0x2f, 0xe2, 0x7c, 0xc6, 0xa0, 0x3f, 0x55,
|
||||
0xf4, 0x7b, 0xf9, 0xf4, 0x8c, 0x55, 0x22, 0x2e, 0xc5, 0xf0, 0xc7, 0xfe, 0x46, 0x86, 0x74, 0x74,
|
||||
0x6c, 0x3f, 0xf9, 0x56, 0xba, 0xa6, 0xd7, 0xc7, 0xf5, 0xc4, 0x06, 0x53, 0x80, 0xdb, 0xeb, 0x52,
|
||||
0x82, 0x27, 0x80, 0x5b, 0x21, 0xc4, 0xf4, 0xba, 0x14, 0x1c, 0xe7, 0xcb, 0x54, 0xb0, 0x23, 0x96,
|
||||
0xb3, 0xb2, 0xdd, 0xeb, 0x4a, 0xd5, 0x45, 0x88, 0x5e, 0x27, 0x50, 0x33, 0xd9, 0x38, 0xde, 0xf4,
|
||||
0xe2, 0xb8, 0x1d, 0x30, 0xd2, 0x5a, 0x1e, 0x1f, 0xf4, 0x83, 0xcd, 0xee, 0xce, 0xf2, 0x79, 0xc6,
|
||||
0x96, 0xfc, 0x12, 0xef, 0xee, 0x6c, 0x13, 0x0a, 0x20, 0x76, 0x77, 0x5e, 0xd0, 0xac, 0x60, 0x96,
|
||||
0x9f, 0xd7, 0x29, 0xbb, 0x42, 0x2b, 0x98, 0xad, 0x5c, 0x8b, 0x89, 0x15, 0xcc, 0x83, 0x81, 0x87,
|
||||
0x93, 0xe8, 0x97, 0xa4, 0xf0, 0xf7, 0x78, 0x9a, 0x0f, 0x6f, 0x7a, 0x94, 0x6a, 0x81, 0xb6, 0xfa,
|
||||
0x21, 0x0d, 0xa0, 0x88, 0xeb, 0xbf, 0xee, 0xc7, 0x79, 0xc2, 0x32, 0x6f, 0xc4, 0x46, 0x1c, 0x8c,
|
||||
0xd8, 0xc1, 0x50, 0xc4, 0xcf, 0xae, 0x53, 0xe1, 0x8d, 0xb8, 0x16, 0x04, 0x23, 0x06, 0x00, 0x65,
|
||||
0x2b, 0x68, 0xec, 0x15, 0x45, 0x59, 0xcf, 0x80, 0xbe, 0x6c, 0x75, 0x91, 0x60, 0xb6, 0xb6, 0x50,
|
||||
0xbf, 0xb7, 0x03, 0x96, 0x64, 0x69, 0x1e, 0xf4, 0x06, 0x48, 0x1f, 0x6f, 0x06, 0x05, 0x6f, 0x8b,
|
||||
0xe8, 0x7d, 0x09, 0x9c, 0xc6, 0xa5, 0x48, 0x93, 0xb4, 0x88, 0xf3, 0xa6, 0x2e, 0xf6, 0xe5, 0x7b,
|
||||
0x8b, 0xd2, 0x3e, 0x77, 0x7a, 0xd2, 0xe0, 0xf6, 0xdf, 0x07, 0xd1, 0x47, 0xd8, 0xef, 0x29, 0x2b,
|
||||
0xe7, 0xa9, 0xdc, 0x5e, 0x55, 0x6a, 0x72, 0x1a, 0x7e, 0x1e, 0x36, 0xda, 0x52, 0xd0, 0xd1, 0xfc,
|
||||
0x68, 0x7d, 0x45, 0x08, 0xec, 0xf7, 0xa3, 0x48, 0x95, 0xf1, 0x72, 0xab, 0xe5, 0xe6, 0x06, 0xd4,
|
||||
0xf7, 0xce, 0x3e, 0xeb, 0xa3, 0x00, 0x61, 0xa6, 0x50, 0xf5, 0x77, 0xb9, 0x83, 0x1c, 0x7a, 0x35,
|
||||
0xa4, 0x88, 0x98, 0x42, 0x11, 0x82, 0x03, 0x1d, 0x5f, 0xf0, 0x2b, 0x7f, 0xa0, 0xb5, 0x24, 0x1c,
|
||||
0x28, 0x10, 0xe6, 0x4c, 0x07, 0x02, 0xf5, 0x9d, 0xe9, 0x34, 0x61, 0x84, 0xce, 0x74, 0x30, 0x03,
|
||||
0x86, 0x79, 0xf4, 0xeb, 0xb6, 0xe1, 0xa7, 0x9c, 0x5f, 0xce, 0xe3, 0xf2, 0x72, 0x78, 0x9f, 0x56,
|
||||
0x6e, 0x18, 0xed, 0x68, 0xbb, 0x17, 0x6b, 0xc6, 0x90, 0xed, 0xb0, 0x5e, 0x80, 0x5f, 0x95, 0x19,
|
||||
0x1a, 0x43, 0x8e, 0x0d, 0x40, 0x88, 0x31, 0x44, 0xa0, 0x66, 0x46, 0xb3, 0xbd, 0x8d, 0x19, 0xde,
|
||||
0x45, 0x38, 0xea, 0x63, 0x46, 0xed, 0x22, 0x3c, 0x18, 0x4e, 0xa1, 0xa3, 0x32, 0x2e, 0x2e, 0xfc,
|
||||
0x29, 0x24, 0x45, 0xe1, 0x14, 0x6a, 0x10, 0xdc, 0xdf, 0x63, 0x16, 0x97, 0xc9, 0x85, 0xbf, 0xbf,
|
||||
0x95, 0x2c, 0xdc, 0xdf, 0x9a, 0x31, 0x0b, 0xae, 0x6d, 0x78, 0xbc, 0x38, 0xaf, 0x92, 0x32, 0x3d,
|
||||
0x67, 0xc3, 0x6d, 0x5a, 0x5b, 0x43, 0xc4, 0x82, 0x4b, 0xc2, 0xe6, 0xcc, 0x07, 0x7c, 0x36, 0xb2,
|
||||
0xe3, 0x69, 0x85, 0xce, 0x7c, 0x1a, 0x1b, 0x16, 0x41, 0x9c, 0xf9, 0xf8, 0x49, 0xdc, 0xbc, 0xa3,
|
||||
0x92, 0x2f, 0x8a, 0xaa, 0xa3, 0x79, 0x08, 0x0a, 0x37, 0xaf, 0x0d, 0x83, 0xcf, 0xeb, 0xe8, 0x37,
|
||||
0xed, 0x47, 0xfa, 0x2a, 0xaf, 0xb4, 0xd7, 0x1d, 0xfa, 0x39, 0x59, 0x18, 0x71, 0x7a, 0x12, 0xc0,
|
||||
0xcd, 0x46, 0xbc, 0xf1, 0x2c, 0x0e, 0x98, 0x88, 0xd3, 0xac, 0x1a, 0x6e, 0xfa, 0x6d, 0x34, 0x72,
|
||||
0x62, 0x23, 0xee, 0xe3, 0xf0, 0x10, 0x3a, 0x58, 0x14, 0x59, 0x9a, 0xb4, 0x8f, 0xd1, 0x40, 0x57,
|
||||
0x8b, 0xc3, 0x43, 0xc8, 0xc6, 0xf0, 0x94, 0x30, 0x66, 0x42, 0xfd, 0xcf, 0x64, 0x55, 0x30, 0xff,
|
||||
0x94, 0xe0, 0x20, 0xe1, 0x29, 0x01, 0xa3, 0xb8, 0x3d, 0x63, 0x26, 0x9e, 0xc7, 0x2b, 0xbe, 0x20,
|
||||
0xa6, 0x04, 0x2d, 0x0e, 0xb7, 0xc7, 0xc6, 0xcc, 0xc2, 0xad, 0x3d, 0x1c, 0xe7, 0x82, 0x95, 0x79,
|
||||
0x9c, 0x1d, 0x66, 0xf1, 0xac, 0x1a, 0x12, 0xe3, 0xc6, 0xa5, 0x88, 0x85, 0x9b, 0xa6, 0x3d, 0x8f,
|
||||
0xf1, 0xb8, 0x3a, 0x8c, 0x97, 0xbc, 0x4c, 0x05, 0xfd, 0x18, 0x0d, 0xd2, 0xf9, 0x18, 0x1d, 0xd4,
|
||||
0xeb, 0x6d, 0xaf, 0x4c, 0x2e, 0xd2, 0x25, 0x9b, 0x06, 0xbc, 0x35, 0x48, 0x0f, 0x6f, 0x16, 0xea,
|
||||
0xe9, 0xb4, 0x31, 0x5f, 0x94, 0x09, 0x23, 0x3b, 0x4d, 0x89, 0x3b, 0x3b, 0x4d, 0x63, 0xe0, 0xe1,
|
||||
0xaf, 0x06, 0xd1, 0x6f, 0x29, 0xa9, 0x7d, 0xb6, 0x75, 0x10, 0x57, 0x17, 0xe7, 0x3c, 0x2e, 0xa7,
|
||||
0xc3, 0x4f, 0x7c, 0x76, 0xbc, 0xa8, 0x76, 0xfd, 0x68, 0x1d, 0x15, 0xfc, 0x58, 0x9f, 0xa7, 0x95,
|
||||
0x35, 0xe2, 0xbc, 0x8f, 0xd5, 0x41, 0xc2, 0x8f, 0x15, 0xa3, 0x78, 0x02, 0x91, 0x72, 0xb5, 0x8f,
|
||||
0xdc, 0x24, 0xf5, 0xdd, 0xcd, 0xe4, 0x56, 0x27, 0x87, 0xe7, 0xc7, 0x5a, 0xe8, 0x66, 0xcb, 0x0e,
|
||||
0x65, 0xc3, 0x9f, 0x31, 0xa3, 0xbe, 0x38, 0xe9, 0x59, 0x8f, 0x8a, 0xb0, 0xe7, 0xd6, 0xc8, 0x18,
|
||||
0xf5, 0xc5, 0x09, 0xcf, 0xd6, 0xb4, 0x16, 0xf2, 0xec, 0x99, 0xda, 0x46, 0x7d, 0x71, 0x9c, 0x40,
|
||||
0x7b, 0x45, 0x91, 0xad, 0x26, 0x6c, 0x5e, 0x64, 0x64, 0x02, 0x39, 0x48, 0x38, 0x81, 0x30, 0x8a,
|
||||
0xab, 0x9f, 0x09, 0xaf, 0x6b, 0x2b, 0x6f, 0xf5, 0x23, 0x45, 0xe1, 0xea, 0xa7, 0x41, 0x70, 0xc1,
|
||||
0x30, 0xe1, 0xfb, 0x3c, 0xcb, 0x58, 0x22, 0xda, 0x97, 0x44, 0x5a, 0xd3, 0x10, 0xe1, 0x82, 0x01,
|
||||
0x91, 0xe6, 0x30, 0xa0, 0xa9, 0xd5, 0xe3, 0x92, 0x3d, 0x5d, 0x3d, 0x4f, 0xf3, 0xcb, 0xa1, 0x7f,
|
||||
0x6d, 0x34, 0x00, 0x71, 0x18, 0xe0, 0x05, 0xf1, 0x9e, 0xe0, 0x55, 0x3e, 0xe5, 0xfe, 0x3d, 0x41,
|
||||
0x2d, 0x09, 0xef, 0x09, 0x80, 0xc0, 0x26, 0xcf, 0x18, 0x65, 0xb2, 0x96, 0x84, 0x4d, 0x02, 0xe1,
|
||||
0x9b, 0x0f, 0xe0, 0xd4, 0x8d, 0x9c, 0x0f, 0xd0, 0x39, 0xdb, 0x56, 0x27, 0x87, 0x33, 0xb4, 0xd9,
|
||||
0x1c, 0x1c, 0x32, 0x91, 0x5c, 0xf8, 0x33, 0xd4, 0x41, 0xc2, 0x19, 0x8a, 0x51, 0xdc, 0xa4, 0x09,
|
||||
0xd7, 0x9b, 0x9b, 0x4d, 0x7f, 0x7e, 0xb4, 0x36, 0x36, 0x5b, 0x9d, 0x1c, 0x2e, 0xd7, 0x8f, 0xe7,
|
||||
0xf2, 0x99, 0x79, 0x93, 0x5c, 0xc9, 0xc2, 0xe5, 0xba, 0x66, 0x70, 0xf4, 0x4a, 0x50, 0x3f, 0x4e,
|
||||
0x7f, 0xf4, 0x46, 0x1e, 0x8e, 0xde, 0xe1, 0xc0, 0xc9, 0xbf, 0x0e, 0xa2, 0x9b, 0xb6, 0x97, 0x13,
|
||||
0x5e, 0x8f, 0x91, 0xd7, 0x71, 0x96, 0x4e, 0x63, 0xc1, 0x26, 0xfc, 0x92, 0xe5, 0x68, 0xbf, 0xef,
|
||||
0x46, 0xab, 0xf8, 0x91, 0xa3, 0x40, 0xec, 0xf7, 0x7b, 0x29, 0xe2, 0x3c, 0x51, 0xf4, 0xab, 0x8a,
|
||||
0xed, 0xc7, 0x15, 0x31, 0x93, 0x39, 0x48, 0x38, 0x4f, 0x30, 0x8a, 0x8b, 0x36, 0x25, 0x7f, 0x76,
|
||||
0x5d, 0xb0, 0x32, 0x65, 0x79, 0xc2, 0xfc, 0x45, 0x1b, 0xa6, 0xc2, 0x45, 0x9b, 0x87, 0x6e, 0x6d,
|
||||
0x87, 0xf5, 0xe4, 0xd4, 0xbe, 0xe7, 0xc5, 0x44, 0xe0, 0x9e, 0x97, 0x40, 0x71, 0x23, 0x0d, 0xe0,
|
||||
0x3d, 0x52, 0x6a, 0x59, 0x09, 0x1e, 0x29, 0xd1, 0x74, 0xeb, 0x90, 0x41, 0x33, 0xe3, 0x7a, 0x98,
|
||||
0x74, 0x84, 0x3e, 0xb6, 0x87, 0xcb, 0x76, 0x2f, 0xd6, 0x7f, 0xaa, 0x71, 0xc6, 0xb2, 0x58, 0x2e,
|
||||
0x21, 0x81, 0xa3, 0x83, 0x86, 0xe9, 0x73, 0xaa, 0x61, 0xb1, 0xe0, 0xf0, 0x2f, 0x06, 0xd1, 0x0d,
|
||||
0x9f, 0xc7, 0x97, 0x85, 0xf4, 0xfb, 0xb0, 0xdb, 0x96, 0x22, 0x89, 0x8b, 0xec, 0xb0, 0x06, 0xc4,
|
||||
0xf0, 0x27, 0xd1, 0x07, 0x8d, 0xc8, 0xdc, 0x73, 0x43, 0x00, 0x6e, 0x15, 0xa1, 0xe3, 0xc7, 0x9c,
|
||||
0x76, 0xbf, 0xdb, 0x9b, 0x37, 0x05, 0xba, 0x1b, 0x57, 0x85, 0x0a, 0x74, 0x6d, 0x03, 0xc4, 0x44,
|
||||
0x81, 0xee, 0xc1, 0xf0, 0x4a, 0xdd, 0x20, 0xf5, 0x38, 0xf1, 0xcd, 0x71, 0xda, 0x84, 0x3d, 0x4a,
|
||||
0xee, 0x76, 0x83, 0x38, 0x77, 0x1a, 0x31, 0xd4, 0xc5, 0xf7, 0x43, 0x16, 0x50, 0x6d, 0xbc, 0xdd,
|
||||
0x8b, 0x05, 0x87, 0x7f, 0x16, 0x7d, 0xbf, 0xd5, 0xb0, 0x43, 0x16, 0x8b, 0x45, 0xc9, 0xa6, 0xc3,
|
||||
0xdd, 0x8e, 0xb8, 0x1b, 0x50, 0xbb, 0x7e, 0xd8, 0x5f, 0x01, 0xfc, 0xff, 0xcd, 0x20, 0xfa, 0x81,
|
||||
0xcb, 0xa9, 0x2e, 0xd6, 0x31, 0x3c, 0x0a, 0x99, 0x74, 0x59, 0x1d, 0xc6, 0xe3, 0xb5, 0x74, 0x5a,
|
||||
0x7b, 0x30, 0x3b, 0x91, 0xf7, 0x96, 0x71, 0x9a, 0xc5, 0xe7, 0x19, 0xf3, 0xee, 0xc1, 0x9c, 0xdc,
|
||||
0xd4, 0x68, 0x70, 0x0f, 0x46, 0xaa, 0xb4, 0x66, 0x49, 0x39, 0xde, 0xac, 0xda, 0xfd, 0x01, 0x3d,
|
||||
0x2a, 0x3d, 0xa5, 0xfb, 0x4e, 0x4f, 0x1a, 0xdc, 0x8a, 0xe6, 0xec, 0xaa, 0xfe, 0xb3, 0x9d, 0xe4,
|
||||
0x3e, 0xaf, 0xa0, 0xea, 0xc9, 0xf4, 0x9d, 0x9e, 0x34, 0x78, 0xfd, 0xd3, 0xe8, 0x83, 0xb6, 0x57,
|
||||
0x58, 0x14, 0x76, 0x3b, 0x4d, 0xa1, 0x75, 0xe1, 0x61, 0x7f, 0x05, 0x53, 0xea, 0x7f, 0x91, 0x56,
|
||||
0x82, 0x97, 0xab, 0xf1, 0x05, 0xbf, 0x6a, 0xde, 0xe5, 0x74, 0x47, 0x2b, 0x00, 0x23, 0x8b, 0x20,
|
||||
0x4a, 0x7d, 0x3f, 0xd9, 0x72, 0x65, 0xde, 0xf9, 0xac, 0x08, 0x57, 0x16, 0xd1, 0xe1, 0xca, 0x25,
|
||||
0xcd, 0x5c, 0xd5, 0xb4, 0xca, 0xbc, 0xa0, 0xba, 0xe5, 0x0f, 0xb5, 0xfd, 0x92, 0xea, 0xdd, 0x6e,
|
||||
0xd0, 0x6c, 0xbf, 0x0e, 0xd3, 0x8c, 0xbd, 0x7c, 0xfb, 0x36, 0xe3, 0xf1, 0x14, 0x6d, 0xbf, 0x6a,
|
||||
0xc9, 0x08, 0x44, 0xc4, 0xf6, 0x0b, 0x21, 0xa6, 0xe8, 0xac, 0x05, 0xf2, 0x6e, 0xa6, 0x31, 0xbd,
|
||||
0xd9, 0xd6, 0xb3, 0xe5, 0x44, 0xd1, 0xe9, 0xe3, 0xcc, 0x82, 0x51, 0x4b, 0xeb, 0x21, 0xd8, 0xf8,
|
||||
0xb8, 0xd3, 0xd6, 0xb5, 0xc4, 0xc4, 0x82, 0xe1, 0xc1, 0xcc, 0xfe, 0xa8, 0x16, 0xbe, 0x2a, 0xa4,
|
||||
0xf1, 0x0f, 0xdb, 0x5a, 0x4a, 0x42, 0xec, 0x8f, 0x5c, 0xc2, 0xd4, 0xf9, 0xf5, 0xdf, 0x0f, 0xf8,
|
||||
0x55, 0x2e, 0x8d, 0x7a, 0x9e, 0x66, 0x23, 0x23, 0xea, 0x7c, 0xcc, 0x80, 0xe1, 0x9f, 0x46, 0xbf,
|
||||
0x28, 0x0d, 0x97, 0xbc, 0x18, 0x6e, 0x78, 0x14, 0x4a, 0xeb, 0x8d, 0x90, 0x9b, 0xa4, 0xdc, 0xbc,
|
||||
0xd8, 0xa4, 0xfb, 0xef, 0x55, 0x15, 0xcf, 0x18, 0x7a, 0xb1, 0xc9, 0xf4, 0x8a, 0x94, 0x12, 0x2f,
|
||||
0x36, 0xb5, 0x29, 0xf3, 0xb2, 0x4e, 0x2d, 0x3b, 0xe1, 0x53, 0xb0, 0xee, 0x69, 0xa1, 0x16, 0x12,
|
||||
0x2f, 0xeb, 0xb4, 0x20, 0x73, 0x7e, 0x7f, 0x12, 0x2f, 0xd3, 0x99, 0x9e, 0xfc, 0xd5, 0x1c, 0x52,
|
||||
0xa1, 0xf3, 0x7b, 0xc3, 0x8c, 0x2c, 0x88, 0x38, 0xbf, 0x27, 0x61, 0xf0, 0xf9, 0x2f, 0x83, 0xe8,
|
||||
0x43, 0xc3, 0x1c, 0x35, 0xc7, 0x2a, 0xc7, 0xf9, 0x5b, 0xfe, 0x26, 0x15, 0x17, 0xf5, 0x3e, 0xbe,
|
||||
0x1a, 0x3e, 0xa1, 0x4c, 0xfa, 0x79, 0x1d, 0xca, 0xe7, 0x6b, 0xeb, 0x99, 0x6a, 0xae, 0x39, 0x6e,
|
||||
0x31, 0x77, 0x5b, 0x4a, 0x03, 0x55, 0x73, 0xfa, 0x54, 0x06, 0x73, 0x44, 0x35, 0x17, 0xe2, 0x4d,
|
||||
0x17, 0x6b, 0xe7, 0x19, 0xcf, 0x71, 0x17, 0x1b, 0x0b, 0xb5, 0x90, 0xe8, 0xe2, 0x16, 0x64, 0xe6,
|
||||
0xc6, 0x46, 0xa4, 0x4e, 0x06, 0xf6, 0xb2, 0x0c, 0xcd, 0x8d, 0x5a, 0x55, 0x03, 0xc4, 0xdc, 0xe8,
|
||||
0x05, 0xc1, 0xcf, 0x59, 0xf4, 0x9d, 0xfa, 0x91, 0x9e, 0x96, 0x6c, 0x99, 0x32, 0x7c, 0x0d, 0x6b,
|
||||
0x49, 0x88, 0xf1, 0xef, 0x12, 0x66, 0x64, 0xbd, 0xca, 0xab, 0x22, 0x8b, 0xab, 0x0b, 0xb8, 0x98,
|
||||
0x73, 0xdb, 0xdc, 0x08, 0xf1, 0xd5, 0xdc, 0x9d, 0x0e, 0xca, 0x4c, 0xbc, 0x8d, 0x4c, 0x4f, 0x31,
|
||||
0x9b, 0x7e, 0xd5, 0xd6, 0x34, 0xb3, 0xd5, 0xc9, 0x99, 0xa3, 0xc9, 0xa3, 0x38, 0xcb, 0x58, 0xb9,
|
||||
0x6a, 0x64, 0x2f, 0xe2, 0x3c, 0x7d, 0xcb, 0x2a, 0x81, 0x8e, 0x26, 0x81, 0x1a, 0x61, 0x8c, 0x38,
|
||||
0x9a, 0x0c, 0xe0, 0xa6, 0xb2, 0x46, 0x9e, 0x8f, 0xf3, 0x29, 0xbb, 0x46, 0x95, 0x35, 0xb6, 0x23,
|
||||
0x19, 0xa2, 0xb2, 0xa6, 0x58, 0xb3, 0x3c, 0x3e, 0xcd, 0x78, 0x72, 0x09, 0x4b, 0x80, 0xdb, 0xc1,
|
||||
0x52, 0x82, 0xd7, 0x80, 0x5b, 0x21, 0xc4, 0x2c, 0x02, 0x52, 0x70, 0xc6, 0x8a, 0x2c, 0x4e, 0xf0,
|
||||
0x5d, 0xbc, 0xd2, 0x01, 0x19, 0xb1, 0x08, 0x60, 0x06, 0x85, 0x0b, 0x77, 0xfc, 0xbe, 0x70, 0xd1,
|
||||
0x15, 0xff, 0xad, 0x10, 0x62, 0x96, 0x41, 0x29, 0x18, 0x17, 0x59, 0x2a, 0xd0, 0x30, 0x50, 0x1a,
|
||||
0x52, 0x42, 0x0c, 0x03, 0x97, 0x40, 0x26, 0x5f, 0xb0, 0x72, 0xc6, 0xbc, 0x26, 0xa5, 0x24, 0x68,
|
||||
0xb2, 0x21, 0xcc, 0x8b, 0x41, 0xaa, 0xed, 0xbc, 0x58, 0xa1, 0x17, 0x83, 0xa0, 0x59, 0xbc, 0x58,
|
||||
0x11, 0x2f, 0x06, 0x39, 0x00, 0x0a, 0xf1, 0x34, 0xae, 0x84, 0x3f, 0x44, 0x29, 0x09, 0x86, 0xd8,
|
||||
0x10, 0x66, 0x8d, 0x56, 0x21, 0x2e, 0x04, 0x5a, 0xa3, 0x21, 0x00, 0xeb, 0xaa, 0xf0, 0x26, 0x29,
|
||||
0x37, 0x33, 0x89, 0xea, 0x15, 0x26, 0x0e, 0x53, 0x96, 0x4d, 0x2b, 0x34, 0x93, 0xc0, 0x73, 0x6f,
|
||||
0xa4, 0xc4, 0x4c, 0xd2, 0xa6, 0x50, 0x2a, 0xc1, 0x19, 0xae, 0xaf, 0x75, 0xe8, 0xf8, 0xf6, 0x56,
|
||||
0x08, 0x31, 0xf3, 0x53, 0x13, 0xf4, 0x7e, 0x5c, 0x96, 0x69, 0xbd, 0xf8, 0x6f, 0xfa, 0x03, 0x6a,
|
||||
0xe4, 0xc4, 0xfc, 0xe4, 0xe3, 0xd0, 0xf0, 0x6a, 0x26, 0x6e, 0x5f, 0x60, 0x78, 0xea, 0xfe, 0x38,
|
||||
0xc8, 0x98, 0x8a, 0x53, 0x4a, 0xac, 0xbb, 0x2e, 0xdf, 0xd3, 0xf4, 0x5c, 0x75, 0x6d, 0x76, 0x61,
|
||||
0xd6, 0xab, 0xc6, 0xda, 0xc5, 0x0b, 0xbe, 0x64, 0x13, 0xfe, 0xec, 0x3a, 0xad, 0x44, 0x9a, 0xcf,
|
||||
0x60, 0xe5, 0x7e, 0x4c, 0x58, 0xf2, 0xc1, 0xc4, 0xab, 0xc6, 0x9d, 0x4a, 0xa6, 0x80, 0x40, 0xb1,
|
||||
0x9c, 0xb0, 0x2b, 0x6f, 0x01, 0x81, 0x2d, 0x6a, 0x8e, 0x28, 0x20, 0x42, 0xbc, 0x39, 0xd3, 0xd0,
|
||||
0xce, 0xe1, 0xf7, 0x58, 0x13, 0xde, 0xd4, 0x72, 0x94, 0x35, 0x0c, 0x12, 0xdb, 0xca, 0xa0, 0x82,
|
||||
0xd9, 0xeb, 0x69, 0xff, 0x66, 0x88, 0xdd, 0x25, 0xec, 0xb4, 0x87, 0xd9, 0xbd, 0x1e, 0xa4, 0xc7,
|
||||
0x95, 0xb9, 0xb0, 0xa5, 0x5c, 0xb5, 0xef, 0x6b, 0xef, 0xf5, 0x20, 0xad, 0xf3, 0x11, 0xbb, 0x59,
|
||||
0x4f, 0xe3, 0xe4, 0x72, 0x56, 0xf2, 0x45, 0x3e, 0xdd, 0xe7, 0x19, 0x2f, 0xd1, 0xf9, 0x88, 0x13,
|
||||
0x35, 0x42, 0x89, 0xf3, 0x91, 0x0e, 0x15, 0x53, 0xc1, 0xd9, 0x51, 0xec, 0x65, 0xe9, 0x0c, 0xef,
|
||||
0x6e, 0x1d, 0x43, 0x12, 0x20, 0x2a, 0x38, 0x2f, 0xe8, 0x49, 0x22, 0xb5, 0xfb, 0x15, 0x69, 0x12,
|
||||
0x67, 0xca, 0xdf, 0x2e, 0x6d, 0xc6, 0x01, 0x3b, 0x93, 0xc8, 0xa3, 0xe0, 0x69, 0xe7, 0x64, 0x51,
|
||||
0xe6, 0xc7, 0xb9, 0xe0, 0x64, 0x3b, 0x1b, 0xa0, 0xb3, 0x9d, 0x16, 0x88, 0xa6, 0xd5, 0x09, 0xbb,
|
||||
0xae, 0xa3, 0xa9, 0xff, 0xe3, 0x9b, 0x56, 0xeb, 0xbf, 0x8f, 0x40, 0x1e, 0x9a, 0x56, 0x11, 0x87,
|
||||
0x1a, 0x03, 0x4e, 0x54, 0xc2, 0x04, 0xb4, 0xdd, 0x34, 0xb9, 0xdb, 0x0d, 0xfa, 0xfd, 0x8c, 0xc5,
|
||||
0x2a, 0x63, 0x21, 0x3f, 0x12, 0xe8, 0xe3, 0xa7, 0x01, 0xcd, 0xc5, 0x89, 0xd3, 0x9e, 0x0b, 0x96,
|
||||
0x5c, 0xb6, 0xde, 0x3f, 0x71, 0x03, 0x55, 0x08, 0x71, 0x71, 0x42, 0xa0, 0xfe, 0x2e, 0x3a, 0x4e,
|
||||
0x78, 0x1e, 0xea, 0xa2, 0x5a, 0xde, 0xa7, 0x8b, 0x80, 0x33, 0x9b, 0x5f, 0x2d, 0x85, 0xcc, 0x54,
|
||||
0xdd, 0xb4, 0x4d, 0x58, 0xb0, 0x21, 0x62, 0xf3, 0x4b, 0xc2, 0xa6, 0x26, 0xc7, 0x3e, 0x5f, 0xb4,
|
||||
0xdf, 0xff, 0x6c, 0x59, 0x79, 0x41, 0xbf, 0xff, 0x49, 0xb1, 0x74, 0x23, 0x55, 0x8e, 0x74, 0x58,
|
||||
0x71, 0xf3, 0xe4, 0x41, 0x3f, 0xd8, 0x6c, 0x79, 0x1c, 0x9f, 0xfb, 0x19, 0x8b, 0x4b, 0xe5, 0x75,
|
||||
0x27, 0x60, 0xc8, 0x60, 0xc4, 0x96, 0x27, 0x80, 0xa3, 0x29, 0xcc, 0xf1, 0xbc, 0xcf, 0x73, 0xc1,
|
||||
0x72, 0xe1, 0x9b, 0xc2, 0x5c, 0x63, 0x00, 0x86, 0xa6, 0x30, 0x4a, 0x01, 0xe5, 0xad, 0x3c, 0x0f,
|
||||
0x62, 0xe2, 0x24, 0x9e, 0x7b, 0x2b, 0x36, 0x75, 0xd6, 0xa3, 0xe4, 0xa1, 0xbc, 0x45, 0x1c, 0x1a,
|
||||
0xf2, 0xc7, 0xf3, 0x78, 0xa6, 0xbd, 0x78, 0xb4, 0xa5, 0xbc, 0xe5, 0xe6, 0x6e, 0x37, 0x88, 0xfc,
|
||||
0xbc, 0x4e, 0xa7, 0x8c, 0x07, 0xfc, 0x48, 0x79, 0x1f, 0x3f, 0x18, 0x44, 0x95, 0x53, 0xdd, 0x5a,
|
||||
0xb5, 0x9b, 0xda, 0xcb, 0xa7, 0xb0, 0x87, 0x1c, 0x11, 0x0f, 0x05, 0x71, 0xa1, 0xca, 0x89, 0xe0,
|
||||
0xd1, 0xf8, 0x68, 0x0e, 0x47, 0x43, 0xe3, 0x43, 0x9f, 0x7d, 0xf6, 0x19, 0x1f, 0x3e, 0x18, 0x7c,
|
||||
0xfe, 0x31, 0x8c, 0x8f, 0x83, 0x58, 0xc4, 0x75, 0xcd, 0xfc, 0x3a, 0x65, 0x57, 0xb0, 0x09, 0xf5,
|
||||
0xb4, 0xb7, 0xa1, 0x46, 0xf2, 0xc7, 0x28, 0x68, 0x47, 0xba, 0xdb, 0x9b, 0x0f, 0xf8, 0x86, 0xea,
|
||||
0xbc, 0xd3, 0x37, 0x2a, 0xd3, 0x77, 0x7b, 0xf3, 0x01, 0xdf, 0xf0, 0x2b, 0xb7, 0x4e, 0xdf, 0xe8,
|
||||
0xa7, 0x6e, 0xbb, 0xbd, 0x79, 0xf0, 0xfd, 0x97, 0x83, 0xe8, 0x46, 0xcb, 0x79, 0x5d, 0x03, 0x25,
|
||||
0x22, 0x5d, 0x32, 0x5f, 0x29, 0xe7, 0xda, 0xd3, 0x68, 0xa8, 0x94, 0xa3, 0x55, 0xac, 0x4f, 0x23,
|
||||
0xf8, 0xa2, 0x38, 0xe5, 0x55, 0x2a, 0x2f, 0x8e, 0x1f, 0xf7, 0x30, 0xda, 0xc0, 0xa1, 0x0d, 0x4b,
|
||||
0x48, 0xc9, 0x5c, 0xbb, 0x39, 0xa8, 0x79, 0xd5, 0xf3, 0x41, 0xc0, 0x5e, 0xfb, 0x8d, 0xcf, 0x9d,
|
||||
0x9e, 0xb4, 0xb9, 0x00, 0x73, 0x18, 0xfb, 0xe6, 0x2d, 0xd4, 0xab, 0xde, 0xcb, 0xb7, 0x87, 0xfd,
|
||||
0x15, 0xc0, 0xfd, 0x5f, 0x37, 0x35, 0x3d, 0xf6, 0x0f, 0x83, 0xe0, 0x51, 0x1f, 0x8b, 0x68, 0x20,
|
||||
0x3c, 0x5e, 0x4b, 0x07, 0x02, 0xf9, 0x8f, 0x41, 0x74, 0xcb, 0x1b, 0x88, 0x7b, 0x07, 0xfb, 0xdb,
|
||||
0x7d, 0x6c, 0xfb, 0xef, 0x62, 0x7f, 0xfc, 0x6d, 0x54, 0x21, 0xba, 0xbf, 0x6f, 0xb6, 0xd6, 0x8d,
|
||||
0x86, 0x7c, 0x1d, 0xff, 0x65, 0x39, 0x65, 0x25, 0x8c, 0xd8, 0x50, 0xd2, 0x19, 0x18, 0x8f, 0xdb,
|
||||
0xcf, 0xd6, 0xd4, 0xb2, 0x3e, 0xe3, 0xe1, 0xc0, 0xf0, 0xcb, 0x24, 0x2b, 0x9e, 0x90, 0x65, 0x8b,
|
||||
0xc6, 0x01, 0x3d, 0x59, 0x57, 0x8d, 0x1a, 0xc9, 0x16, 0x2c, 0x7f, 0x15, 0xfc, 0xb8, 0xa7, 0x61,
|
||||
0xe7, 0x77, 0xc2, 0x9f, 0xae, 0xa7, 0x04, 0xb1, 0xfc, 0xd7, 0x20, 0xba, 0xe3, 0xb0, 0xe6, 0xa6,
|
||||
0x01, 0x9d, 0x87, 0xfc, 0x24, 0x60, 0x9f, 0x52, 0xd2, 0xc1, 0xfd, 0xce, 0xb7, 0x53, 0x36, 0xdf,
|
||||
0xbc, 0x70, 0x54, 0x0e, 0xd3, 0x4c, 0xb0, 0xb2, 0xfd, 0xcd, 0x0b, 0xd7, 0xae, 0xa2, 0x46, 0xf4,
|
||||
0x37, 0x2f, 0x02, 0xb8, 0xf5, 0xcd, 0x0b, 0x8f, 0x67, 0xef, 0x37, 0x2f, 0xbc, 0xd6, 0x82, 0xdf,
|
||||
0xbc, 0x08, 0x6b, 0x50, 0x8b, 0x4f, 0x13, 0x82, 0x3a, 0xd1, 0xee, 0x65, 0xd1, 0x3d, 0xe0, 0x7e,
|
||||
0xb4, 0x8e, 0x0a, 0xb1, 0xfc, 0x2a, 0x4e, 0xbe, 0x19, 0xd6, 0xe3, 0x99, 0x3a, 0x6f, 0x87, 0xed,
|
||||
0xf6, 0xe6, 0xc1, 0xf7, 0xcf, 0x60, 0xdf, 0xa3, 0x17, 0x1b, 0x5e, 0xca, 0xef, 0x9d, 0x6c, 0x87,
|
||||
0x16, 0x8f, 0xda, 0x82, 0xdd, 0xf3, 0x0f, 0xfa, 0xc1, 0x44, 0x73, 0x6b, 0x02, 0x3a, 0x7d, 0xd4,
|
||||
0x65, 0x08, 0x75, 0xf9, 0x6e, 0x6f, 0x9e, 0x58, 0xe4, 0x94, 0x6f, 0xd5, 0xdb, 0x3d, 0x8c, 0xb9,
|
||||
0x7d, 0xfd, 0xb0, 0xbf, 0x82, 0x79, 0xb5, 0xa5, 0xe5, 0x5e, 0xf6, 0x73, 0xe7, 0x13, 0x74, 0x7a,
|
||||
0x79, 0xa7, 0x27, 0x1d, 0x2a, 0x6e, 0xec, 0xe5, 0xbd, 0xab, 0xb8, 0xf1, 0x2e, 0xf1, 0x9f, 0xae,
|
||||
0xa7, 0x04, 0xb1, 0xfc, 0xf3, 0x20, 0xba, 0x49, 0xc6, 0x02, 0x59, 0xf0, 0xa4, 0xaf, 0x65, 0x94,
|
||||
0x0d, 0x9f, 0xaf, 0xad, 0x07, 0x41, 0xfd, 0xdb, 0x20, 0xfa, 0x30, 0x10, 0x94, 0x4a, 0x8f, 0x35,
|
||||
0xac, 0xbb, 0x69, 0xf2, 0xa3, 0xf5, 0x15, 0xa9, 0xc5, 0xde, 0xc6, 0xc7, 0xed, 0x4f, 0x41, 0x04,
|
||||
0x6c, 0x8f, 0xe9, 0x4f, 0x41, 0x74, 0x6b, 0xe1, 0xc3, 0x9f, 0xba, 0x24, 0x81, 0x7d, 0x91, 0xef,
|
||||
0xf0, 0x47, 0x56, 0x2c, 0x68, 0x3f, 0xb4, 0xd5, 0xc9, 0xf9, 0x9c, 0x3c, 0xbb, 0x2e, 0xe2, 0x7c,
|
||||
0x4a, 0x3b, 0x51, 0xf2, 0x6e, 0x27, 0x9a, 0xc3, 0x87, 0x66, 0xb5, 0xf4, 0x8c, 0x37, 0x9b, 0xbc,
|
||||
0x7b, 0x94, 0xbe, 0x46, 0x82, 0x87, 0x66, 0x2d, 0x94, 0xf0, 0x06, 0x15, 0x6d, 0xc8, 0x1b, 0x2a,
|
||||
0x64, 0xef, 0xf7, 0x41, 0xd1, 0xf6, 0x41, 0x7b, 0xd3, 0x67, 0xf1, 0x0f, 0x42, 0x56, 0x5a, 0xe7,
|
||||
0xf1, 0x3b, 0x3d, 0x69, 0xc2, 0xed, 0x98, 0x89, 0x2f, 0x58, 0x3c, 0x65, 0x65, 0xd0, 0xad, 0xa6,
|
||||
0x7a, 0xb9, 0xb5, 0x69, 0x9f, 0xdb, 0x7d, 0x9e, 0x2d, 0xe6, 0x39, 0x74, 0x26, 0xe9, 0xd6, 0xa6,
|
||||
0xba, 0xdd, 0x22, 0x1a, 0x1f, 0x17, 0x1a, 0xb7, 0xb2, 0xb8, 0xbc, 0x1f, 0x36, 0xe3, 0xd4, 0x94,
|
||||
0xdb, 0xbd, 0x58, 0xba, 0x9d, 0x90, 0x46, 0x1d, 0xed, 0x44, 0x99, 0xb4, 0xd3, 0x93, 0xc6, 0xe7,
|
||||
0x76, 0x96, 0x5b, 0x9d, 0x4f, 0xbb, 0x1d, 0xb6, 0x5a, 0x29, 0xf5, 0xb0, 0xbf, 0x02, 0x3e, 0x25,
|
||||
0x85, 0xac, 0xaa, 0x77, 0x45, 0x87, 0x69, 0x96, 0x0d, 0xb7, 0x03, 0x69, 0xd2, 0x40, 0xc1, 0x53,
|
||||
0x52, 0x0f, 0x4c, 0x64, 0x72, 0x73, 0xaa, 0x98, 0x0f, 0xbb, 0xec, 0x48, 0xaa, 0x57, 0x26, 0xdb,
|
||||
0x34, 0x3a, 0x6d, 0xb3, 0x1e, 0xb5, 0x6e, 0xed, 0x28, 0xfc, 0xe0, 0x5a, 0x0d, 0xde, 0xed, 0xcd,
|
||||
0xa3, 0x6b, 0x78, 0x49, 0xc9, 0x95, 0xe5, 0x36, 0x65, 0xc2, 0x59, 0x49, 0xee, 0x74, 0x50, 0xe8,
|
||||
0xc4, 0x52, 0x0d, 0xa3, 0x37, 0xe9, 0x74, 0xc6, 0x84, 0xf7, 0x06, 0xc9, 0x06, 0x82, 0x37, 0x48,
|
||||
0x08, 0x44, 0x5d, 0xa7, 0xfe, 0x3e, 0x66, 0x62, 0x12, 0x97, 0x33, 0x26, 0x8e, 0xa7, 0xbe, 0xae,
|
||||
0x03, 0x65, 0x8b, 0x0a, 0x75, 0x9d, 0x97, 0x46, 0xb3, 0x81, 0x76, 0x0b, 0xbf, 0xa7, 0xbe, 0x1f,
|
||||
0x32, 0x83, 0x7e, 0x54, 0xbd, 0xdd, 0x8b, 0x45, 0x2b, 0x8a, 0x71, 0x98, 0xce, 0x53, 0xe1, 0x5b,
|
||||
0x51, 0x2c, 0x1b, 0x35, 0x12, 0x5a, 0x51, 0xda, 0x28, 0xd5, 0xbc, 0xba, 0x46, 0x38, 0x9e, 0x86,
|
||||
0x9b, 0xa7, 0x98, 0x7e, 0xcd, 0xd3, 0x6c, 0xeb, 0xc2, 0x33, 0xd7, 0x29, 0x23, 0x2e, 0x60, 0xab,
|
||||
0xec, 0xc9, 0x6d, 0xf9, 0x13, 0x43, 0x0c, 0x86, 0x66, 0x1d, 0x4a, 0xc1, 0xfa, 0x15, 0x8b, 0xe6,
|
||||
0x9a, 0x3b, 0xd9, 0xa2, 0x60, 0x71, 0x19, 0xe7, 0x89, 0x77, 0x6b, 0x2a, 0x0d, 0xb6, 0xc8, 0xd0,
|
||||
0xd6, 0x94, 0xd4, 0x40, 0xd7, 0xe9, 0xee, 0x8f, 0x03, 0x3d, 0x43, 0x41, 0xff, 0x0a, 0xcf, 0xfd,
|
||||
0x6d, 0xe0, 0xbd, 0x1e, 0x24, 0xbe, 0x4e, 0x6f, 0x00, 0x7d, 0x28, 0xaf, 0x9c, 0x7e, 0x12, 0x30,
|
||||
0xe5, 0xa2, 0xa1, 0x6d, 0x30, 0xad, 0x82, 0x92, 0x5a, 0x17, 0xb8, 0x4c, 0xfc, 0x94, 0xad, 0x7c,
|
||||
0x49, 0x6d, 0xea, 0x53, 0x89, 0x84, 0x92, 0xba, 0x8d, 0xa2, 0x3a, 0xd3, 0xde, 0x07, 0x6d, 0x06,
|
||||
0xf4, 0xed, 0xad, 0xcf, 0x56, 0x27, 0x87, 0x46, 0xce, 0x41, 0xba, 0x74, 0xee, 0x30, 0x3c, 0x81,
|
||||
0x1e, 0xa4, 0x4b, 0xff, 0x15, 0xc6, 0x76, 0x2f, 0x16, 0x5f, 0xd5, 0xc7, 0x82, 0x5d, 0x37, 0x77,
|
||||
0xe8, 0x9e, 0x70, 0xa5, 0xbc, 0x75, 0x89, 0x7e, 0xb7, 0x1b, 0x34, 0x2f, 0xc6, 0x9e, 0x96, 0x3c,
|
||||
0x61, 0x55, 0x05, 0xdf, 0xc7, 0x72, 0xdf, 0x3c, 0x02, 0xd9, 0x08, 0x7d, 0x1d, 0xeb, 0x76, 0x18,
|
||||
0x02, 0xdb, 0x5f, 0x44, 0xef, 0x3e, 0xe7, 0xb3, 0x31, 0xcb, 0xa7, 0xc3, 0x1f, 0xba, 0xaf, 0xa2,
|
||||
0xf2, 0xd9, 0xa8, 0xfe, 0xb3, 0xb6, 0xb7, 0x41, 0x89, 0xcd, 0xcb, 0x74, 0x07, 0xec, 0x7c, 0x31,
|
||||
0x9b, 0x94, 0x8c, 0xa1, 0x97, 0xe9, 0xe4, 0xdf, 0x47, 0xb5, 0x80, 0x78, 0x99, 0xce, 0x01, 0xcc,
|
||||
0x2a, 0xa9, 0xed, 0xd5, 0x85, 0x28, 0x7e, 0x59, 0xcd, 0xe8, 0x48, 0x29, 0xb1, 0x4a, 0xb6, 0x29,
|
||||
0xd3, 0x79, 0x52, 0x26, 0x5f, 0x36, 0x1f, 0x2f, 0xe6, 0xf3, 0xb8, 0x5c, 0xa1, 0xce, 0x53, 0xba,
|
||||
0x36, 0x40, 0x74, 0x9e, 0x17, 0x34, 0x59, 0xa9, 0xfc, 0x88, 0x38, 0xb9, 0x3c, 0xe2, 0x25, 0x5f,
|
||||
0x88, 0x34, 0x67, 0x15, 0xca, 0x4a, 0xb0, 0xe0, 0x32, 0x44, 0x56, 0x52, 0xac, 0xa9, 0xe2, 0x24,
|
||||
0xa1, 0xde, 0xa3, 0x93, 0x5f, 0x85, 0xac, 0x04, 0x2f, 0xf1, 0x5d, 0x9e, 0xb2, 0x82, 0x21, 0xa2,
|
||||
0x8a, 0x23, 0x61, 0xd4, 0xf7, 0xa7, 0x69, 0x3e, 0xf3, 0xf6, 0x7d, 0x2d, 0x08, 0xf6, 0x3d, 0x00,
|
||||
0x66, 0x3e, 0x56, 0x0f, 0x4d, 0x7d, 0x7e, 0x06, 0x7e, 0xdb, 0xe7, 0x7d, 0xe8, 0x36, 0x41, 0xcc,
|
||||
0xc7, 0x7e, 0x12, 0xb9, 0x7a, 0x59, 0xb0, 0x9c, 0x4d, 0x9b, 0xb7, 0xc5, 0x7c, 0xae, 0x1c, 0x22,
|
||||
0xe8, 0x0a, 0x93, 0x26, 0x15, 0x5e, 0x30, 0x51, 0xa6, 0x49, 0x35, 0x66, 0xe2, 0x34, 0x2e, 0xe3,
|
||||
0x39, 0x13, 0xac, 0xc4, 0xa9, 0x00, 0xc8, 0xc8, 0x61, 0x88, 0x54, 0xa0, 0x58, 0x70, 0xf8, 0xbb,
|
||||
0xd1, 0xf7, 0xea, 0x99, 0x8b, 0xe5, 0xf0, 0x99, 0xea, 0x67, 0xf2, 0xfb, 0xf6, 0xc3, 0xf7, 0xb5,
|
||||
0x8d, 0xb1, 0x28, 0x59, 0x3c, 0x6f, 0x6c, 0xbf, 0xa7, 0xff, 0x2e, 0xc1, 0x87, 0x83, 0x7a, 0xde,
|
||||
0x3e, 0xe1, 0x22, 0x7d, 0x5b, 0x6f, 0x14, 0xe0, 0x52, 0x06, 0xcd, 0xdb, 0xb6, 0x78, 0x14, 0xf8,
|
||||
0x25, 0xb8, 0x8f, 0x33, 0x23, 0xd1, 0x96, 0x9e, 0xb1, 0x22, 0xc3, 0x23, 0xd1, 0xd1, 0x96, 0x00,
|
||||
0x31, 0x12, 0xbd, 0xa0, 0x59, 0x84, 0x6c, 0xf1, 0x84, 0x85, 0x1b, 0x33, 0x61, 0xfd, 0x1a, 0x33,
|
||||
0x71, 0x5e, 0x37, 0xaf, 0xf7, 0x50, 0x25, 0x8f, 0xa7, 0x49, 0x5c, 0x89, 0xd3, 0x78, 0x95, 0xf1,
|
||||
0x78, 0x2a, 0x1f, 0x26, 0xde, 0x43, 0x35, 0xcc, 0xc8, 0x86, 0xa8, 0x3d, 0x14, 0x05, 0x2b, 0x9f,
|
||||
0x4f, 0x3f, 0xfa, 0xdf, 0xaf, 0x37, 0x06, 0x5f, 0x7d, 0xbd, 0x31, 0xf8, 0xff, 0xaf, 0x37, 0x06,
|
||||
0xff, 0xf4, 0xcd, 0xc6, 0x3b, 0x5f, 0x7d, 0xb3, 0xf1, 0xce, 0xff, 0x7d, 0xb3, 0xf1, 0xce, 0x97,
|
||||
0xef, 0xc2, 0xbf, 0x86, 0x70, 0xfe, 0x0b, 0xf2, 0xdf, 0x34, 0x78, 0xfc, 0xf3, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xeb, 0xbf, 0x4d, 0x5d, 0x31, 0x61, 0x00, 0x00,
|
||||
// 4410 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x1d, 0x49,
|
||||
0x56, 0xc0, 0xe7, 0xbe, 0x30, 0xd0, 0xcb, 0x0e, 0x70, 0x17, 0x86, 0xd9, 0xb0, 0xeb, 0x64, 0x32,
|
||||
0x89, 0x9d, 0xc4, 0xf1, 0x75, 0x26, 0x99, 0x8f, 0x65, 0x17, 0x09, 0x39, 0x76, 0xec, 0x31, 0x9b,
|
||||
0x38, 0xc6, 0xd7, 0x49, 0xa4, 0x91, 0x90, 0x68, 0xf7, 0xad, 0x5c, 0x37, 0x6e, 0x77, 0xf5, 0x76,
|
||||
0xd7, 0xf5, 0x07, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x5f, 0x2f, 0x3c, 0x20, 0xf1, 0xa7,
|
||||
0xf0, 0xc4, 0xe3, 0x3c, 0x22, 0xf1, 0x82, 0x66, 0xfe, 0x91, 0x55, 0x57, 0x9f, 0xae, 0x8f, 0xd3,
|
||||
0xe7, 0x54, 0xf7, 0x9d, 0xa7, 0x19, 0xf9, 0xfc, 0xce, 0x47, 0x75, 0x9d, 0xaa, 0x3a, 0x55, 0xd5,
|
||||
0xb7, 0x13, 0xdd, 0x2c, 0x4e, 0x36, 0x8b, 0x52, 0x2a, 0x59, 0x6d, 0x56, 0xa2, 0xbc, 0x48, 0x13,
|
||||
0xd1, 0xfe, 0x77, 0xa2, 0xff, 0x3c, 0x7e, 0x37, 0xce, 0xaf, 0xd5, 0x75, 0x21, 0x6e, 0x7c, 0x60,
|
||||
0xc9, 0x44, 0x9e, 0x9f, 0xc7, 0xf9, 0xac, 0x6a, 0x90, 0x1b, 0xef, 0x5b, 0x89, 0xb8, 0x10, 0xb9,
|
||||
0x82, 0xbf, 0x3f, 0xfe, 0xbf, 0xff, 0x1e, 0x45, 0xef, 0x6d, 0x67, 0xa9, 0xc8, 0xd5, 0x36, 0x68,
|
||||
0x8c, 0xbf, 0x8c, 0xbe, 0xbb, 0x55, 0x14, 0x7b, 0x42, 0xbd, 0x16, 0x65, 0x95, 0xca, 0x7c, 0xfc,
|
||||
0xd1, 0x04, 0x1c, 0x4c, 0x8e, 0x8a, 0x64, 0xb2, 0x55, 0x14, 0x13, 0x2b, 0x9c, 0x1c, 0x89, 0x9f,
|
||||
0x2d, 0x44, 0xa5, 0x6e, 0xdc, 0x09, 0x43, 0x55, 0x21, 0xf3, 0x4a, 0x8c, 0xdf, 0x46, 0xbf, 0xb6,
|
||||
0x55, 0x14, 0x53, 0xa1, 0x76, 0x44, 0xdd, 0x80, 0xa9, 0x8a, 0x95, 0x18, 0xaf, 0x75, 0x54, 0x7d,
|
||||
0xc0, 0xf8, 0xb8, 0xd7, 0x0f, 0x82, 0x9f, 0xe3, 0xe8, 0x3b, 0xb5, 0x9f, 0xd3, 0x85, 0x9a, 0xc9,
|
||||
0xcb, 0x7c, 0xfc, 0x61, 0x57, 0x11, 0x44, 0xc6, 0xf6, 0xed, 0x10, 0x02, 0x56, 0xdf, 0x44, 0xbf,
|
||||
0xfc, 0x26, 0xce, 0x32, 0xa1, 0xb6, 0x4b, 0x51, 0x07, 0xee, 0xeb, 0x34, 0xa2, 0x49, 0x23, 0x33,
|
||||
0x76, 0x3f, 0x0a, 0x32, 0x60, 0xf8, 0xcb, 0xe8, 0xbb, 0x8d, 0xe4, 0x48, 0x24, 0xf2, 0x42, 0x94,
|
||||
0x63, 0x52, 0x0b, 0x84, 0xcc, 0x23, 0xef, 0x40, 0xd8, 0xf6, 0xb6, 0xcc, 0x2f, 0x44, 0xa9, 0x68,
|
||||
0xdb, 0x20, 0x0c, 0xdb, 0xb6, 0x10, 0xd8, 0xfe, 0xdb, 0x51, 0xf4, 0x83, 0xad, 0x24, 0x91, 0x8b,
|
||||
0x5c, 0x3d, 0x97, 0x49, 0x9c, 0x3d, 0x4f, 0xf3, 0xb3, 0x03, 0x71, 0xb9, 0x7d, 0x5a, 0xf3, 0xf9,
|
||||
0x5c, 0x8c, 0x9f, 0xf8, 0x4f, 0xb5, 0x41, 0x27, 0x86, 0x9d, 0xb8, 0xb0, 0xf1, 0xfd, 0xc9, 0x72,
|
||||
0x4a, 0x10, 0xcb, 0x3f, 0x8e, 0xa2, 0x15, 0x1c, 0xcb, 0x54, 0x66, 0x17, 0xc2, 0x46, 0xf3, 0x69,
|
||||
0x8f, 0x61, 0x1f, 0x37, 0xf1, 0x7c, 0xb6, 0xac, 0x1a, 0x44, 0x94, 0x45, 0xdf, 0x73, 0xd3, 0x65,
|
||||
0x2a, 0x2a, 0x3d, 0x9c, 0xee, 0xf3, 0x19, 0x01, 0x88, 0xf1, 0xfc, 0x60, 0x08, 0x0a, 0xde, 0xd2,
|
||||
0x68, 0x0c, 0xde, 0x32, 0x59, 0x19, 0x67, 0xf7, 0x48, 0x0b, 0x0e, 0x61, 0x7c, 0xdd, 0x1f, 0x40,
|
||||
0x82, 0xab, 0x3f, 0x8c, 0x7e, 0xe5, 0x8d, 0x2c, 0xcf, 0xaa, 0x22, 0x4e, 0x04, 0x0c, 0x85, 0xbb,
|
||||
0xbe, 0x76, 0x2b, 0xc5, 0xa3, 0x61, 0xb5, 0x0f, 0x73, 0x92, 0xb6, 0x15, 0xbe, 0x2c, 0x04, 0x9e,
|
||||
0x83, 0xac, 0x62, 0x2d, 0xe4, 0x92, 0x16, 0x43, 0x60, 0xfb, 0x2c, 0x1a, 0x5b, 0xdb, 0x27, 0x7f,
|
||||
0x24, 0x12, 0xb5, 0x35, 0x9b, 0xe1, 0x5e, 0xb1, 0xba, 0x9a, 0x98, 0x6c, 0xcd, 0x66, 0x5c, 0xaf,
|
||||
0xd0, 0x28, 0x38, 0xbb, 0x8c, 0xde, 0x47, 0xce, 0x9e, 0xa7, 0x95, 0x76, 0xb8, 0x11, 0xb6, 0x02,
|
||||
0x98, 0x71, 0x3a, 0x19, 0x8a, 0x83, 0xe3, 0x3f, 0x1f, 0x45, 0xdf, 0x27, 0x3c, 0x1f, 0x89, 0x73,
|
||||
0x79, 0x21, 0xc6, 0x8f, 0xfa, 0xad, 0x35, 0xa4, 0xf1, 0xff, 0xf1, 0x12, 0x1a, 0x44, 0x9a, 0x4c,
|
||||
0x45, 0x26, 0x12, 0xc5, 0xa6, 0x49, 0x23, 0xee, 0x4d, 0x13, 0x83, 0x39, 0x23, 0xac, 0x15, 0xee,
|
||||
0x09, 0xb5, 0xbd, 0x28, 0x4b, 0x91, 0x2b, 0xb6, 0x2f, 0x2d, 0xd2, 0xdb, 0x97, 0x1e, 0x4a, 0xb4,
|
||||
0x67, 0x4f, 0xa8, 0xad, 0x2c, 0x63, 0xdb, 0xd3, 0x88, 0x7b, 0xdb, 0x63, 0x30, 0xf0, 0x90, 0x44,
|
||||
0xbf, 0xea, 0x3c, 0x31, 0xb5, 0x9f, 0xbf, 0x95, 0x63, 0xfe, 0x59, 0x68, 0xb9, 0xf1, 0xb1, 0xd6,
|
||||
0xcb, 0x11, 0xcd, 0x78, 0x76, 0x55, 0xc8, 0x92, 0xef, 0x96, 0x46, 0xdc, 0xdb, 0x0c, 0x83, 0x81,
|
||||
0x87, 0x3f, 0x88, 0xde, 0x83, 0x59, 0xb2, 0x5d, 0xcf, 0xee, 0x90, 0x53, 0x28, 0x5e, 0xd0, 0xee,
|
||||
0xf6, 0x50, 0x76, 0x72, 0x00, 0x19, 0x4c, 0x3e, 0x1f, 0x91, 0x7a, 0x68, 0xea, 0xb9, 0x13, 0x86,
|
||||
0x3a, 0xb6, 0x77, 0x44, 0x26, 0x58, 0xdb, 0x8d, 0xb0, 0xc7, 0xb6, 0x81, 0xc0, 0x76, 0x19, 0xfd,
|
||||
0x86, 0x79, 0x2c, 0xf5, 0x3a, 0xaa, 0xe5, 0xf5, 0x24, 0xbd, 0xce, 0xb4, 0xdb, 0x85, 0x8c, 0xaf,
|
||||
0x87, 0xc3, 0xe0, 0x4e, 0x7b, 0x60, 0x04, 0xd2, 0xed, 0x41, 0xe3, 0xef, 0x4e, 0x18, 0x02, 0xdb,
|
||||
0x7f, 0x37, 0x8a, 0x7e, 0x08, 0xb2, 0x67, 0x79, 0x7c, 0x92, 0x09, 0xbd, 0x24, 0x1e, 0x08, 0x75,
|
||||
0x29, 0xcb, 0xb3, 0xe9, 0x75, 0x9e, 0x30, 0xcb, 0x3f, 0x0d, 0xf7, 0x2c, 0xff, 0xac, 0x92, 0x53,
|
||||
0xf1, 0x41, 0x43, 0x95, 0x2c, 0x70, 0xc5, 0xd7, 0xb6, 0x40, 0xc9, 0x82, 0xab, 0xf8, 0x7c, 0xa4,
|
||||
0x63, 0xf5, 0x45, 0x3d, 0x6d, 0xd2, 0x56, 0x5f, 0xb8, 0xf3, 0xe4, 0xed, 0x10, 0x62, 0xa7, 0xad,
|
||||
0x36, 0x81, 0x65, 0xfe, 0x36, 0x9d, 0xbf, 0x2a, 0x66, 0x75, 0x1a, 0xdf, 0xa7, 0x33, 0xd4, 0x41,
|
||||
0x98, 0x69, 0x8b, 0x41, 0xc1, 0xdb, 0x3f, 0xd8, 0xc2, 0x08, 0x86, 0xd2, 0x6e, 0x29, 0xcf, 0x9f,
|
||||
0x8b, 0x79, 0x9c, 0x5c, 0xc3, 0xf8, 0xff, 0x24, 0x34, 0xf0, 0x30, 0x6d, 0x82, 0xf8, 0x74, 0x49,
|
||||
0x2d, 0x88, 0xe7, 0x3f, 0x47, 0xd1, 0x9d, 0xb6, 0xf9, 0xa7, 0x71, 0x3e, 0x17, 0xd0, 0x9f, 0x4d,
|
||||
0xf4, 0x5b, 0xf9, 0xec, 0x48, 0x54, 0x2a, 0x2e, 0xd5, 0xf8, 0xc7, 0x74, 0x23, 0x43, 0x3a, 0x26,
|
||||
0xb6, 0x9f, 0x7c, 0x2b, 0x5d, 0xdb, 0xeb, 0xd3, 0x7a, 0x62, 0x83, 0x29, 0xc0, 0xef, 0x75, 0x2d,
|
||||
0xc1, 0x13, 0xc0, 0xed, 0x10, 0x62, 0x7b, 0x5d, 0x0b, 0xf6, 0xf3, 0x8b, 0x54, 0x89, 0x3d, 0x91,
|
||||
0x8b, 0xb2, 0xdb, 0xeb, 0x8d, 0xaa, 0x8f, 0x30, 0xbd, 0xce, 0xa0, 0x76, 0xb2, 0xf1, 0xbc, 0x99,
|
||||
0xc5, 0x71, 0x3d, 0x60, 0xa4, 0xb3, 0x3c, 0x3e, 0x1c, 0x06, 0xdb, 0xdd, 0x9d, 0xe3, 0xf3, 0x48,
|
||||
0x5c, 0xc8, 0x33, 0xbc, 0xbb, 0x73, 0x4d, 0x34, 0x00, 0xb3, 0xbb, 0x23, 0x41, 0xbb, 0x82, 0x39,
|
||||
0x7e, 0x5e, 0xa7, 0xe2, 0x12, 0xad, 0x60, 0xae, 0x72, 0x2d, 0x66, 0x56, 0x30, 0x02, 0x03, 0x0f,
|
||||
0x07, 0xd1, 0x2f, 0x69, 0xe1, 0xef, 0xc9, 0x34, 0x1f, 0xdf, 0x24, 0x94, 0x6a, 0x81, 0xb1, 0x7a,
|
||||
0x8b, 0x07, 0x50, 0xc4, 0xf5, 0x5f, 0xb7, 0xe3, 0x3c, 0x11, 0x19, 0x19, 0xb1, 0x15, 0x07, 0x23,
|
||||
0xf6, 0x30, 0x14, 0xf1, 0xb3, 0xab, 0x54, 0x91, 0x11, 0xd7, 0x82, 0x60, 0xc4, 0x00, 0xd8, 0x52,
|
||||
0x44, 0xff, 0xb9, 0x9e, 0x0f, 0xa7, 0xa7, 0x71, 0x99, 0xe6, 0xf3, 0x31, 0x15, 0x8b, 0x23, 0x67,
|
||||
0x4a, 0x11, 0x8a, 0x43, 0x43, 0x02, 0x14, 0xb7, 0x8a, 0xa2, 0xac, 0xa7, 0x59, 0x6a, 0x48, 0xf8,
|
||||
0x48, 0x70, 0x48, 0x74, 0x50, 0xda, 0xdb, 0x8e, 0x48, 0xb2, 0x34, 0x0f, 0x7a, 0x03, 0x64, 0x88,
|
||||
0x37, 0x8b, 0x82, 0xb7, 0x45, 0xf4, 0xbe, 0x06, 0x0e, 0xe3, 0x52, 0xa5, 0x49, 0x5a, 0xc4, 0x79,
|
||||
0x5b, 0x7c, 0x53, 0x83, 0xaa, 0x43, 0x19, 0x9f, 0x1b, 0x03, 0x69, 0x70, 0xfb, 0xef, 0xa3, 0xe8,
|
||||
0x43, 0xec, 0xf7, 0x50, 0x94, 0xe7, 0xa9, 0xde, 0xc3, 0x55, 0xcd, 0x0c, 0x38, 0xfe, 0x3c, 0x6c,
|
||||
0xb4, 0xa3, 0x60, 0xa2, 0xf9, 0xd1, 0xf2, 0x8a, 0x10, 0xd8, 0xef, 0x47, 0x51, 0xb3, 0x57, 0xd0,
|
||||
0xfb, 0x39, 0x3f, 0x01, 0x61, 0x13, 0xe1, 0x6d, 0xe6, 0x3e, 0x0c, 0x10, 0x76, 0x9e, 0x6e, 0xfe,
|
||||
0xae, 0xb7, 0xa9, 0x63, 0x52, 0x43, 0x8b, 0x98, 0x79, 0x1a, 0x21, 0x38, 0xd0, 0xe9, 0xa9, 0xbc,
|
||||
0xa4, 0x03, 0xad, 0x25, 0xe1, 0x40, 0x81, 0xb0, 0x07, 0x47, 0x10, 0x28, 0x75, 0x70, 0xd4, 0x86,
|
||||
0x11, 0x3a, 0x38, 0xc2, 0x0c, 0x18, 0x96, 0xd1, 0xaf, 0xbb, 0x86, 0x9f, 0x4a, 0x79, 0x76, 0x1e,
|
||||
0x97, 0x67, 0xe3, 0x07, 0xbc, 0x72, 0xcb, 0x18, 0x47, 0xeb, 0x83, 0x58, 0x3b, 0x86, 0x5c, 0x87,
|
||||
0xf5, 0x2a, 0xff, 0xaa, 0xcc, 0xd0, 0x18, 0xf2, 0x6c, 0x00, 0xc2, 0x8c, 0x21, 0x06, 0xb5, 0xd3,
|
||||
0xa6, 0xeb, 0x6d, 0x2a, 0xf0, 0x56, 0xc5, 0x53, 0x9f, 0x0a, 0x6e, 0xab, 0x42, 0x60, 0x38, 0x85,
|
||||
0xf6, 0xca, 0xb8, 0x38, 0xa5, 0x53, 0x48, 0x8b, 0xc2, 0x29, 0xd4, 0x22, 0xb8, 0xbf, 0xa7, 0x22,
|
||||
0x2e, 0x93, 0x53, 0xba, 0xbf, 0x1b, 0x59, 0xb8, 0xbf, 0x0d, 0x63, 0x57, 0x75, 0xd7, 0xf0, 0x74,
|
||||
0x71, 0x52, 0x25, 0x65, 0x7a, 0x22, 0xc6, 0xeb, 0xbc, 0xb6, 0x81, 0x98, 0x55, 0x9d, 0x85, 0xed,
|
||||
0xc1, 0x12, 0xf8, 0x6c, 0x65, 0xfb, 0xb3, 0x0a, 0x1d, 0x2c, 0xb5, 0x36, 0x1c, 0x82, 0x39, 0x58,
|
||||
0xa2, 0x49, 0xdc, 0xbc, 0xbd, 0x52, 0x2e, 0x8a, 0xaa, 0xa7, 0x79, 0x08, 0x0a, 0x37, 0xaf, 0x0b,
|
||||
0x83, 0xcf, 0xab, 0xe8, 0x37, 0xdd, 0x47, 0xfa, 0x2a, 0xaf, 0x8c, 0xd7, 0x0d, 0xfe, 0x39, 0x39,
|
||||
0x18, 0x73, 0x44, 0x13, 0xc0, 0xed, 0x12, 0xdb, 0x7a, 0x56, 0x3b, 0x42, 0xc5, 0x69, 0x56, 0x8d,
|
||||
0x57, 0x69, 0x1b, 0xad, 0x9c, 0x59, 0x62, 0x29, 0x0e, 0x0f, 0xa1, 0x9d, 0x45, 0x91, 0xa5, 0x49,
|
||||
0xf7, 0xac, 0x0e, 0x74, 0x8d, 0x38, 0x3c, 0x84, 0x5c, 0x0c, 0x4f, 0x09, 0x53, 0xa1, 0x9a, 0xff,
|
||||
0x39, 0xbe, 0x2e, 0x04, 0x3d, 0x25, 0x78, 0x48, 0x78, 0x4a, 0xc0, 0x28, 0x6e, 0xcf, 0x54, 0xa8,
|
||||
0xe7, 0xf1, 0xb5, 0x5c, 0x30, 0x53, 0x82, 0x11, 0x87, 0xdb, 0xe3, 0x62, 0x76, 0xe1, 0x36, 0x1e,
|
||||
0xf6, 0x73, 0x25, 0xca, 0x3c, 0xce, 0x76, 0xb3, 0x78, 0x5e, 0x8d, 0x99, 0x71, 0xe3, 0x53, 0xcc,
|
||||
0xc2, 0xcd, 0xd3, 0xc4, 0x63, 0xdc, 0xaf, 0x76, 0xe3, 0x0b, 0x59, 0xa6, 0x8a, 0x7f, 0x8c, 0x16,
|
||||
0xe9, 0x7d, 0x8c, 0x1e, 0x4a, 0x7a, 0xdb, 0x2a, 0x93, 0xd3, 0xf4, 0x42, 0xcc, 0x02, 0xde, 0x5a,
|
||||
0x64, 0x80, 0x37, 0x07, 0x25, 0x3a, 0x6d, 0x2a, 0x17, 0x65, 0x22, 0xd8, 0x4e, 0x6b, 0xc4, 0xbd,
|
||||
0x9d, 0x66, 0x30, 0xf0, 0xf0, 0x57, 0xa3, 0xe8, 0xb7, 0x1a, 0xa9, 0x7b, 0x80, 0xb6, 0x13, 0x57,
|
||||
0xa7, 0x27, 0x32, 0x2e, 0x67, 0xe3, 0x8f, 0x29, 0x3b, 0x24, 0x6a, 0x5c, 0x3f, 0x5e, 0x46, 0x05,
|
||||
0x3f, 0xd6, 0xe7, 0x69, 0xe5, 0x8c, 0x38, 0xf2, 0xb1, 0x7a, 0x48, 0xf8, 0xb1, 0x62, 0x14, 0x4f,
|
||||
0x20, 0x5a, 0xde, 0x6c, 0x56, 0x57, 0x59, 0x7d, 0x7f, 0xc7, 0xba, 0xd6, 0xcb, 0xe1, 0xf9, 0xb1,
|
||||
0x16, 0xfa, 0xd9, 0xb2, 0xc1, 0xd9, 0xa0, 0x33, 0x66, 0x32, 0x14, 0x67, 0x3d, 0x9b, 0x51, 0x11,
|
||||
0xf6, 0xdc, 0x19, 0x19, 0x93, 0xa1, 0x38, 0xe3, 0xd9, 0x99, 0xd6, 0x42, 0x9e, 0x89, 0xa9, 0x6d,
|
||||
0x32, 0x14, 0xc7, 0x09, 0xb4, 0x55, 0x14, 0xd9, 0xf5, 0xb1, 0x38, 0x2f, 0x32, 0x36, 0x81, 0x3c,
|
||||
0x24, 0x9c, 0x40, 0x18, 0xc5, 0xd5, 0xcf, 0xb1, 0xac, 0x6b, 0x2b, 0xb2, 0xfa, 0xd1, 0xa2, 0x70,
|
||||
0xf5, 0xd3, 0x22, 0xb8, 0x60, 0x38, 0x96, 0xdb, 0x32, 0xcb, 0x44, 0xa2, 0xba, 0x37, 0x51, 0x46,
|
||||
0xd3, 0x12, 0xe1, 0x82, 0x01, 0x91, 0xf6, 0xc4, 0xa1, 0xad, 0xd5, 0xe3, 0x52, 0x3c, 0xbd, 0x7e,
|
||||
0x9e, 0xe6, 0x67, 0x63, 0x7a, 0x6d, 0xb4, 0x00, 0x73, 0xe2, 0x40, 0x82, 0x78, 0x4f, 0xf0, 0x2a,
|
||||
0x9f, 0x49, 0x7a, 0x4f, 0x50, 0x4b, 0xc2, 0x7b, 0x02, 0x20, 0xb0, 0xc9, 0x23, 0xc1, 0x99, 0xac,
|
||||
0x25, 0x61, 0x93, 0x40, 0x50, 0xf3, 0x01, 0x1c, 0xed, 0xb1, 0xf3, 0x01, 0x3a, 0xcc, 0x5b, 0xeb,
|
||||
0xe5, 0x70, 0x86, 0xb6, 0x9b, 0x83, 0x5d, 0xa1, 0x92, 0x53, 0x3a, 0x43, 0x3d, 0x24, 0x9c, 0xa1,
|
||||
0x18, 0xc5, 0x4d, 0x3a, 0x96, 0x66, 0x73, 0xb3, 0x4a, 0xe7, 0x47, 0x67, 0x63, 0xb3, 0xd6, 0xcb,
|
||||
0xe1, 0x72, 0x7d, 0xff, 0x5c, 0x3f, 0x33, 0x32, 0xc9, 0x1b, 0x59, 0xb8, 0x5c, 0x37, 0x0c, 0x8e,
|
||||
0xbe, 0x11, 0xd4, 0x8f, 0x93, 0x8e, 0xde, 0xca, 0xc3, 0xd1, 0x7b, 0x1c, 0x38, 0xf9, 0xd7, 0x51,
|
||||
0x74, 0xd3, 0xf5, 0x72, 0x20, 0xeb, 0x31, 0xf2, 0x3a, 0xce, 0xd2, 0x59, 0xac, 0xc4, 0xb1, 0x3c,
|
||||
0x13, 0x39, 0xda, 0xef, 0xfb, 0xd1, 0x36, 0xfc, 0xc4, 0x53, 0x60, 0xf6, 0xfb, 0x83, 0x14, 0x71,
|
||||
0x9e, 0x34, 0xf4, 0xab, 0x4a, 0x6c, 0xc7, 0x15, 0x33, 0x93, 0x79, 0x48, 0x38, 0x4f, 0x30, 0x8a,
|
||||
0x8b, 0xb6, 0x46, 0xfe, 0xec, 0xaa, 0x10, 0x65, 0x2a, 0xf2, 0x44, 0xd0, 0x45, 0x1b, 0xa6, 0xc2,
|
||||
0x45, 0x1b, 0x41, 0x77, 0xb6, 0xc3, 0x66, 0x72, 0xea, 0x5e, 0x26, 0x63, 0x22, 0x70, 0x99, 0xcc,
|
||||
0xa0, 0xb8, 0x91, 0x16, 0x20, 0x8f, 0x94, 0x3a, 0x56, 0x82, 0x47, 0x4a, 0x3c, 0xdd, 0x39, 0x64,
|
||||
0x30, 0xcc, 0xb4, 0x1e, 0x26, 0x3d, 0xa1, 0x4f, 0xdd, 0xe1, 0xb2, 0x3e, 0x88, 0xa5, 0x4f, 0x35,
|
||||
0x8e, 0x44, 0x16, 0xeb, 0x25, 0x24, 0x70, 0x74, 0xd0, 0x32, 0x43, 0x4e, 0x35, 0x1c, 0x16, 0x1c,
|
||||
0xfe, 0xc5, 0x28, 0xba, 0x41, 0x79, 0x7c, 0x59, 0x68, 0xbf, 0x8f, 0xfa, 0x6d, 0x35, 0x24, 0x73,
|
||||
0x5b, 0x1e, 0xd6, 0x80, 0x18, 0xfe, 0x24, 0xfa, 0xa0, 0x15, 0xd9, 0xcb, 0x74, 0x08, 0xc0, 0xaf,
|
||||
0x22, 0x4c, 0xfc, 0x98, 0x33, 0xee, 0x37, 0x07, 0xf3, 0xb6, 0x40, 0xf7, 0xe3, 0xaa, 0x50, 0x81,
|
||||
0x6e, 0x6c, 0x80, 0x98, 0x29, 0xd0, 0x09, 0x0c, 0xaf, 0xd4, 0x2d, 0x52, 0x8f, 0x13, 0x6a, 0x8e,
|
||||
0x33, 0x26, 0xdc, 0x51, 0x72, 0xaf, 0x1f, 0xc4, 0xb9, 0xd3, 0x8a, 0xa1, 0x2e, 0x7e, 0x10, 0xb2,
|
||||
0x80, 0x6a, 0xe3, 0xf5, 0x41, 0x2c, 0x38, 0xfc, 0xb3, 0xe8, 0xfb, 0x9d, 0x86, 0xed, 0x8a, 0x58,
|
||||
0x2d, 0x4a, 0x31, 0x1b, 0x6f, 0xf6, 0xc4, 0xdd, 0x82, 0xc6, 0xf5, 0xa3, 0xe1, 0x0a, 0xe0, 0xff,
|
||||
0x6f, 0x46, 0xd1, 0x0f, 0x7c, 0xae, 0xe9, 0x62, 0x13, 0xc3, 0xe3, 0x90, 0x49, 0x9f, 0x35, 0x61,
|
||||
0x3c, 0x59, 0x4a, 0xa7, 0xb3, 0x07, 0x73, 0x13, 0x79, 0xeb, 0x22, 0x4e, 0xb3, 0xf8, 0x24, 0x13,
|
||||
0xe4, 0x1e, 0xcc, 0xcb, 0x4d, 0x83, 0x06, 0xf7, 0x60, 0xac, 0x4a, 0x67, 0x96, 0xd4, 0xe3, 0xcd,
|
||||
0xa9, 0xdd, 0x1f, 0xf2, 0xa3, 0x92, 0x28, 0xdd, 0x37, 0x06, 0xd2, 0xe0, 0x56, 0xb5, 0x67, 0x57,
|
||||
0xf5, 0x9f, 0xdd, 0x24, 0xa7, 0xbc, 0x82, 0x2a, 0x91, 0xe9, 0x1b, 0x03, 0x69, 0xf0, 0xfa, 0xa7,
|
||||
0xd1, 0x07, 0x5d, 0xaf, 0xb0, 0x28, 0x6c, 0xf6, 0x9a, 0x42, 0xeb, 0xc2, 0xa3, 0xe1, 0x0a, 0xb6,
|
||||
0xd4, 0xff, 0x22, 0xad, 0x94, 0x2c, 0xaf, 0xa7, 0xa7, 0xf2, 0xb2, 0x7d, 0x61, 0xd4, 0x1f, 0xad,
|
||||
0x00, 0x4c, 0x1c, 0x82, 0x29, 0xf5, 0x69, 0xb2, 0xe3, 0xca, 0xbe, 0x58, 0x5a, 0x31, 0xae, 0x1c,
|
||||
0xa2, 0xc7, 0x95, 0x4f, 0xda, 0xb9, 0xaa, 0x6d, 0x95, 0x7d, 0x0b, 0x76, 0x8d, 0x0e, 0xb5, 0xfb,
|
||||
0x26, 0xec, 0xbd, 0x7e, 0xd0, 0x6e, 0xbf, 0x76, 0xd3, 0x4c, 0xbc, 0x7c, 0xfb, 0x36, 0x93, 0xf1,
|
||||
0x0c, 0x6d, 0xbf, 0x6a, 0xc9, 0x04, 0x44, 0xcc, 0xf6, 0x0b, 0x21, 0xb6, 0xe8, 0xac, 0x05, 0xfa,
|
||||
0x6e, 0xa6, 0x35, 0xbd, 0xda, 0xd5, 0x73, 0xe5, 0x4c, 0xd1, 0x49, 0x71, 0x76, 0xc1, 0xa8, 0xa5,
|
||||
0xf5, 0x10, 0x6c, 0x7d, 0xdc, 0xed, 0xea, 0x3a, 0x62, 0x66, 0xc1, 0x20, 0x30, 0xbb, 0x3f, 0xaa,
|
||||
0x85, 0xaf, 0x0a, 0x6d, 0xfc, 0x56, 0x57, 0xab, 0x91, 0x30, 0xfb, 0x23, 0x9f, 0xb0, 0x75, 0x7e,
|
||||
0xfd, 0xf7, 0x1d, 0x79, 0x99, 0x6b, 0xa3, 0xc4, 0xd3, 0x6c, 0x65, 0x4c, 0x9d, 0x8f, 0x19, 0x30,
|
||||
0xfc, 0xd3, 0xe8, 0x17, 0xb5, 0xe1, 0x52, 0x16, 0xe3, 0x15, 0x42, 0xa1, 0x74, 0x5e, 0x3b, 0xb9,
|
||||
0xc9, 0xca, 0xed, 0xdb, 0x53, 0xa6, 0xff, 0x5e, 0x55, 0xf1, 0x5c, 0xa0, 0xb7, 0xa7, 0x6c, 0xaf,
|
||||
0x68, 0x29, 0xf3, 0xf6, 0x54, 0x97, 0xb2, 0x6f, 0x04, 0xd5, 0xb2, 0x03, 0x39, 0x03, 0xeb, 0x44,
|
||||
0x0b, 0x8d, 0x90, 0x79, 0x23, 0xa8, 0x03, 0xd9, 0xf3, 0xfb, 0x83, 0xf8, 0x22, 0x9d, 0x9b, 0xc9,
|
||||
0xbf, 0x99, 0x43, 0x2a, 0x74, 0x7e, 0x6f, 0x99, 0x89, 0x03, 0x31, 0xe7, 0xf7, 0x2c, 0x0c, 0x3e,
|
||||
0xff, 0x65, 0x14, 0xdd, 0xb2, 0xcc, 0x5e, 0x7b, 0xac, 0xb2, 0x9f, 0xbf, 0x95, 0x6f, 0x52, 0x75,
|
||||
0x5a, 0xef, 0xe3, 0xab, 0xf1, 0x67, 0x9c, 0x49, 0x9a, 0x37, 0xa1, 0x7c, 0xbe, 0xb4, 0x9e, 0xad,
|
||||
0xe6, 0xda, 0xe3, 0x16, 0x7b, 0xb7, 0xd5, 0x68, 0xa0, 0x6a, 0xce, 0x9c, 0xca, 0x60, 0x8e, 0xa9,
|
||||
0xe6, 0x42, 0xbc, 0xed, 0x62, 0xe3, 0x3c, 0x93, 0x39, 0xee, 0x62, 0x6b, 0xa1, 0x16, 0x32, 0x5d,
|
||||
0xdc, 0x81, 0xec, 0xdc, 0xd8, 0x8a, 0x9a, 0x93, 0x81, 0xad, 0x2c, 0x43, 0x73, 0xa3, 0x51, 0x35,
|
||||
0x00, 0x33, 0x37, 0x92, 0x20, 0xf8, 0x39, 0x8a, 0xbe, 0x53, 0x3f, 0xd2, 0xc3, 0x52, 0x5c, 0xa4,
|
||||
0x02, 0x5f, 0xc3, 0x3a, 0x12, 0x66, 0xfc, 0xfb, 0x84, 0x1d, 0x59, 0xaf, 0xf2, 0xaa, 0xc8, 0xe2,
|
||||
0xea, 0x14, 0x2e, 0xe6, 0xfc, 0x36, 0xb7, 0x42, 0x7c, 0x35, 0x77, 0xb7, 0x87, 0xb2, 0x13, 0x6f,
|
||||
0x2b, 0x33, 0x53, 0xcc, 0x2a, 0xad, 0xda, 0x99, 0x66, 0xd6, 0x7a, 0x39, 0x7b, 0x34, 0xb9, 0x17,
|
||||
0x67, 0x99, 0x28, 0xaf, 0x5b, 0xd9, 0x8b, 0x38, 0x4f, 0xdf, 0x8a, 0x4a, 0xa1, 0xa3, 0x49, 0xa0,
|
||||
0x26, 0x18, 0x63, 0x8e, 0x26, 0x03, 0xb8, 0xad, 0xac, 0x91, 0xe7, 0xfd, 0x7c, 0x26, 0xae, 0x50,
|
||||
0x65, 0x8d, 0xed, 0x68, 0x86, 0xa9, 0xac, 0x39, 0xd6, 0x2e, 0x8f, 0x4f, 0x33, 0x99, 0x9c, 0xc1,
|
||||
0x12, 0xe0, 0x77, 0xb0, 0x96, 0xe0, 0x35, 0xe0, 0x76, 0x08, 0xb1, 0x8b, 0x80, 0x16, 0x1c, 0x89,
|
||||
0x22, 0x8b, 0x13, 0x7c, 0x17, 0xdf, 0xe8, 0x80, 0x8c, 0x59, 0x04, 0x30, 0x83, 0xc2, 0x85, 0x3b,
|
||||
0x7e, 0x2a, 0x5c, 0x74, 0xc5, 0x7f, 0x3b, 0x84, 0xd8, 0x65, 0x50, 0x0b, 0xa6, 0x45, 0x96, 0x2a,
|
||||
0x34, 0x0c, 0x1a, 0x0d, 0x2d, 0x61, 0x86, 0x81, 0x4f, 0x20, 0x93, 0x2f, 0x44, 0x39, 0x17, 0xa4,
|
||||
0x49, 0x2d, 0x09, 0x9a, 0x6c, 0x09, 0xfb, 0xf6, 0x51, 0xd3, 0x76, 0x59, 0x5c, 0xa3, 0xb7, 0x8f,
|
||||
0xa0, 0x59, 0xb2, 0xb8, 0x66, 0xde, 0x3e, 0xf2, 0x00, 0x14, 0xe2, 0x61, 0x5c, 0x29, 0x3a, 0x44,
|
||||
0x2d, 0x09, 0x86, 0xd8, 0x12, 0x76, 0x8d, 0x6e, 0x42, 0x5c, 0x28, 0xb4, 0x46, 0x43, 0x00, 0xce,
|
||||
0x55, 0xe1, 0x4d, 0x56, 0x6e, 0x67, 0x92, 0xa6, 0x57, 0x84, 0xda, 0x4d, 0x45, 0x36, 0xab, 0xd0,
|
||||
0x4c, 0x02, 0xcf, 0xbd, 0x95, 0x32, 0x33, 0x49, 0x97, 0x42, 0xa9, 0x04, 0x67, 0xb8, 0x54, 0xeb,
|
||||
0xd0, 0xf1, 0xed, 0xed, 0x10, 0x62, 0xe7, 0xa7, 0x36, 0xe8, 0xed, 0xb8, 0x2c, 0xd3, 0x7a, 0xf1,
|
||||
0x5f, 0xa5, 0x03, 0x6a, 0xe5, 0xcc, 0xfc, 0x44, 0x71, 0x68, 0x78, 0xb5, 0x13, 0x37, 0x15, 0x18,
|
||||
0x9e, 0xba, 0x3f, 0x0a, 0x32, 0xb6, 0xe2, 0xd4, 0x12, 0xe7, 0xae, 0x8b, 0x7a, 0x9a, 0xc4, 0x55,
|
||||
0xd7, 0x6a, 0x1f, 0xe6, 0xbc, 0xcf, 0x6c, 0x5c, 0xbc, 0x90, 0x17, 0xe2, 0x58, 0x3e, 0xbb, 0x4a,
|
||||
0x2b, 0x95, 0xe6, 0x73, 0x58, 0xb9, 0x9f, 0x30, 0x96, 0x28, 0x98, 0x79, 0x9f, 0xb9, 0x57, 0xc9,
|
||||
0x16, 0x10, 0x28, 0x96, 0x03, 0x71, 0x49, 0x16, 0x10, 0xd8, 0xa2, 0xe1, 0x98, 0x02, 0x22, 0xc4,
|
||||
0xdb, 0x33, 0x0d, 0xe3, 0x1c, 0x7e, 0xf4, 0x75, 0x2c, 0xdb, 0x5a, 0x8e, 0xb3, 0x86, 0x41, 0x66,
|
||||
0x5b, 0x19, 0x54, 0xb0, 0x7b, 0x3d, 0xe3, 0xdf, 0x0e, 0xb1, 0x7b, 0x8c, 0x9d, 0xee, 0x30, 0xbb,
|
||||
0x3f, 0x80, 0x24, 0x5c, 0xd9, 0x0b, 0x5b, 0xce, 0x55, 0xf7, 0xbe, 0xf6, 0xfe, 0x00, 0xd2, 0x39,
|
||||
0x1f, 0x71, 0x9b, 0xf5, 0x34, 0x4e, 0xce, 0xe6, 0xa5, 0x5c, 0xe4, 0xb3, 0x6d, 0x99, 0xc9, 0x12,
|
||||
0x9d, 0x8f, 0x78, 0x51, 0x23, 0x94, 0x39, 0x1f, 0xe9, 0x51, 0xb1, 0x15, 0x9c, 0x1b, 0xc5, 0x56,
|
||||
0x96, 0xce, 0xf1, 0xee, 0xd6, 0x33, 0xa4, 0x01, 0xa6, 0x82, 0x23, 0x41, 0x22, 0x89, 0x9a, 0xdd,
|
||||
0xaf, 0x4a, 0x93, 0x38, 0x6b, 0xfc, 0x6d, 0xf2, 0x66, 0x3c, 0xb0, 0x37, 0x89, 0x08, 0x05, 0xa2,
|
||||
0x9d, 0xc7, 0x8b, 0x32, 0xdf, 0xcf, 0x95, 0x64, 0xdb, 0xd9, 0x02, 0xbd, 0xed, 0x74, 0x40, 0x34,
|
||||
0xad, 0x1e, 0x8b, 0xab, 0x3a, 0x9a, 0xfa, 0x3f, 0xd4, 0xb4, 0x5a, 0xff, 0x7d, 0x02, 0xf2, 0xd0,
|
||||
0xb4, 0x8a, 0x38, 0xd4, 0x18, 0x70, 0xd2, 0x24, 0x4c, 0x40, 0xdb, 0x4f, 0x93, 0x7b, 0xfd, 0x20,
|
||||
0xed, 0x67, 0xaa, 0xae, 0x33, 0x11, 0xf2, 0xa3, 0x81, 0x21, 0x7e, 0x5a, 0xd0, 0x5e, 0x9c, 0x78,
|
||||
0xed, 0x39, 0x15, 0xc9, 0x59, 0xe7, 0xfd, 0x13, 0x3f, 0xd0, 0x06, 0x61, 0x2e, 0x4e, 0x18, 0x94,
|
||||
0xee, 0xa2, 0xfd, 0x44, 0xe6, 0xa1, 0x2e, 0xaa, 0xe5, 0x43, 0xba, 0x08, 0x38, 0xbb, 0xf9, 0x35,
|
||||
0x52, 0xc8, 0xcc, 0xa6, 0x9b, 0xd6, 0x19, 0x0b, 0x2e, 0xc4, 0x6c, 0x7e, 0x59, 0xd8, 0xd6, 0xe4,
|
||||
0xd8, 0xe7, 0x8b, 0xee, 0xfb, 0x9f, 0x1d, 0x2b, 0x2f, 0xf8, 0xf7, 0x3f, 0x39, 0x96, 0x6f, 0x64,
|
||||
0x93, 0x23, 0x3d, 0x56, 0xfc, 0x3c, 0x79, 0x38, 0x0c, 0xb6, 0x5b, 0x1e, 0xcf, 0xe7, 0x76, 0x26,
|
||||
0xe2, 0xb2, 0xf1, 0xba, 0x11, 0x30, 0x64, 0x31, 0x66, 0xcb, 0x13, 0xc0, 0xd1, 0x14, 0xe6, 0x79,
|
||||
0xde, 0x96, 0xb9, 0x12, 0xb9, 0xa2, 0xa6, 0x30, 0xdf, 0x18, 0x80, 0xa1, 0x29, 0x8c, 0x53, 0x40,
|
||||
0x79, 0xab, 0xcf, 0x83, 0x84, 0x3a, 0x88, 0xcf, 0xc9, 0x8a, 0xad, 0x39, 0xeb, 0x69, 0xe4, 0xa1,
|
||||
0xbc, 0x45, 0x1c, 0x1a, 0xf2, 0xfb, 0xe7, 0xf1, 0xdc, 0x78, 0x21, 0xb4, 0xb5, 0xbc, 0xe3, 0xe6,
|
||||
0x5e, 0x3f, 0x88, 0xfc, 0xbc, 0x4e, 0x67, 0x42, 0x06, 0xfc, 0x68, 0xf9, 0x10, 0x3f, 0x18, 0x44,
|
||||
0x95, 0x53, 0xdd, 0xda, 0x66, 0x37, 0xb5, 0x95, 0xcf, 0x60, 0x0f, 0x39, 0x61, 0x1e, 0x0a, 0xe2,
|
||||
0x42, 0x95, 0x13, 0xc3, 0xa3, 0xf1, 0xd1, 0x1e, 0x8e, 0x86, 0xc6, 0x87, 0x39, 0xfb, 0x1c, 0x32,
|
||||
0x3e, 0x28, 0x18, 0x7c, 0xfe, 0x31, 0x8c, 0x8f, 0x9d, 0x58, 0xc5, 0x75, 0xcd, 0xfc, 0x3a, 0x15,
|
||||
0x97, 0xb0, 0x09, 0x25, 0xda, 0xdb, 0x52, 0x13, 0xfd, 0x8b, 0x17, 0xb4, 0x23, 0xdd, 0x1c, 0xcc,
|
||||
0x07, 0x7c, 0x43, 0x75, 0xde, 0xeb, 0x1b, 0x95, 0xe9, 0x9b, 0x83, 0xf9, 0x80, 0x6f, 0xf8, 0x29,
|
||||
0x5d, 0xaf, 0x6f, 0xf4, 0x7b, 0xba, 0xcd, 0xc1, 0x3c, 0xf8, 0xfe, 0xcb, 0x51, 0x74, 0xa3, 0xe3,
|
||||
0xbc, 0xae, 0x81, 0x12, 0x95, 0x5e, 0x08, 0xaa, 0x94, 0xf3, 0xed, 0x19, 0x34, 0x54, 0xca, 0xf1,
|
||||
0x2a, 0xce, 0xf7, 0x17, 0xa8, 0x28, 0x0e, 0x65, 0x95, 0xea, 0x8b, 0xe3, 0x27, 0x03, 0x8c, 0xb6,
|
||||
0x70, 0x68, 0xc3, 0x12, 0x52, 0xb2, 0xd7, 0x6e, 0x1e, 0x6a, 0x5f, 0xf5, 0x7c, 0x18, 0xb0, 0xd7,
|
||||
0x7d, 0xe3, 0x73, 0x63, 0x20, 0x6d, 0x2f, 0xc0, 0x3c, 0xc6, 0xbd, 0x79, 0x0b, 0xf5, 0x2a, 0x79,
|
||||
0xf9, 0xf6, 0x68, 0xb8, 0x02, 0xb8, 0xff, 0xeb, 0xb6, 0xa6, 0xc7, 0xfe, 0x61, 0x10, 0x3c, 0x1e,
|
||||
0x62, 0x11, 0x0d, 0x84, 0x27, 0x4b, 0xe9, 0x40, 0x20, 0xff, 0x31, 0x8a, 0x6e, 0x93, 0x81, 0xf8,
|
||||
0x77, 0xb0, 0xbf, 0x3d, 0xc4, 0x36, 0x7d, 0x17, 0xfb, 0xe3, 0x6f, 0xa3, 0x0a, 0xd1, 0xfd, 0x7d,
|
||||
0xbb, 0xb5, 0x6e, 0x35, 0xf4, 0xeb, 0xf8, 0x2f, 0xcb, 0x99, 0x28, 0x61, 0xc4, 0x86, 0x92, 0xce,
|
||||
0xc2, 0x78, 0xdc, 0x7e, 0xba, 0xa4, 0x96, 0xf3, 0xad, 0x10, 0x0f, 0x86, 0x5f, 0x26, 0x39, 0xf1,
|
||||
0x84, 0x2c, 0x3b, 0x34, 0x0e, 0xe8, 0xb3, 0x65, 0xd5, 0xb8, 0x91, 0xec, 0xc0, 0xfa, 0xa7, 0xc7,
|
||||
0x4f, 0x06, 0x1a, 0xf6, 0x7e, 0x8c, 0xfc, 0xc9, 0x72, 0x4a, 0x10, 0xcb, 0x7f, 0x8d, 0xa2, 0xbb,
|
||||
0x1e, 0x6b, 0x6f, 0x1a, 0xd0, 0x79, 0xc8, 0x4f, 0x02, 0xf6, 0x39, 0x25, 0x13, 0xdc, 0xef, 0x7c,
|
||||
0x3b, 0x65, 0xfb, 0x61, 0x0d, 0x4f, 0x65, 0x37, 0xcd, 0x94, 0x28, 0xbb, 0x1f, 0xd6, 0xf0, 0xed,
|
||||
0x36, 0xd4, 0x84, 0xff, 0xb0, 0x46, 0x00, 0x77, 0x3e, 0xac, 0x41, 0x78, 0x26, 0x3f, 0xac, 0x41,
|
||||
0x5a, 0x0b, 0x7e, 0x58, 0x23, 0xac, 0xc1, 0x2d, 0x3e, 0x6d, 0x08, 0xcd, 0x89, 0xf6, 0x20, 0x8b,
|
||||
0xfe, 0x01, 0xf7, 0xe3, 0x65, 0x54, 0x98, 0xe5, 0xb7, 0xe1, 0xf4, 0x9b, 0x61, 0x03, 0x9e, 0xa9,
|
||||
0xf7, 0x76, 0xd8, 0xe6, 0x60, 0x1e, 0x7c, 0xff, 0x0c, 0xf6, 0x3d, 0x66, 0xb1, 0x91, 0xa5, 0xfe,
|
||||
0xa8, 0xca, 0x7a, 0x68, 0xf1, 0xa8, 0x2d, 0xb8, 0x3d, 0xff, 0x70, 0x18, 0xcc, 0x34, 0xb7, 0x26,
|
||||
0xa0, 0xd3, 0x27, 0x7d, 0x86, 0x50, 0x97, 0x6f, 0x0e, 0xe6, 0x99, 0x45, 0xae, 0xf1, 0xdd, 0xf4,
|
||||
0xf6, 0x00, 0x63, 0x7e, 0x5f, 0x3f, 0x1a, 0xae, 0x60, 0x5f, 0x6d, 0xe9, 0xb8, 0xd7, 0xfd, 0xdc,
|
||||
0xfb, 0x04, 0xbd, 0x5e, 0xde, 0x18, 0x48, 0x87, 0x8a, 0x1b, 0x77, 0x79, 0xef, 0x2b, 0x6e, 0xc8,
|
||||
0x25, 0xfe, 0x93, 0xe5, 0x94, 0x20, 0x96, 0x7f, 0x1e, 0x45, 0x37, 0xd9, 0x58, 0x20, 0x0b, 0x3e,
|
||||
0x1b, 0x6a, 0x19, 0x65, 0xc3, 0xe7, 0x4b, 0xeb, 0x41, 0x50, 0xff, 0x36, 0x8a, 0x6e, 0x05, 0x82,
|
||||
0x6a, 0xd2, 0x63, 0x09, 0xeb, 0x7e, 0x9a, 0xfc, 0x68, 0x79, 0x45, 0x6e, 0xb1, 0x77, 0xf1, 0x69,
|
||||
0xf7, 0x7b, 0x13, 0x01, 0xdb, 0x53, 0xfe, 0x7b, 0x13, 0xfd, 0x5a, 0xf8, 0xf0, 0xa7, 0x2e, 0x49,
|
||||
0x60, 0x5f, 0x44, 0x1d, 0xfe, 0xe8, 0x8a, 0x05, 0xed, 0x87, 0xd6, 0x7a, 0x39, 0xca, 0xc9, 0xb3,
|
||||
0xab, 0x22, 0xce, 0x67, 0xbc, 0x93, 0x46, 0xde, 0xef, 0xc4, 0x70, 0xf8, 0xd0, 0xac, 0x96, 0x1e,
|
||||
0xc9, 0x76, 0x93, 0x77, 0x9f, 0xd3, 0x37, 0x48, 0xf0, 0xd0, 0xac, 0x83, 0x32, 0xde, 0xa0, 0xa2,
|
||||
0x0d, 0x79, 0x43, 0x85, 0xec, 0x83, 0x21, 0x28, 0xda, 0x3e, 0x18, 0x6f, 0xe6, 0x2c, 0xfe, 0x61,
|
||||
0xc8, 0x4a, 0xe7, 0x3c, 0x7e, 0x63, 0x20, 0xcd, 0xb8, 0x9d, 0x0a, 0xf5, 0x85, 0x88, 0x67, 0xa2,
|
||||
0x0c, 0xba, 0x35, 0xd4, 0x20, 0xb7, 0x2e, 0x4d, 0xb9, 0xdd, 0x96, 0xd9, 0xe2, 0x3c, 0x87, 0xce,
|
||||
0x64, 0xdd, 0xba, 0x54, 0xbf, 0x5b, 0x44, 0xe3, 0xe3, 0x42, 0xeb, 0x56, 0x17, 0x97, 0x0f, 0xc2,
|
||||
0x66, 0xbc, 0x9a, 0x72, 0x7d, 0x10, 0xcb, 0xb7, 0x13, 0xd2, 0xa8, 0xa7, 0x9d, 0x28, 0x93, 0x36,
|
||||
0x06, 0xd2, 0xf8, 0xdc, 0xce, 0x71, 0x6b, 0xf2, 0x69, 0xb3, 0xc7, 0x56, 0x27, 0xa5, 0x1e, 0x0d,
|
||||
0x57, 0xc0, 0xa7, 0xa4, 0x90, 0x55, 0xf5, 0xae, 0x68, 0x37, 0xcd, 0xb2, 0xf1, 0x7a, 0x20, 0x4d,
|
||||
0x5a, 0x28, 0x78, 0x4a, 0x4a, 0xc0, 0x4c, 0x26, 0xb7, 0xa7, 0x8a, 0xf9, 0xb8, 0xcf, 0x8e, 0xa6,
|
||||
0x06, 0x65, 0xb2, 0x4b, 0xa3, 0xd3, 0x36, 0xe7, 0x51, 0x9b, 0xd6, 0x4e, 0xc2, 0x0f, 0xae, 0xd3,
|
||||
0xe0, 0xcd, 0xc1, 0x3c, 0xba, 0x86, 0xd7, 0x94, 0x5e, 0x59, 0xee, 0x70, 0x26, 0xbc, 0x95, 0xe4,
|
||||
0x6e, 0x0f, 0x85, 0x4e, 0x2c, 0x9b, 0x61, 0xf4, 0x26, 0x9d, 0xcd, 0x85, 0x22, 0x6f, 0x90, 0x5c,
|
||||
0x20, 0x78, 0x83, 0x84, 0x40, 0xd4, 0x75, 0xcd, 0xdf, 0xa7, 0x42, 0x1d, 0xc7, 0xe5, 0x5c, 0xa8,
|
||||
0xfd, 0x19, 0xd5, 0x75, 0xa0, 0xec, 0x50, 0xa1, 0xae, 0x23, 0x69, 0x34, 0x1b, 0x18, 0xb7, 0xf0,
|
||||
0x7b, 0xea, 0x07, 0x21, 0x33, 0xe8, 0x47, 0xd5, 0xeb, 0x83, 0x58, 0xb4, 0xa2, 0x58, 0x87, 0xe9,
|
||||
0x79, 0xaa, 0xa8, 0x15, 0xc5, 0xb1, 0x51, 0x23, 0xa1, 0x15, 0xa5, 0x8b, 0x72, 0xcd, 0xab, 0x6b,
|
||||
0x84, 0xfd, 0x59, 0xb8, 0x79, 0x0d, 0x33, 0xac, 0x79, 0x86, 0xed, 0x5c, 0x78, 0xe6, 0x26, 0x65,
|
||||
0xd4, 0x29, 0x6c, 0x95, 0x89, 0xdc, 0xd6, 0x3f, 0x31, 0xc4, 0x60, 0x68, 0xd6, 0xe1, 0x14, 0x9c,
|
||||
0x5f, 0xb1, 0x18, 0xae, 0xbd, 0x93, 0x2d, 0x0a, 0x11, 0x97, 0x71, 0x9e, 0x90, 0x5b, 0x53, 0x6d,
|
||||
0xb0, 0x43, 0x86, 0xb6, 0xa6, 0xac, 0x06, 0xba, 0x4e, 0xf7, 0x7f, 0x1c, 0x48, 0x0c, 0x05, 0xf3,
|
||||
0x2b, 0x3c, 0xff, 0xb7, 0x81, 0xf7, 0x07, 0x90, 0xf8, 0x3a, 0xbd, 0x05, 0xcc, 0xa1, 0x7c, 0xe3,
|
||||
0xf4, 0xe3, 0x80, 0x29, 0x1f, 0x0d, 0x6d, 0x83, 0x79, 0x15, 0x94, 0xd4, 0xa6, 0xc0, 0x15, 0xea,
|
||||
0xa7, 0xe2, 0x9a, 0x4a, 0x6a, 0x5b, 0x9f, 0x6a, 0x24, 0x94, 0xd4, 0x5d, 0x14, 0xd5, 0x99, 0xee,
|
||||
0x3e, 0x68, 0x35, 0xa0, 0xef, 0x6e, 0x7d, 0xd6, 0x7a, 0x39, 0x34, 0x72, 0x76, 0xd2, 0x0b, 0xef,
|
||||
0x0e, 0x83, 0x08, 0x74, 0x27, 0xbd, 0xa0, 0xaf, 0x30, 0xd6, 0x07, 0xb1, 0xf8, 0xaa, 0x3e, 0x56,
|
||||
0xe2, 0xaa, 0xbd, 0x43, 0x27, 0xc2, 0xd5, 0xf2, 0xce, 0x25, 0xfa, 0xbd, 0x7e, 0xd0, 0xbe, 0x18,
|
||||
0x7b, 0x58, 0xca, 0x44, 0x54, 0x15, 0x7c, 0x84, 0xcb, 0x7f, 0xf3, 0x08, 0x64, 0x13, 0xf4, 0x09,
|
||||
0xae, 0x3b, 0x61, 0x08, 0x6c, 0x7f, 0x11, 0xbd, 0xfb, 0x5c, 0xce, 0xa7, 0x22, 0x9f, 0x8d, 0x7f,
|
||||
0xe8, 0xbf, 0x8a, 0x2a, 0xe7, 0x93, 0xfa, 0xcf, 0xc6, 0xde, 0x0a, 0x27, 0xb6, 0x2f, 0xd3, 0xed,
|
||||
0x88, 0x93, 0xc5, 0x7c, 0xaa, 0x62, 0xfc, 0x29, 0x2f, 0xfd, 0xf7, 0x49, 0x2d, 0x60, 0x5e, 0xa6,
|
||||
0xf3, 0x00, 0x64, 0xef, 0xb8, 0x14, 0x82, 0xb4, 0x57, 0x0b, 0x82, 0xf6, 0x00, 0xb0, 0xab, 0xae,
|
||||
0xb1, 0x57, 0x17, 0xb6, 0xf8, 0xe5, 0x37, 0xab, 0xa3, 0xa5, 0xcc, 0xaa, 0xdb, 0xa5, 0x6c, 0x32,
|
||||
0x34, 0xcd, 0xd7, 0x9f, 0x59, 0x58, 0x9c, 0x9f, 0xc7, 0xe5, 0x35, 0x4a, 0x06, 0x68, 0xa5, 0x03,
|
||||
0x30, 0xc9, 0x40, 0x82, 0x36, 0xcb, 0xdb, 0xc7, 0x9c, 0x9c, 0xed, 0xc9, 0x52, 0x2e, 0x54, 0x9a,
|
||||
0x8b, 0x0a, 0x65, 0xb9, 0x79, 0xa0, 0x2e, 0xc3, 0x64, 0x39, 0xc7, 0xda, 0xaa, 0x50, 0x13, 0xcd,
|
||||
0x7b, 0x79, 0xfa, 0x53, 0x96, 0x95, 0x92, 0x25, 0xbe, 0x1b, 0x6c, 0xac, 0x60, 0x88, 0xa9, 0x0a,
|
||||
0x59, 0x18, 0xf5, 0xfd, 0x61, 0x9a, 0xcf, 0xc9, 0xbe, 0x3f, 0x74, 0x3f, 0xdc, 0x76, 0x8b, 0x07,
|
||||
0xec, 0xfc, 0xde, 0x3c, 0xb4, 0xe6, 0x73, 0x36, 0xf0, 0x5b, 0x41, 0xf2, 0xa1, 0xbb, 0x04, 0x33,
|
||||
0xbf, 0xd3, 0x24, 0x72, 0xf5, 0xb2, 0x10, 0xb9, 0x98, 0xb5, 0x6f, 0x9f, 0x51, 0xae, 0x3c, 0x22,
|
||||
0xe8, 0x0a, 0x93, 0x36, 0x15, 0x5e, 0x08, 0x55, 0xa6, 0x49, 0x35, 0x15, 0xea, 0x30, 0x2e, 0xe3,
|
||||
0x73, 0xa1, 0x44, 0x89, 0x53, 0x01, 0x90, 0x89, 0xc7, 0x30, 0xa9, 0xc0, 0xb1, 0xe0, 0xf0, 0x77,
|
||||
0xa3, 0xef, 0xd5, 0x33, 0xa1, 0xc8, 0xe1, 0xdb, 0xda, 0xcf, 0xf4, 0x47, 0xf9, 0xc7, 0xef, 0x1b,
|
||||
0x1b, 0x53, 0x55, 0x8a, 0xf8, 0xbc, 0xb5, 0xfd, 0x9e, 0xf9, 0xbb, 0x06, 0x1f, 0x8d, 0xea, 0x75,
|
||||
0xe0, 0x40, 0xaa, 0xf4, 0x6d, 0xbd, 0xf1, 0x80, 0x4b, 0x1e, 0xb4, 0x0e, 0xb8, 0xe2, 0x49, 0xe0,
|
||||
0x97, 0xe5, 0x14, 0x67, 0x47, 0xa2, 0x2b, 0x3d, 0x12, 0x45, 0x86, 0x47, 0xa2, 0xa7, 0xad, 0x01,
|
||||
0x66, 0x24, 0x92, 0xa0, 0x5d, 0xd4, 0x5c, 0xf1, 0xb1, 0x08, 0x37, 0xe6, 0x58, 0x0c, 0x6b, 0xcc,
|
||||
0xb1, 0xf7, 0xfa, 0x7a, 0xbd, 0x27, 0x2b, 0x65, 0x3c, 0x4b, 0xe2, 0x4a, 0x1d, 0xc6, 0xd7, 0x99,
|
||||
0x8c, 0x67, 0xfa, 0x61, 0xe2, 0x3d, 0x59, 0xcb, 0x4c, 0x5c, 0x88, 0xdb, 0x93, 0x71, 0x70, 0xe3,
|
||||
0xf3, 0xe9, 0x87, 0xff, 0xf3, 0xf5, 0xca, 0xe8, 0xab, 0xaf, 0x57, 0x46, 0xff, 0xff, 0xf5, 0xca,
|
||||
0xe8, 0x9f, 0xbe, 0x59, 0x79, 0xe7, 0xab, 0x6f, 0x56, 0xde, 0xf9, 0xdf, 0x6f, 0x56, 0xde, 0xf9,
|
||||
0xf2, 0x5d, 0xf8, 0x27, 0x1c, 0x4e, 0x7e, 0x41, 0xff, 0x43, 0x0c, 0x4f, 0x7e, 0x1e, 0x00, 0x00,
|
||||
0xff, 0xff, 0xad, 0xa3, 0x91, 0xda, 0xe6, 0x61, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
|
@ -356,6 +358,7 @@ type ClientCommandsHandler interface {
|
|||
SpaceJoin(context.Context, *pb.RpcSpaceJoinRequest) *pb.RpcSpaceJoinResponse
|
||||
SpaceJoinCancel(context.Context, *pb.RpcSpaceJoinCancelRequest) *pb.RpcSpaceJoinCancelResponse
|
||||
SpaceExit(context.Context, *pb.RpcSpaceExitRequest) *pb.RpcSpaceExitResponse
|
||||
SpaceStopSharing(context.Context, *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse
|
||||
SpaceRequestApprove(context.Context, *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse
|
||||
SpaceRequestDecline(context.Context, *pb.RpcSpaceRequestDeclineRequest) *pb.RpcSpaceRequestDeclineResponse
|
||||
SpaceParticipantRemove(context.Context, *pb.RpcSpaceParticipantRemoveRequest) *pb.RpcSpaceParticipantRemoveResponse
|
||||
|
@ -560,6 +563,7 @@ type ClientCommandsHandler interface {
|
|||
BlockLatexSetText(context.Context, *pb.RpcBlockLatexSetTextRequest) *pb.RpcBlockLatexSetTextResponse
|
||||
ProcessCancel(context.Context, *pb.RpcProcessCancelRequest) *pb.RpcProcessCancelResponse
|
||||
LogSend(context.Context, *pb.RpcLogSendRequest) *pb.RpcLogSendResponse
|
||||
DebugStat(context.Context, *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse
|
||||
DebugTree(context.Context, *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse
|
||||
DebugTreeHeads(context.Context, *pb.RpcDebugTreeHeadsRequest) *pb.RpcDebugTreeHeadsResponse
|
||||
DebugSpaceSummary(context.Context, *pb.RpcDebugSpaceSummaryRequest) *pb.RpcDebugSpaceSummaryResponse
|
||||
|
@ -1361,6 +1365,26 @@ func SpaceExit(b []byte) (resp []byte) {
|
|||
return resp
|
||||
}
|
||||
|
||||
func SpaceStopSharing(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
if r := recover(); r != nil {
|
||||
resp, _ = (&pb.RpcSpaceStopSharingResponse{Error: &pb.RpcSpaceStopSharingResponseError{Code: pb.RpcSpaceStopSharingResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
|
||||
PanicHandler(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
in := new(pb.RpcSpaceStopSharingRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ = (&pb.RpcSpaceStopSharingResponse{Error: &pb.RpcSpaceStopSharingResponseError{Code: pb.RpcSpaceStopSharingResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
resp, _ = clientCommandsHandler.SpaceStopSharing(context.Background(), in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func SpaceRequestApprove(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
|
@ -4801,6 +4825,26 @@ func LogSend(b []byte) (resp []byte) {
|
|||
return resp
|
||||
}
|
||||
|
||||
func DebugStat(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
if r := recover(); r != nil {
|
||||
resp, _ = (&pb.RpcDebugStatResponse{Error: &pb.RpcDebugStatResponseError{Code: pb.RpcDebugStatResponseError_UNKNOWN_ERROR, Description: "panic recovered"}}).Marshal()
|
||||
PanicHandler(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
in := new(pb.RpcDebugStatRequest)
|
||||
if err := in.Unmarshal(b); err != nil {
|
||||
resp, _ = (&pb.RpcDebugStatResponse{Error: &pb.RpcDebugStatResponseError{Code: pb.RpcDebugStatResponseError_BAD_INPUT, Description: err.Error()}}).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
resp, _ = clientCommandsHandler.DebugStat(context.Background(), in).Marshal()
|
||||
return resp
|
||||
}
|
||||
|
||||
func DebugTree(b []byte) (resp []byte) {
|
||||
defer func() {
|
||||
if PanicHandler != nil {
|
||||
|
@ -5145,6 +5189,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
|
|||
cd = SpaceJoinCancel(data)
|
||||
case "SpaceExit":
|
||||
cd = SpaceExit(data)
|
||||
case "SpaceStopSharing":
|
||||
cd = SpaceStopSharing(data)
|
||||
case "SpaceRequestApprove":
|
||||
cd = SpaceRequestApprove(data)
|
||||
case "SpaceRequestDecline":
|
||||
|
@ -5489,6 +5535,8 @@ func CommandAsync(cmd string, data []byte, callback func(data []byte)) {
|
|||
cd = ProcessCancel(data)
|
||||
case "LogSend":
|
||||
cd = LogSend(data)
|
||||
case "DebugStat":
|
||||
cd = DebugStat(data)
|
||||
case "DebugTree":
|
||||
cd = DebugTree(data)
|
||||
case "DebugTreeHeads":
|
||||
|
@ -6083,6 +6131,20 @@ func (h *ClientCommandsHandlerProxy) SpaceExit(ctx context.Context, req *pb.RpcS
|
|||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcSpaceExitResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) SpaceStopSharing(ctx context.Context, req *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.SpaceStopSharing(ctx, req.(*pb.RpcSpaceStopSharingRequest)), nil
|
||||
}
|
||||
for _, interceptor := range h.interceptors {
|
||||
toCall := actualCall
|
||||
currentInterceptor := interceptor
|
||||
actualCall = func(ctx context.Context, req any) (any, error) {
|
||||
return currentInterceptor(ctx, req, "SpaceStopSharing", toCall)
|
||||
}
|
||||
}
|
||||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcSpaceStopSharingResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) SpaceRequestApprove(ctx context.Context, req *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.SpaceRequestApprove(ctx, req.(*pb.RpcSpaceRequestApproveRequest)), nil
|
||||
|
@ -8491,6 +8553,20 @@ func (h *ClientCommandsHandlerProxy) LogSend(ctx context.Context, req *pb.RpcLog
|
|||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcLogSendResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) DebugStat(ctx context.Context, req *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.DebugStat(ctx, req.(*pb.RpcDebugStatRequest)), nil
|
||||
}
|
||||
for _, interceptor := range h.interceptors {
|
||||
toCall := actualCall
|
||||
currentInterceptor := interceptor
|
||||
actualCall = func(ctx context.Context, req any) (any, error) {
|
||||
return currentInterceptor(ctx, req, "DebugStat", toCall)
|
||||
}
|
||||
}
|
||||
call, _ := actualCall(ctx, req)
|
||||
return call.(*pb.RpcDebugStatResponse)
|
||||
}
|
||||
func (h *ClientCommandsHandlerProxy) DebugTree(ctx context.Context, req *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse {
|
||||
actualCall := func(ctx context.Context, req any) (any, error) {
|
||||
return h.client.DebugTree(ctx, req.(*pb.RpcDebugTreeRequest)), nil
|
||||
|
|
115
cmd/testcase/main.go
Normal file
115
cmd/testcase/main.go
Normal file
|
@ -0,0 +1,115 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/gogo/protobuf/jsonpb"
|
||||
"github.com/gogo/protobuf/proto"
|
||||
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
)
|
||||
|
||||
func run() error {
|
||||
if len(os.Args) == 1 {
|
||||
return fmt.Errorf("select command: generate-json-helpers")
|
||||
}
|
||||
|
||||
if os.Args[1] == "generate-json-helpers" {
|
||||
return generateJsonHelpers()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateJsonHelpers() error {
|
||||
rootPath := "./tests/integration/testdata/import"
|
||||
entries, err := os.ReadDir(rootPath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("read dir: %w", err)
|
||||
}
|
||||
for _, entry := range entries {
|
||||
if entry.IsDir() {
|
||||
err := generateJsonHelpersForImportCase(filepath.Join(rootPath, entry.Name()))
|
||||
if err != nil {
|
||||
return fmt.Errorf("generate json helpers for dir %s: %w", entry.Name(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateJsonHelpersForImportCase(dir string) error {
|
||||
entries, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
return fmt.Errorf("read dir: %w", err)
|
||||
}
|
||||
for _, entry := range entries {
|
||||
if entry.IsDir() {
|
||||
continue
|
||||
}
|
||||
// Remove old json files
|
||||
if filepath.Ext(entry.Name()) == ".txt" {
|
||||
path := filepath.Join(dir, entry.Name())
|
||||
fmt.Println("delete old json file: ", path)
|
||||
err := os.Remove(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("remove file: %w", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, entry := range entries {
|
||||
if entry.IsDir() {
|
||||
continue
|
||||
}
|
||||
if filepath.Ext(entry.Name()) == ".pb" {
|
||||
err = generateJsonHelper(dir, entry.Name())
|
||||
if err != nil {
|
||||
return fmt.Errorf("generate helper: %w", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateJsonHelper(dir string, pbFileName string) error {
|
||||
f, err := os.Open(filepath.Join(dir, pbFileName))
|
||||
if err != nil {
|
||||
return fmt.Errorf("open file: %w", err)
|
||||
}
|
||||
defer f.Close()
|
||||
snapshot := &pb.SnapshotWithType{}
|
||||
|
||||
data, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
return fmt.Errorf("read pb file: %w", err)
|
||||
}
|
||||
err = proto.Unmarshal(data, snapshot)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unmarshal pb: %w", err)
|
||||
}
|
||||
|
||||
jsonFilePath := filepath.Join(dir, pbFileName+".txt")
|
||||
jsonFile, err := os.Create(jsonFilePath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create file: %w", err)
|
||||
}
|
||||
defer jsonFile.Close()
|
||||
|
||||
marshaler := &jsonpb.Marshaler{Indent: " "}
|
||||
err = marshaler.Marshal(jsonFile, snapshot)
|
||||
if err != nil {
|
||||
return fmt.Errorf("marshal to json: %w", err)
|
||||
}
|
||||
fmt.Println("created json file: ", jsonFilePath)
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
err := run()
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
|
@ -60,7 +60,7 @@ type (
|
|||
analytics, validate, creator bool
|
||||
list, removeRelations, exclude bool
|
||||
collectCustomUsageInfo bool
|
||||
path, rules string
|
||||
path, rules, spaceDashboardId string
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -164,6 +164,7 @@ func getFlags() (*cliFlags, error) {
|
|||
rules := flag.String("rules", "", "Path to file with processing rules")
|
||||
exclude := flag.Bool("exclude", false, "Exclude objects that did not pass validation")
|
||||
custom := flag.Bool("c", false, "Collect usage information about custom types and relations")
|
||||
spaceDashboardId := flag.String("s", "", "Id of object to be set as Space Dashboard")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
|
@ -181,6 +182,7 @@ func getFlags() (*cliFlags, error) {
|
|||
rules: *rules,
|
||||
exclude: *exclude,
|
||||
collectCustomUsageInfo: *custom,
|
||||
spaceDashboardId: *spaceDashboardId,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -201,7 +203,7 @@ func collectUseCaseInfo(files []*zip.File, fileName string) (info *useCaseInfo,
|
|||
continue
|
||||
}
|
||||
|
||||
if strings.HasPrefix(f.Name, "files/") {
|
||||
if strings.HasPrefix(f.Name, "files") {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -290,6 +292,7 @@ func processFiles(files []*zip.File, zw *zip.Writer, info *useCaseInfo, flags *c
|
|||
if err != nil {
|
||||
if !(flags.exclude && errors.Is(err, errValidationFailed)) {
|
||||
// just do not include object that failed validation
|
||||
fmt.Println(f.Name)
|
||||
incorrectFileFound = true
|
||||
}
|
||||
continue
|
||||
|
@ -298,9 +301,9 @@ func processFiles(files []*zip.File, zw *zip.Writer, info *useCaseInfo, flags *c
|
|||
continue
|
||||
}
|
||||
newFileName := f.Name
|
||||
if strings.HasPrefix(newFileName, ".pb.json") {
|
||||
if strings.HasSuffix(newFileName, ".pb.json") {
|
||||
// output of usecase validator is always an archive with protobufs
|
||||
newFileName = strings.TrimPrefix(newFileName, ".json")
|
||||
newFileName = strings.TrimSuffix(newFileName, ".json")
|
||||
}
|
||||
nf, err := zw.Create(newFileName)
|
||||
if err != nil {
|
||||
|
@ -319,10 +322,10 @@ func processFiles(files []*zip.File, zw *zip.Writer, info *useCaseInfo, flags *c
|
|||
|
||||
func processRawData(data []byte, name string, info *useCaseInfo, flags *cliFlags) ([]byte, error) {
|
||||
if name == constant.ProfileFile {
|
||||
return processProfile(data, info)
|
||||
return processProfile(data, info, flags.spaceDashboardId)
|
||||
}
|
||||
|
||||
if strings.HasPrefix(name, "files/") {
|
||||
if strings.HasPrefix(name, "files") {
|
||||
return data, nil
|
||||
}
|
||||
|
||||
|
@ -441,7 +444,8 @@ func removeAccountRelatedDetails(s *pb.ChangeSnapshot) {
|
|||
bundle.RelationKeyRelationFormatObjectTypes.String(),
|
||||
bundle.RelationKeySourceFilePath.String(),
|
||||
bundle.RelationKeyLinks.String(),
|
||||
bundle.RelationKeyBacklinks.String():
|
||||
bundle.RelationKeyBacklinks.String(),
|
||||
bundle.RelationKeyWorkspaceId.String():
|
||||
|
||||
delete(s.Data.Details.Fields, key)
|
||||
}
|
||||
|
@ -453,7 +457,7 @@ func insertCreatorInfo(s *pb.ChangeSnapshot) {
|
|||
s.Data.Details.Fields[bundle.RelationKeyLastModifiedBy.String()] = pbtypes.String(addr.AnytypeProfileId)
|
||||
}
|
||||
|
||||
func processProfile(data []byte, info *useCaseInfo) ([]byte, error) {
|
||||
func processProfile(data []byte, info *useCaseInfo, spaceDashboardId string) ([]byte, error) {
|
||||
profile := &pb.Profile{}
|
||||
if err := profile.Unmarshal(data); err != nil {
|
||||
e := fmt.Errorf("cannot unmarshal profile: %w", err)
|
||||
|
@ -462,6 +466,12 @@ func processProfile(data []byte, info *useCaseInfo) ([]byte, error) {
|
|||
}
|
||||
profile.Name = ""
|
||||
profile.ProfileId = ""
|
||||
|
||||
if spaceDashboardId != "" {
|
||||
profile.SpaceDashboardId = spaceDashboardId
|
||||
return profile.Marshal()
|
||||
}
|
||||
|
||||
fmt.Println("spaceDashboardId = " + profile.SpaceDashboardId)
|
||||
if _, found := info.objects[profile.SpaceDashboardId]; !found {
|
||||
err := fmt.Errorf("failed to find Space Dashboard object '%s' among provided", profile.SpaceDashboardId)
|
||||
|
|
|
@ -63,6 +63,13 @@ func validateRelationBlocks(s *pb.SnapshotWithType, _ *useCaseInfo) (err error)
|
|||
relLinks := pbtypes.RelationLinks(s.Snapshot.Data.GetRelationLinks())
|
||||
for _, rk := range relKeys {
|
||||
if !relLinks.Has(rk) {
|
||||
if rel, errFound := bundle.GetRelation(domain.RelationKey(rk)); errFound == nil {
|
||||
s.Snapshot.Data.RelationLinks = append(s.Snapshot.Data.RelationLinks, &model.RelationLink{
|
||||
Key: rk,
|
||||
Format: rel.Format,
|
||||
})
|
||||
continue
|
||||
}
|
||||
err = multierror.Append(err, fmt.Errorf("relation '%v' exists in relation block but not in relation links of object %s", rk, id))
|
||||
}
|
||||
}
|
||||
|
@ -84,6 +91,13 @@ func validateDetails(s *pb.SnapshotWithType, info *useCaseInfo) (err error) {
|
|||
if e != nil {
|
||||
rel = getRelationLinkByKey(s.Snapshot.Data.RelationLinks, k)
|
||||
if rel == nil {
|
||||
if relation, errFound := bundle.GetRelation(domain.RelationKey(k)); errFound == nil {
|
||||
s.Snapshot.Data.RelationLinks = append(s.Snapshot.Data.RelationLinks, &model.RelationLink{
|
||||
Key: k,
|
||||
Format: relation.Format,
|
||||
})
|
||||
continue
|
||||
}
|
||||
err = multierror.Append(err, fmt.Errorf("relation '%s' exists in details of object '%s', but not in relation links", k, id))
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"github.com/anyproto/any-sync/commonspace/object/acl/list"
|
||||
"github.com/anyproto/any-sync/util/crypto"
|
||||
"github.com/gogo/protobuf/proto"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/ipfs/go-cid"
|
||||
"github.com/mr-tron/base58/base58"
|
||||
"go.uber.org/zap"
|
||||
|
@ -49,9 +50,11 @@ type AccountPermissions struct {
|
|||
type AclService interface {
|
||||
app.Component
|
||||
GenerateInvite(ctx context.Context, spaceId string) (*InviteInfo, error)
|
||||
RevokeInvite(ctx context.Context, spaceId string) error
|
||||
GetCurrentInvite(spaceId string) (*InviteInfo, error)
|
||||
ViewInvite(ctx context.Context, inviteCid cid.Cid, inviteFileKey crypto.SymKey) (*InviteView, error)
|
||||
Join(ctx context.Context, spaceId string, inviteCid cid.Cid, inviteFileKey crypto.SymKey) error
|
||||
StopSharing(ctx context.Context, spaceId string) error
|
||||
CancelJoin(ctx context.Context, spaceId string) (err error)
|
||||
Accept(ctx context.Context, spaceId string, identity crypto.PubKey, permissions model.ParticipantPermissions) error
|
||||
Decline(ctx context.Context, spaceId string, identity crypto.PubKey) (err error)
|
||||
|
@ -112,17 +115,11 @@ func (a *aclService) Remove(ctx context.Context, spaceId string, identities []cr
|
|||
}
|
||||
|
||||
func (a *aclService) CancelJoin(ctx context.Context, spaceId string) (err error) {
|
||||
// TODO: finish this by implementing space offload for join canceled spaces (?)
|
||||
sp, err := a.spaceService.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cl := sp.CommonSpace().AclClient()
|
||||
err = cl.CancelRequest(ctx)
|
||||
err = a.joiningClient.CancelJoin(ctx, spaceId)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w, %w", ErrAclRequestFailed, err)
|
||||
}
|
||||
return nil
|
||||
return a.spaceService.Delete(ctx, spaceId)
|
||||
}
|
||||
|
||||
func (a *aclService) Decline(ctx context.Context, spaceId string, identity crypto.PubKey) (err error) {
|
||||
|
@ -138,6 +135,23 @@ func (a *aclService) Decline(ctx context.Context, spaceId string, identity crypt
|
|||
return nil
|
||||
}
|
||||
|
||||
func (a *aclService) RevokeInvite(ctx context.Context, spaceId string) error {
|
||||
sp, err := a.spaceService.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cl := sp.CommonSpace().AclClient()
|
||||
err = cl.RevokeAllInvites(ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w, %w", ErrAclRequestFailed, err)
|
||||
}
|
||||
spaceViewId, err := a.spaceService.SpaceViewId(spaceId)
|
||||
if err != nil {
|
||||
return fmt.Errorf("get space view id: %w", err)
|
||||
}
|
||||
return a.removeExistingInviteFileInfo(ctx, spaceViewId)
|
||||
}
|
||||
|
||||
func (a *aclService) ChangePermissions(ctx context.Context, spaceId string, perms []AccountPermissions) error {
|
||||
sp, err := a.spaceService.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
|
@ -194,25 +208,62 @@ func (a *aclService) Leave(ctx context.Context, spaceId string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (a *aclService) StopSharing(ctx context.Context, spaceId string) error {
|
||||
removeSpace, err := a.spaceService.Get(ctx, spaceId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
newPrivKey, _, err := crypto.GenerateRandomEd25519KeyPair()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cl := removeSpace.CommonSpace().AclClient()
|
||||
err = cl.StopSharing(ctx, list.ReadKeyChangePayload{
|
||||
MetadataKey: newPrivKey,
|
||||
ReadKey: crypto.NewAES(),
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w, %w", ErrAclRequestFailed, err)
|
||||
}
|
||||
spaceViewId, err := a.spaceService.SpaceViewId(spaceId)
|
||||
if err != nil {
|
||||
return fmt.Errorf("get space view id: %w", err)
|
||||
}
|
||||
return a.removeExistingInviteFileInfo(ctx, spaceViewId)
|
||||
}
|
||||
|
||||
func (a *aclService) Join(ctx context.Context, spaceId string, inviteCid cid.Cid, inviteFileKey crypto.SymKey) error {
|
||||
invitePayload, err := a.getInvitePayload(ctx, inviteCid, inviteFileKey)
|
||||
if err != nil {
|
||||
return fmt.Errorf("get invite payload: %w", err)
|
||||
}
|
||||
|
||||
inviteKey, err := crypto.UnmarshalEd25519PrivateKeyProto(invitePayload.InviteKey)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unmarshal invite key: %w", err)
|
||||
}
|
||||
|
||||
err = a.joiningClient.RequestJoin(ctx, spaceId, list.RequestJoinPayload{
|
||||
aclHeadId, err := a.joiningClient.RequestJoin(ctx, spaceId, list.RequestJoinPayload{
|
||||
InviteKey: inviteKey,
|
||||
Metadata: a.spaceService.AccountMetadataPayload(),
|
||||
})
|
||||
if err != nil {
|
||||
if errors.Is(err, list.ErrInsufficientPermissions) {
|
||||
err = a.joiningClient.CancelRemoveSelf(ctx, spaceId)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w, %w", ErrAclRequestFailed, err)
|
||||
}
|
||||
return a.spaceService.CancelLeave(ctx, spaceId)
|
||||
}
|
||||
return fmt.Errorf("%w, %w", ErrAclRequestFailed, err)
|
||||
}
|
||||
return a.spaceService.Join(ctx, spaceId)
|
||||
err = a.spaceService.Join(ctx, spaceId, aclHeadId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return a.spaceService.TechSpace().SpaceViewSetData(ctx, spaceId, &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyName.String(): pbtypes.String(invitePayload.SpaceName),
|
||||
bundle.RelationKeyIconImage.String(): pbtypes.String(invitePayload.SpaceIconCid),
|
||||
}})
|
||||
}
|
||||
|
||||
type InviteView struct {
|
||||
|
@ -385,6 +436,25 @@ func (a *aclService) getExistingInviteFileInfo(spaceViewId string) (fileCid stri
|
|||
return
|
||||
}
|
||||
|
||||
func (a *aclService) removeExistingInviteFileInfo(ctx context.Context, spaceViewId string) (err error) {
|
||||
var fileCid string
|
||||
err = getblock.Do(a.objectGetter, spaceViewId, func(sb smartblock.SmartBlock) error {
|
||||
details := sb.Details()
|
||||
fileCid = pbtypes.GetString(details, bundle.RelationKeySpaceInviteFileCid.String())
|
||||
newState := sb.NewState()
|
||||
newState.RemoveDetail(bundle.RelationKeySpaceInviteFileCid.String(), bundle.RelationKeySpaceInviteFileKey.String())
|
||||
return sb.Apply(newState)
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cId, err := cid.Decode(fileCid)
|
||||
if err != nil {
|
||||
return fmt.Errorf("decode file cid: %w", err)
|
||||
}
|
||||
return a.inviteStore.RemoveInvite(ctx, cId)
|
||||
}
|
||||
|
||||
func (a *aclService) GetCurrentInvite(spaceId string) (*InviteInfo, error) {
|
||||
spaceViewId, err := a.spaceService.SpaceViewId(spaceId)
|
||||
if err != nil {
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/anyproto/any-sync/app/debugstat"
|
||||
"github.com/anyproto/any-sync/commonfile/fileservice"
|
||||
"github.com/anyproto/any-sync/commonspace"
|
||||
"github.com/anyproto/any-sync/commonspace/acl/aclclient"
|
||||
|
@ -189,6 +190,7 @@ func Bootstrap(a *app.App, components ...app.Component) {
|
|||
a.
|
||||
// Data storages
|
||||
Register(clientds.New()).
|
||||
Register(debugstat.New()).
|
||||
Register(ftsearch.New()).
|
||||
Register(objectstore.New()).
|
||||
Register(backlinks.New()).
|
||||
|
|
|
@ -32,6 +32,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/space"
|
||||
"github.com/anyproto/anytype-heart/util/linkpreview"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
"github.com/anyproto/anytype-heart/util/uri"
|
||||
)
|
||||
|
||||
const CName = "bookmark"
|
||||
|
@ -40,6 +41,7 @@ const CName = "bookmark"
|
|||
type ContentFuture func() *bookmark.ObjectContent
|
||||
|
||||
type Service interface {
|
||||
CreateObjectAndFetch(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error)
|
||||
CreateBookmarkObject(ctx context.Context, spaceID string, details *types.Struct, getContent ContentFuture) (objectId string, newDetails *types.Struct, err error)
|
||||
UpdateObject(objectId string, getContent *bookmark.ObjectContent) error
|
||||
// TODO Maybe Fetch and FetchBookmarkContent do the same thing differently?
|
||||
|
@ -89,6 +91,23 @@ func (s *service) Name() (name string) {
|
|||
|
||||
var log = logging.Logger("anytype-mw-bookmark")
|
||||
|
||||
func (s *service) CreateObjectAndFetch(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error) {
|
||||
source := pbtypes.GetString(req.Details, bundle.RelationKeySource.String())
|
||||
var res ContentFuture
|
||||
if source != "" {
|
||||
u, err := uri.NormalizeURI(source)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("process uri: %w", err)
|
||||
}
|
||||
res = s.FetchBookmarkContent(req.SpaceId, u, false)
|
||||
} else {
|
||||
res = func() *bookmark.ObjectContent {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return s.CreateBookmarkObject(ctx, spaceId, req.Details, res)
|
||||
}
|
||||
|
||||
func (s *service) CreateBookmarkObject(ctx context.Context, spaceID string, details *types.Struct, getContent ContentFuture) (objectId string, objectDetails *types.Struct, err error) {
|
||||
if details == nil || details.Fields == nil {
|
||||
return "", nil, fmt.Errorf("empty details")
|
||||
|
|
|
@ -226,7 +226,7 @@ func isRangeSelect(firstTextBlock *model.Block, lastTextBlock *model.Block, rang
|
|||
lastTextBlock == nil &&
|
||||
rang != nil &&
|
||||
rang.To-rang.From != int32(textutil.UTF16RuneCountString(firstTextBlock.GetText().Text)) &&
|
||||
rang.To != 0 && rang.From != 0
|
||||
rang.To > 0
|
||||
}
|
||||
|
||||
func unlinkAndClearBlocks(
|
||||
|
|
|
@ -1310,6 +1310,124 @@ func Test_CopyAndCutText(t *testing.T) {
|
|||
assert.Equal(t, expected, textSlotCopy)
|
||||
assert.Equal(t, expected, textSlotCut)
|
||||
})
|
||||
|
||||
t.Run("cut/copy - text range from 0", func(t *testing.T) {
|
||||
// given
|
||||
sb := smarttest.New("text")
|
||||
require.NoError(t, smartblock.ObjectApplyTemplate(sb, nil, template.WithEmpty))
|
||||
s := sb.NewState()
|
||||
|
||||
bl := givenBlockWithStyle(0, "")
|
||||
insertBlock(s, bl, "")
|
||||
require.NoError(t, sb.Apply(s))
|
||||
|
||||
// when
|
||||
cb := newFixture(sb)
|
||||
textSlotCopy, _, _, err := cb.Copy(nil, pb.RpcBlockCopyRequest{
|
||||
SelectedTextRange: &model.Range{From: 0, To: 7},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
textSlotCut, _, _, err := cb.Cut(nil, pb.RpcBlockCutRequest{
|
||||
SelectedTextRange: &model.Range{From: 0, To: 7},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
|
||||
// then
|
||||
require.NoError(t, err)
|
||||
const expected = "some te"
|
||||
assert.Equal(t, expected, textSlotCopy)
|
||||
assert.Equal(t, expected, textSlotCut)
|
||||
assert.Len(t, sb.Blocks(), 2)
|
||||
})
|
||||
|
||||
t.Run("cut/copy - text range from 0 to the end of block", func(t *testing.T) {
|
||||
// given
|
||||
const expected = "some text 1"
|
||||
sb := smarttest.New("text")
|
||||
require.NoError(t, smartblock.ObjectApplyTemplate(sb, nil, template.WithEmpty))
|
||||
s := sb.NewState()
|
||||
|
||||
bl := givenBlockWithStyle(0, "")
|
||||
insertBlock(s, bl, "")
|
||||
require.NoError(t, sb.Apply(s))
|
||||
|
||||
// when
|
||||
cb := newFixture(sb)
|
||||
textSlotCopy, _, _, err := cb.Copy(nil, pb.RpcBlockCopyRequest{
|
||||
SelectedTextRange: &model.Range{From: 0, To: int32(len(expected))},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
textSlotCut, _, _, err := cb.Cut(nil, pb.RpcBlockCutRequest{
|
||||
SelectedTextRange: &model.Range{From: 0, To: int32(len(expected))},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
|
||||
// then
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, expected, textSlotCopy)
|
||||
assert.Equal(t, expected, textSlotCut)
|
||||
assert.Len(t, sb.Blocks(), 1)
|
||||
})
|
||||
|
||||
t.Run("cut/copy - inner text range", func(t *testing.T) {
|
||||
// given
|
||||
sb := smarttest.New("text")
|
||||
require.NoError(t, smartblock.ObjectApplyTemplate(sb, nil, template.WithEmpty))
|
||||
s := sb.NewState()
|
||||
|
||||
bl := givenBlockWithStyle(0, "")
|
||||
insertBlock(s, bl, "")
|
||||
require.NoError(t, sb.Apply(s))
|
||||
|
||||
// when
|
||||
cb := newFixture(sb)
|
||||
textSlotCopy, _, _, err := cb.Copy(nil, pb.RpcBlockCopyRequest{
|
||||
SelectedTextRange: &model.Range{From: 2, To: 8},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
textSlotCut, _, _, err := cb.Cut(nil, pb.RpcBlockCutRequest{
|
||||
SelectedTextRange: &model.Range{From: 2, To: 8},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
|
||||
// then
|
||||
require.NoError(t, err)
|
||||
const expected = "me tex"
|
||||
assert.Equal(t, expected, textSlotCopy)
|
||||
assert.Equal(t, expected, textSlotCut)
|
||||
assert.Len(t, sb.Blocks(), 2)
|
||||
})
|
||||
|
||||
t.Run("cut/copy - text range from 0 to 0", func(t *testing.T) {
|
||||
// given
|
||||
sb := smarttest.New("text")
|
||||
require.NoError(t, smartblock.ObjectApplyTemplate(sb, nil, template.WithEmpty))
|
||||
s := sb.NewState()
|
||||
|
||||
bl := givenBlockWithStyle(0, "")
|
||||
insertBlock(s, bl, "")
|
||||
require.NoError(t, sb.Apply(s))
|
||||
|
||||
// when
|
||||
cb := newFixture(sb)
|
||||
textSlotCopy, _, anySlotCopy, err := cb.Copy(nil, pb.RpcBlockCopyRequest{
|
||||
SelectedTextRange: &model.Range{From: 0, To: 0},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
textSlotCut, _, anySlotCut, err := cb.Cut(nil, pb.RpcBlockCutRequest{
|
||||
SelectedTextRange: &model.Range{From: 0, To: 0},
|
||||
Blocks: []*model.Block{bl},
|
||||
})
|
||||
|
||||
// then
|
||||
require.NoError(t, err)
|
||||
const expected = "some text 1"
|
||||
assert.Equal(t, expected, textSlotCopy)
|
||||
assert.Equal(t, expected, textSlotCut)
|
||||
assert.Len(t, sb.Blocks(), 1)
|
||||
assert.Len(t, anySlotCopy, 1)
|
||||
assert.Len(t, anySlotCut, 1)
|
||||
})
|
||||
}
|
||||
|
||||
func givenRow3Level1NumberedBlock(s *state.State) *model.Block {
|
||||
|
|
|
@ -8,8 +8,9 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/stext"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/template"
|
||||
"github.com/anyproto/anytype-heart/core/block/migration"
|
||||
"github.com/anyproto/anytype-heart/core/block/source"
|
||||
"github.com/anyproto/anytype-heart/core/files/fileobject"
|
||||
"github.com/anyproto/anytype-heart/core/filestorage"
|
||||
coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
|
||||
)
|
||||
|
@ -17,16 +18,19 @@ import (
|
|||
func (f *ObjectFactory) newFile(sb smartblock.SmartBlock) *File {
|
||||
basicComponent := basic.NewBasic(sb, f.objectStore, f.layoutConverter)
|
||||
return &File{
|
||||
SmartBlock: sb,
|
||||
AllOperations: basicComponent,
|
||||
Text: stext.NewText(sb, f.objectStore, f.eventSender),
|
||||
SmartBlock: sb,
|
||||
ChangeReceiver: sb.(source.ChangeReceiver),
|
||||
AllOperations: basicComponent,
|
||||
Text: stext.NewText(sb, f.objectStore, f.eventSender), fileObjectService: f.fileObjectService,
|
||||
}
|
||||
}
|
||||
|
||||
type File struct {
|
||||
smartblock.SmartBlock
|
||||
source.ChangeReceiver
|
||||
basic.AllOperations
|
||||
stext.Text
|
||||
fileObjectService fileobject.Service
|
||||
}
|
||||
|
||||
func (p *File) CreationStateMigration(ctx *smartblock.InitContext) migration.Migration {
|
||||
|
@ -37,14 +41,12 @@ func (p *File) CreationStateMigration(ctx *smartblock.InitContext) migration.Mig
|
|||
ctx.State.SetObjectTypeKeys(ctx.ObjectTypeKeys)
|
||||
}
|
||||
|
||||
// Other blocks added in file indexer (see fileobject package)
|
||||
template.InitTemplate(s,
|
||||
template.WithEmpty,
|
||||
template.WithTitle,
|
||||
template.WithDefaultFeaturedRelations,
|
||||
template.WithFeaturedRelations,
|
||||
template.WithAllBlocksEditsRestricted,
|
||||
)
|
||||
// Other blocks added:
|
||||
// - While creating file object, if we use synchronous metadata indexing mode
|
||||
// - In background metadata indexer, if we use asynchronous metadata indexing mode
|
||||
//
|
||||
// See fileobject.Service
|
||||
p.fileObjectService.InitEmptyFileState(ctx.State)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,10 +85,13 @@ func (p *Page) Init(ctx *smartblock.InitContext) (err error) {
|
|||
}
|
||||
|
||||
if p.isRelationDeleted(ctx) {
|
||||
err = p.deleteRelationOptions(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// todo: move this to separate component
|
||||
go func() {
|
||||
err = p.deleteRelationOptions(p.SpaceID(), pbtypes.GetString(p.Details(), bundle.RelationKeyRelationKey.String()))
|
||||
if err != nil {
|
||||
log.With("err", err).Error("failed to delete relation options")
|
||||
}
|
||||
}()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -98,8 +101,7 @@ func (p *Page) isRelationDeleted(ctx *smartblock.InitContext) bool {
|
|||
pbtypes.GetBool(ctx.State.Details(), bundle.RelationKeyIsUninstalled.String())
|
||||
}
|
||||
|
||||
func (p *Page) deleteRelationOptions(ctx *smartblock.InitContext) error {
|
||||
relationKey := pbtypes.GetString(ctx.State.Details(), bundle.RelationKeyRelationKey.String())
|
||||
func (p *Page) deleteRelationOptions(spaceID string, relationKey string) error {
|
||||
relationOptions, _, err := p.objectStore.QueryObjectIDs(database.Query{
|
||||
Filters: []*model.BlockContentDataviewFilter{
|
||||
{
|
||||
|
@ -117,7 +119,7 @@ func (p *Page) deleteRelationOptions(ctx *smartblock.InitContext) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
spaceID := p.Space().Id()
|
||||
|
||||
for _, id := range relationOptions {
|
||||
err := p.objectDeleter.DeleteObjectByFullID(domain.FullID{SpaceID: spaceID, ObjectID: id})
|
||||
if err != nil {
|
||||
|
|
|
@ -82,10 +82,7 @@ func (p *Profile) CreationStateMigration(ctx *smartblock.InitContext) migration.
|
|||
template.InitTemplate(st,
|
||||
template.WithObjectTypesAndLayout([]domain.TypeKey{bundle.TypeKeyProfile}, model.ObjectType_profile),
|
||||
template.WithDetail(bundle.RelationKeyLayoutAlign, pbtypes.Float64(float64(model.Block_AlignCenter))),
|
||||
template.WithTitle,
|
||||
template.WithFeaturedRelations,
|
||||
template.WithRequiredRelations(),
|
||||
migrationWithIdentityBlock,
|
||||
migrationSetHidden,
|
||||
)
|
||||
},
|
||||
|
@ -126,6 +123,11 @@ func (p *Profile) StateMigrations() migration.Migrations {
|
|||
Version: 3,
|
||||
Proc: migrationSetHidden,
|
||||
},
|
||||
{
|
||||
Version: 4,
|
||||
Proc: func(s *state.State) {
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
|
|
100
core/block/editor/profilemigration/profilemigration.go
Normal file
100
core/block/editor/profilemigration/profilemigration.go
Normal file
|
@ -0,0 +1,100 @@
|
|||
package profilemigration
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/exp/slices"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple/text"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
const InternalKeyOldProfileData = "oldprofile"
|
||||
|
||||
var ErrNoCustomStateFound = fmt.Errorf("no custom state found")
|
||||
|
||||
// ExtractCustomState extract user-added state to the separate state and removes all the custom blocks/details from the original one
|
||||
func ExtractCustomState(st *state.State) (userState *state.State, err error) {
|
||||
identityBlockId := "identity"
|
||||
// we leave identity and other blocks in the original object to avoid them being re-added by old clients
|
||||
whitelistBlocks := []string{state.HeaderLayoutID, state.DescriptionBlockID, state.FeaturedRelationsID, state.TitleBlockID, identityBlockId}
|
||||
hasCustomState := false
|
||||
st.Iterate(func(b simple.Block) (isContinue bool) {
|
||||
if slices.Contains(whitelistBlocks, b.Model().Id) {
|
||||
return true
|
||||
}
|
||||
if textBlock, ok := b.(text.Block); ok {
|
||||
// custom one for text block
|
||||
if strings.TrimSpace(textBlock.GetText()) != "" {
|
||||
hasCustomState = true
|
||||
return false
|
||||
}
|
||||
} else if emptyChecker, ok := b.(IsEmpty); ok && !emptyChecker.IsEmpty() {
|
||||
hasCustomState = true
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
if !hasCustomState {
|
||||
return nil, ErrNoCustomStateFound
|
||||
}
|
||||
blocksMap := map[string]simple.Block{}
|
||||
|
||||
st.Iterate(func(b simple.Block) (isContinue bool) {
|
||||
blocksMap[b.Model().Id] = b.Copy()
|
||||
return true
|
||||
})
|
||||
|
||||
uk, err := domain.NewUniqueKey(coresb.SmartBlockTypePage, InternalKeyOldProfileData)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
newState := state.NewDocWithUniqueKey(st.RootId(), blocksMap, uk).(*state.State)
|
||||
newState.AddRelationLinks(st.GetRelationLinks()...)
|
||||
newStateDetails := pbtypes.CopyStruct(st.Details())
|
||||
newName := pbtypes.GetString(newStateDetails, bundle.RelationKeyName.String()) + " [migrated]"
|
||||
newStateDetails.Fields[bundle.RelationKeyName.String()] = pbtypes.String(newName)
|
||||
newStateDetails.Fields[bundle.RelationKeyIsHidden.String()] = pbtypes.Bool(false)
|
||||
newState.SetDetails(newStateDetails)
|
||||
// remove the identity block
|
||||
newState.Unlink(identityBlockId)
|
||||
newState.CleanupBlock(identityBlockId)
|
||||
newState.SetObjectTypeKey(bundle.TypeKeyPage)
|
||||
|
||||
// now cleanup the original state
|
||||
rootBlock := st.Get(st.RootId())
|
||||
rootBlock.Model().ChildrenIds = slices.DeleteFunc(rootBlock.Model().ChildrenIds, func(s string) bool {
|
||||
return !slices.Contains(whitelistBlocks, s)
|
||||
})
|
||||
|
||||
whitelistDetailKeys := []string{
|
||||
"iconEmoji",
|
||||
"name",
|
||||
"isHidden",
|
||||
"featuredRelations",
|
||||
"layout",
|
||||
"layoutAlign",
|
||||
"iconImage",
|
||||
"iconOption",
|
||||
}
|
||||
var keysToRemove []string
|
||||
for k := range st.Details().GetFields() {
|
||||
if !slices.Contains(whitelistDetailKeys, k) {
|
||||
keysToRemove = append(keysToRemove, k)
|
||||
}
|
||||
}
|
||||
// cleanup custom details from old state
|
||||
st.RemoveDetail(keysToRemove...)
|
||||
st.RemoveRelation(keysToRemove...)
|
||||
return newState, nil
|
||||
}
|
||||
|
||||
type IsEmpty interface {
|
||||
IsEmpty() bool
|
||||
}
|
921
core/block/editor/profilemigration/profilemigration_test.go
Normal file
921
core/block/editor/profilemigration/profilemigration_test.go
Normal file
|
@ -0,0 +1,921 @@
|
|||
package profilemigration
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/gogo/protobuf/jsonpb"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
var (
|
||||
stateOriginalRootId = "bafyreiew6ma6fkw3hyceivukjd2zelgwcsfdyr2mmbb34slf2575y6s63a"
|
||||
stateOriginal = `{
|
||||
"sbType": "ProfilePage",
|
||||
"snapshot": {
|
||||
"data": {
|
||||
"blocks": [
|
||||
{
|
||||
"id": "bafyreiew6ma6fkw3hyceivukjd2zelgwcsfdyr2mmbb34slf2575y6s63a",
|
||||
"childrenIds": [
|
||||
"header",
|
||||
"65d7c13961fab283c2729ad5",
|
||||
"65d7c14061fab283c2729ad8",
|
||||
"65d7c14f61fab283c2729adb",
|
||||
"65d7c15a61fab283c2729add",
|
||||
"65d7c16f61fab283c2729ae0",
|
||||
"65d7c17a61fab283c2729ae2"
|
||||
],
|
||||
"smartblock": {
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "header",
|
||||
"restrictions": {
|
||||
"edit": true,
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"childrenIds": [
|
||||
"title",
|
||||
"identity",
|
||||
"featuredRelations"
|
||||
],
|
||||
"layout": {
|
||||
"style": "Header"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d7c13961fab283c2729ad5",
|
||||
"text": {
|
||||
"text": "block1",
|
||||
"marks": {
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d7c14061fab283c2729ad8",
|
||||
"text": {
|
||||
"text": "block2",
|
||||
"marks": {
|
||||
"marks": [
|
||||
{
|
||||
"range": {
|
||||
"to": 6
|
||||
},
|
||||
"type": "Bold"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d7c14f61fab283c2729adb",
|
||||
"file": {
|
||||
"hash": "bafybeiarwjntnmjxc3wysufrqb6udvlm5s6exj6o5wzqjppvwpx4hvxx6m",
|
||||
"name": "image.png",
|
||||
"type": "Image",
|
||||
"mime": "image/png",
|
||||
"size": "42782",
|
||||
"targetObjectId": "bafyreibdezouiipznowdp7wi7hsvysakdavydjjzu7ny7hcstdnqhthpqi",
|
||||
"state": "Done",
|
||||
"style": "Embed"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d7c15a61fab283c2729add",
|
||||
"relation": {
|
||||
"key": "lastModifiedBy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d7c16f61fab283c2729ae0",
|
||||
"relation": {
|
||||
"key": "tag"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d7c17a61fab283c2729ae2",
|
||||
"dataview": {
|
||||
"views": [
|
||||
{
|
||||
"id": "63c59da2c54d2d6c985c2b6b",
|
||||
"name": "All",
|
||||
"sorts": [
|
||||
{
|
||||
"id": "63db97200e01101ff536a754",
|
||||
"RelationKey": "type"
|
||||
},
|
||||
{
|
||||
"id": "63db97200e01101ff536a755",
|
||||
"RelationKey": "lastModifiedDate",
|
||||
"type": "Desc"
|
||||
}
|
||||
],
|
||||
"filters": [
|
||||
{
|
||||
"id": "63d24bef257d7bad62f58c7d",
|
||||
"RelationKey": "type",
|
||||
"condition": "NotIn",
|
||||
"value": [
|
||||
"bafyreihatd4tx3xsdgp7hr72amclva3x4x35webt5vuufxhxc5ikhp77hy",
|
||||
"bafyreih33gcr4t4fq3kgmsuq5dou42otzfrou6rn6eohkeidcd7aw7tme4",
|
||||
"bafyreiaparytg33b7ekqjfchni3axdrzrevbcw3uq7a5m5324slmtzq4ai",
|
||||
"bafyreiawofrlyhnlobrrjh2qkdfz5rzfa5nvz7salq62573v4ktqrcytey",
|
||||
"bafyreib2tcsejm5pvkj5b77ac7ezrt2kc5htlqlnlrqwa2vbh56byryvva",
|
||||
"bafyreifn7xdb6wzawml5ymf6i67raq2yxjgcgrfcyuxoiiiuglygdxyxni",
|
||||
"bafyreic6ncroguyctlvsepoaay67fve75xg3ongvc2yiz46r4tcxftzkva",
|
||||
"bafyreic7jleoay7jaeaonqdpaeqimivgzsdgsqnrklhgodh6to6aenze6q",
|
||||
"bafyreibyffj6c5surbofv3mjdpkwyozygmutqhn2pkz4g3gajr4bzqlv2e",
|
||||
"bafyreibz5s4pjua57dnukiglqzi63jskryfd4g7xppbzoqyjbevyb6lche",
|
||||
"bafyreieayrnuafcadst7x6emrsdc2wf4db2y72zbpikvciam2o7huc76iy"
|
||||
],
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"id": "63d24bef257d7bad62f58c7e",
|
||||
"RelationKey": "name",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"relations": [
|
||||
{
|
||||
"key": "name",
|
||||
"isVisible": true,
|
||||
"width": 500
|
||||
},
|
||||
{
|
||||
"key": "type",
|
||||
"isVisible": true,
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedDate",
|
||||
"width": 178
|
||||
},
|
||||
{
|
||||
"key": "description",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "createdDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedBy",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastOpenedDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "done"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "e83e70ab-0601-4ab7-abd9-d4dc09b9e703",
|
||||
"type": "Gallery",
|
||||
"name": "Media",
|
||||
"sorts": [
|
||||
{
|
||||
"id": "63db97200e01101ff536a758",
|
||||
"RelationKey": "type"
|
||||
},
|
||||
{
|
||||
"id": "63db97200e01101ff536a759",
|
||||
"RelationKey": "name"
|
||||
}
|
||||
],
|
||||
"filters": [
|
||||
{
|
||||
"id": "63d24bef257d7bad62f58c81",
|
||||
"RelationKey": "type",
|
||||
"condition": "In",
|
||||
"value": [
|
||||
"bafyreic7jleoay7jaeaonqdpaeqimivgzsdgsqnrklhgodh6to6aenze6q",
|
||||
"bafyreib2tcsejm5pvkj5b77ac7ezrt2kc5htlqlnlrqwa2vbh56byryvva",
|
||||
"bafyreibyffj6c5surbofv3mjdpkwyozygmutqhn2pkz4g3gajr4bzqlv2e",
|
||||
"bafyreieayrnuafcadst7x6emrsdc2wf4db2y72zbpikvciam2o7huc76iy"
|
||||
]
|
||||
}
|
||||
],
|
||||
"relations": [
|
||||
{
|
||||
"key": "name",
|
||||
"isVisible": true,
|
||||
"width": 500
|
||||
},
|
||||
{
|
||||
"key": "type",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "createdDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "description",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedBy",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastOpenedDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "done"
|
||||
}
|
||||
],
|
||||
"coverRelationKey": "iconImage",
|
||||
"groupRelationKey": "done"
|
||||
},
|
||||
{
|
||||
"id": "2589f7e2-aad5-43ed-8759-f0771a6a40c9",
|
||||
"name": "Pre-installed",
|
||||
"sorts": [
|
||||
{
|
||||
"id": "63db97200e01101ff536a754",
|
||||
"RelationKey": "type"
|
||||
},
|
||||
{
|
||||
"id": "63db97200e01101ff536a757",
|
||||
"RelationKey": "name"
|
||||
},
|
||||
{
|
||||
"id": "63db97200e01101ff536a755",
|
||||
"RelationKey": "lastModifiedDate",
|
||||
"type": "Desc"
|
||||
}
|
||||
],
|
||||
"filters": [
|
||||
{
|
||||
"id": "63d24bef257d7bad62f58c7d",
|
||||
"RelationKey": "type",
|
||||
"condition": "NotIn",
|
||||
"value": [
|
||||
"bafyreihatd4tx3xsdgp7hr72amclva3x4x35webt5vuufxhxc5ikhp77hy",
|
||||
"bafyreih33gcr4t4fq3kgmsuq5dou42otzfrou6rn6eohkeidcd7aw7tme4",
|
||||
"bafyreiaparytg33b7ekqjfchni3axdrzrevbcw3uq7a5m5324slmtzq4ai",
|
||||
"bafyreiawofrlyhnlobrrjh2qkdfz5rzfa5nvz7salq62573v4ktqrcytey",
|
||||
"bafyreib2tcsejm5pvkj5b77ac7ezrt2kc5htlqlnlrqwa2vbh56byryvva",
|
||||
"bafyreifn7xdb6wzawml5ymf6i67raq2yxjgcgrfcyuxoiiiuglygdxyxni",
|
||||
"bafyreic6ncroguyctlvsepoaay67fve75xg3ongvc2yiz46r4tcxftzkva",
|
||||
"bafyreic7jleoay7jaeaonqdpaeqimivgzsdgsqnrklhgodh6to6aenze6q",
|
||||
"bafyreibyffj6c5surbofv3mjdpkwyozygmutqhn2pkz4g3gajr4bzqlv2e",
|
||||
"bafyreibz5s4pjua57dnukiglqzi63jskryfd4g7xppbzoqyjbevyb6lche",
|
||||
"bafyreieayrnuafcadst7x6emrsdc2wf4db2y72zbpikvciam2o7huc76iy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "63d24bef257d7bad62f58c7e",
|
||||
"RelationKey": "tag",
|
||||
"condition": "In",
|
||||
"value": [
|
||||
"bafyreiawm24apxzqyhiz36a3aguwpywqyka7l7qpt2hxvasx3ivww7dawq"
|
||||
],
|
||||
"format": "tag"
|
||||
}
|
||||
],
|
||||
"relations": [
|
||||
{
|
||||
"key": "name",
|
||||
"isVisible": true,
|
||||
"width": 500
|
||||
},
|
||||
{
|
||||
"key": "type",
|
||||
"isVisible": true,
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedDate",
|
||||
"width": 178
|
||||
},
|
||||
{
|
||||
"key": "description",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "createdDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedBy",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "lastOpenedDate",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "done",
|
||||
"width": 192
|
||||
},
|
||||
{
|
||||
"key": "tag",
|
||||
"isVisible": true,
|
||||
"width": 192
|
||||
}
|
||||
],
|
||||
"cardSize": "Medium",
|
||||
"groupRelationKey": "done"
|
||||
}
|
||||
],
|
||||
"relationLinks": [
|
||||
{
|
||||
"key": "name",
|
||||
"format": "shorttext"
|
||||
},
|
||||
{
|
||||
"key": "type",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "description"
|
||||
},
|
||||
{
|
||||
"key": "createdDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedBy",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "lastOpenedDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "done",
|
||||
"format": "checkbox"
|
||||
},
|
||||
{
|
||||
"key": "tag",
|
||||
"format": "tag"
|
||||
}
|
||||
],
|
||||
"TargetObjectId": "bafyreibgdh7ka67etpdwwsckhnsez7k7qjqtxkxo2nkrx67w5otgsl4bsi"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "title",
|
||||
"fields": {
|
||||
"_detailsKey": [
|
||||
"name",
|
||||
"done"
|
||||
]
|
||||
},
|
||||
"restrictions": {
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"align": "AlignCenter",
|
||||
"text": {
|
||||
"style": "Title",
|
||||
"marks": {
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "identity",
|
||||
"restrictions": {
|
||||
"edit": true,
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"relation": {
|
||||
"key": "profileOwnerIdentity"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "featuredRelations",
|
||||
"restrictions": {
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"align": "AlignCenter",
|
||||
"featuredRelations": {
|
||||
|
||||
}
|
||||
}
|
||||
],
|
||||
"details": {
|
||||
"backlinks": [
|
||||
],
|
||||
"createdDate": 1708638507,
|
||||
"creator": "_participant_bafyreifqavrshf5l2ovfexjzboibyvmweh6edx477mggj6lvpprp2tltgq_2msp3m2jb2vcd_A9YAB51C9MMWR5HLDzBR4A3BnkReMYHSR1wdmYEVfP4biKfr",
|
||||
"featuredRelations": [
|
||||
"backlinks"
|
||||
],
|
||||
"iconEmoji": "",
|
||||
"iconImage": "bafyreifhebpqmp3kx52wyfhmje23j7du3kguziddj4ilri7m5jngogbs24",
|
||||
"iconOption": 5,
|
||||
"id": "bafyreiew6ma6fkw3hyceivukjd2zelgwcsfdyr2mmbb34slf2575y6s63a",
|
||||
"isHidden": true,
|
||||
"lastModifiedBy": "_participant_bafyreifqavrshf5l2ovfexjzboibyvmweh6edx477mggj6lvpprp2tltgq_2msp3m2jb2vcd_A9YAB51C9MMWR5HLDzBR4A3BnkReMYHSR1wdmYEVfP4biKfr",
|
||||
"lastModifiedDate": 1708694933,
|
||||
"layout": 1,
|
||||
"layoutAlign": 1,
|
||||
"links": [
|
||||
"bafyreibgdh7ka67etpdwwsckhnsez7k7qjqtxkxo2nkrx67w5otgsl4bsi"
|
||||
],
|
||||
"name": "Roma",
|
||||
"profileOwnerIdentity": "_participant_bafyreifqavrshf5l2ovfexjzboibyvmweh6edx477mggj6lvpprp2tltgq_2msp3m2jb2vcd_A9YAB51C9MMWR5HLDzBR4A3BnkReMYHSR1wdmYEVfP4biKfr",
|
||||
"restrictions": [
|
||||
6,
|
||||
5,
|
||||
1,
|
||||
8
|
||||
],
|
||||
"snippet": "block1\nblock2",
|
||||
"spaceId": "bafyreifqavrshf5l2ovfexjzboibyvmweh6edx477mggj6lvpprp2tltgq.2msp3m2jb2vcd",
|
||||
"tag": [
|
||||
"bafyreiayeo7sk3i56v5cqyenjgr73wuz2fn52mmcuirqqdefhjiy6qji24"
|
||||
],
|
||||
"type": "bafyreifci7gcmxafbn6eikujw2elra4ynpxmdqs4fqzhql5n63gus7olpm"
|
||||
},
|
||||
"objectTypes": [
|
||||
"ot-profile"
|
||||
],
|
||||
"relationLinks": [
|
||||
{
|
||||
"key": "backlinks",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "featuredRelations",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "id",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "spaceId",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "snippet"
|
||||
},
|
||||
{
|
||||
"key": "layout",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "layoutAlign",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "name",
|
||||
"format": "shorttext"
|
||||
},
|
||||
{
|
||||
"key": "description"
|
||||
},
|
||||
{
|
||||
"key": "iconEmoji",
|
||||
"format": "emoji"
|
||||
},
|
||||
{
|
||||
"key": "iconImage",
|
||||
"format": "file"
|
||||
},
|
||||
{
|
||||
"key": "type",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "coverId"
|
||||
},
|
||||
{
|
||||
"key": "coverScale",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "coverType",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "coverX",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "coverY",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "createdDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "creator",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedBy",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "lastOpenedDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "isFavorite",
|
||||
"format": "checkbox"
|
||||
},
|
||||
{
|
||||
"key": "workspaceId",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "links",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "internalFlags",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "restrictions",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "iconOption",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "tag",
|
||||
"format": "tag"
|
||||
},
|
||||
{
|
||||
"key": "isHidden",
|
||||
"format": "checkbox"
|
||||
},
|
||||
{
|
||||
"key": "profileOwnerIdentity",
|
||||
"format": "shorttext"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
stateOriginalEmptyRootId = "bafyreif5rmdsvap7ieqnpvlm6vafizxw7igz37bmixtboopaiygpepyycm"
|
||||
stateOriginalEmpty = `
|
||||
{
|
||||
"sbType": "ProfilePage",
|
||||
"snapshot": {
|
||||
"data": {
|
||||
"blocks": [
|
||||
{
|
||||
"id": "bafyreif5rmdsvap7ieqnpvlm6vafizxw7igz37bmixtboopaiygpepyycm",
|
||||
"childrenIds": [
|
||||
"header",
|
||||
"65d8a97961fab22b735aa569",
|
||||
"65d8a98061fab22b735aa56b",
|
||||
"65d8a98061fab22b735aa56c"
|
||||
],
|
||||
"smartblock": {
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "header",
|
||||
"restrictions": {
|
||||
"edit": true,
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"childrenIds": [
|
||||
"title",
|
||||
"identity",
|
||||
"featuredRelations"
|
||||
],
|
||||
"layout": {
|
||||
"style": "Header"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d8a97961fab22b735aa569",
|
||||
"text": {
|
||||
"marks": {
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d8a98061fab22b735aa56b",
|
||||
"text": {
|
||||
"marks": {
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "65d8a98061fab22b735aa56c",
|
||||
"text": {
|
||||
"marks": {
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "title",
|
||||
"fields": {
|
||||
"_detailsKey": [
|
||||
"name",
|
||||
"done"
|
||||
]
|
||||
},
|
||||
"restrictions": {
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"align": "AlignCenter",
|
||||
"text": {
|
||||
"style": "Title",
|
||||
"marks": {
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "identity",
|
||||
"restrictions": {
|
||||
"edit": true,
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"relation": {
|
||||
"key": "profileOwnerIdentity"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "featuredRelations",
|
||||
"restrictions": {
|
||||
"remove": true,
|
||||
"drag": true,
|
||||
"dropOn": true
|
||||
},
|
||||
"align": "AlignCenter",
|
||||
"featuredRelations": {
|
||||
|
||||
}
|
||||
}
|
||||
],
|
||||
"details": {
|
||||
"backlinks": [
|
||||
],
|
||||
"createdDate": 1708697957,
|
||||
"creator": "_participant_bafyreicqzro4ea6ibejpswsq3ygdvl5yrswdhv3wcaeiya4zrhgxijorhi_25fl2y3kgedrp_ABG7CU4WFNtAtdYMbDoJArFguPJRHqq9Bag5un1iBoy2qqkn",
|
||||
"featuredRelations": [
|
||||
"backlinks"
|
||||
],
|
||||
"iconOption": 15,
|
||||
"id": "bafyreif5rmdsvap7ieqnpvlm6vafizxw7igz37bmixtboopaiygpepyycm",
|
||||
"isHidden": true,
|
||||
"lastModifiedBy": "_participant_bafyreicqzro4ea6ibejpswsq3ygdvl5yrswdhv3wcaeiya4zrhgxijorhi_25fl2y3kgedrp_ABG7CU4WFNtAtdYMbDoJArFguPJRHqq9Bag5un1iBoy2qqkn",
|
||||
"lastModifiedDate": 1708698142,
|
||||
"layout": 1,
|
||||
"layoutAlign": 1,
|
||||
"links": [
|
||||
],
|
||||
"name": "ooo",
|
||||
"profileOwnerIdentity": "_participant_bafyreicqzro4ea6ibejpswsq3ygdvl5yrswdhv3wcaeiya4zrhgxijorhi_25fl2y3kgedrp_ABG7CU4WFNtAtdYMbDoJArFguPJRHqq9Bag5un1iBoy2qqkn",
|
||||
"restrictions": [
|
||||
6,
|
||||
5,
|
||||
1,
|
||||
8
|
||||
],
|
||||
"snippet": "",
|
||||
"spaceId": "bafyreicqzro4ea6ibejpswsq3ygdvl5yrswdhv3wcaeiya4zrhgxijorhi.25fl2y3kgedrp",
|
||||
"type": "bafyreiawi7jklmbhjqfux73ncl2t3ujytjahv2steorcqabydchkfze4iy"
|
||||
},
|
||||
"objectTypes": [
|
||||
"ot-profile"
|
||||
],
|
||||
"relationLinks": [
|
||||
{
|
||||
"key": "backlinks",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "featuredRelations",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "id",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "spaceId",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "snippet"
|
||||
},
|
||||
{
|
||||
"key": "layout",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "layoutAlign",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "name",
|
||||
"format": "shorttext"
|
||||
},
|
||||
{
|
||||
"key": "description"
|
||||
},
|
||||
{
|
||||
"key": "iconEmoji",
|
||||
"format": "emoji"
|
||||
},
|
||||
{
|
||||
"key": "iconImage",
|
||||
"format": "file"
|
||||
},
|
||||
{
|
||||
"key": "type",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "coverId"
|
||||
},
|
||||
{
|
||||
"key": "coverScale",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "coverType",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "coverX",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "coverY",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "createdDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "creator",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "lastModifiedBy",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "lastOpenedDate",
|
||||
"format": "date"
|
||||
},
|
||||
{
|
||||
"key": "isFavorite",
|
||||
"format": "checkbox"
|
||||
},
|
||||
{
|
||||
"key": "workspaceId",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "links",
|
||||
"format": "object"
|
||||
},
|
||||
{
|
||||
"key": "internalFlags",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "restrictions",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "iconOption",
|
||||
"format": "number"
|
||||
},
|
||||
{
|
||||
"key": "isHidden",
|
||||
"format": "checkbox"
|
||||
},
|
||||
{
|
||||
"key": "profileOwnerIdentity",
|
||||
"format": "shorttext"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}`
|
||||
)
|
||||
|
||||
func TestProfileMigrationExtractCustomState(t *testing.T) {
|
||||
sn := pb.SnapshotWithType{}
|
||||
err := jsonpb.UnmarshalString(stateOriginal, &sn)
|
||||
require.NoError(t, err)
|
||||
var identityBlockId = "identity"
|
||||
originalState := state.NewDocFromSnapshot(stateOriginalRootId, sn.Snapshot).(*state.State)
|
||||
originalStateCopy := originalState.Copy()
|
||||
extractedState, err := ExtractCustomState(originalState)
|
||||
require.NoError(t, err)
|
||||
for _, block := range originalState.Blocks() {
|
||||
// should contains only whitelisted blocks
|
||||
require.Containsf(t, []string{
|
||||
stateOriginalRootId,
|
||||
state.FeaturedRelationsID,
|
||||
state.TitleBlockID,
|
||||
state.HeaderLayoutID,
|
||||
state.FeaturedRelationsID,
|
||||
identityBlockId, // we do not remove this block
|
||||
}, block.Id, "state should not contain block %s", block.Id)
|
||||
}
|
||||
|
||||
for _, block := range originalStateCopy.Blocks() {
|
||||
if block.Id == identityBlockId {
|
||||
require.Nilf(t, extractedState.Get(block.Id), "extractedState should not contain block %s", block.Id)
|
||||
} else {
|
||||
require.NotNilf(t, extractedState.Get(block.Id), "extractedState should contain block %s", block.Id)
|
||||
}
|
||||
}
|
||||
|
||||
var whitelistedDetailKeys = []string{
|
||||
"iconEmoji",
|
||||
"name",
|
||||
"isHidden",
|
||||
"featuredRelations",
|
||||
"layout",
|
||||
"layoutAlign",
|
||||
"iconImage",
|
||||
"iconOption",
|
||||
}
|
||||
for k, v := range originalStateCopy.Details().GetFields() {
|
||||
if k == bundle.RelationKeyName.String() {
|
||||
// should has suffix in the name
|
||||
v = pbtypes.String(v.GetStringValue() + " [migrated]")
|
||||
}
|
||||
if k == bundle.RelationKeyIsHidden.String() {
|
||||
// extracted state should not be hidden
|
||||
v = pbtypes.Bool(false)
|
||||
}
|
||||
require.Truef(t, v.Equal(extractedState.Details().Fields[k]), "detail %s should be equal to original state", k)
|
||||
}
|
||||
|
||||
for k, _ := range originalState.Details().GetFields() {
|
||||
require.Contains(t, whitelistedDetailKeys, k, "old state should not contain %s", k)
|
||||
}
|
||||
require.Equal(t, bundle.TypeKeyPage, extractedState.ObjectTypeKey())
|
||||
|
||||
_, err = ExtractCustomState(originalState.NewState())
|
||||
require.ErrorIsf(t, err, ErrNoCustomStateFound, "should return error on the second time call")
|
||||
}
|
||||
|
||||
func TestProfileMigrationExtractCustomStateEmpty(t *testing.T) {
|
||||
sn := pb.SnapshotWithType{}
|
||||
err := jsonpb.UnmarshalString(stateOriginalEmpty, &sn)
|
||||
require.NoError(t, err)
|
||||
originalStateEmpty := state.NewDocFromSnapshot(stateOriginalEmptyRootId, sn.Snapshot).(*state.State)
|
||||
_, err = ExtractCustomState(originalStateEmpty)
|
||||
|
||||
require.ErrorIsf(t, err, ErrNoCustomStateFound, "should return error because profile was not changed by user")
|
||||
}
|
|
@ -16,11 +16,14 @@ import (
|
|||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/files/fileobject"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/logging"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
"github.com/anyproto/anytype-heart/space/spaceinfo"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
)
|
||||
|
||||
var spaceViewLog = logging.Logger("core.block.editor.spaceview")
|
||||
|
||||
var ErrIncorrectSpaceInfo = errors.New("space info is incorrect")
|
||||
|
||||
type spaceService interface {
|
||||
|
@ -33,6 +36,7 @@ type SpaceView struct {
|
|||
smartblock.SmartBlock
|
||||
spaceService spaceService
|
||||
fileObjectService fileobject.Service
|
||||
log *logging.Sugared
|
||||
}
|
||||
|
||||
// newSpaceView creates a new SpaceView with given deps
|
||||
|
@ -40,6 +44,7 @@ func (f *ObjectFactory) newSpaceView(sb smartblock.SmartBlock) *SpaceView {
|
|||
return &SpaceView{
|
||||
SmartBlock: sb,
|
||||
spaceService: f.spaceService,
|
||||
log: spaceViewLog,
|
||||
fileObjectService: f.fileObjectService,
|
||||
}
|
||||
}
|
||||
|
@ -53,10 +58,11 @@ func (s *SpaceView) Init(ctx *smartblock.InitContext) (err error) {
|
|||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.log = s.log.With("spaceId", spaceID)
|
||||
|
||||
s.DisableLayouts()
|
||||
info := s.getSpaceInfo(ctx.State)
|
||||
newPersistentInfo := spaceinfo.SpacePersistentInfo{SpaceID: spaceID, AccountStatus: info.AccountStatus}
|
||||
newPersistentInfo := spaceinfo.SpacePersistentInfo{SpaceID: spaceID, AccountStatus: info.AccountStatus, AclHeadId: info.AclHeadId}
|
||||
s.setSpacePersistentInfo(ctx.State, newPersistentInfo)
|
||||
s.setSpaceLocalInfo(ctx.State, spaceinfo.SpaceLocalInfo{
|
||||
SpaceID: spaceID,
|
||||
|
@ -138,11 +144,18 @@ func (s *SpaceView) setSpaceLocalInfo(st *state.State, info spaceinfo.SpaceLocal
|
|||
st.SetLocalDetail(bundle.RelationKeyTargetSpaceId.String(), pbtypes.String(info.SpaceID))
|
||||
st.SetLocalDetail(bundle.RelationKeySpaceLocalStatus.String(), pbtypes.Int64(int64(info.LocalStatus)))
|
||||
st.SetLocalDetail(bundle.RelationKeySpaceRemoteStatus.String(), pbtypes.Int64(int64(info.RemoteStatus)))
|
||||
s.log.Infof("set space local status: %s, remote status: %s", info.LocalStatus.String(), info.RemoteStatus.String())
|
||||
}
|
||||
|
||||
func (s *SpaceView) setSpacePersistentInfo(st *state.State, info spaceinfo.SpacePersistentInfo) {
|
||||
st.SetLocalDetail(bundle.RelationKeyTargetSpaceId.String(), pbtypes.String(info.SpaceID))
|
||||
st.SetDetail(bundle.RelationKeySpaceAccountStatus.String(), pbtypes.Int64(int64(info.AccountStatus)))
|
||||
log := s.log
|
||||
if info.AclHeadId != "" {
|
||||
log = log.With("aclHeadId", info.AclHeadId)
|
||||
st.SetDetail(bundle.RelationKeyLatestAclHeadId.String(), pbtypes.String(info.AclHeadId))
|
||||
}
|
||||
log.Infof("set space account status: %s", info.AccountStatus.String())
|
||||
}
|
||||
|
||||
// targetSpaceID returns space id from the root of space object's tree
|
||||
|
@ -167,6 +180,7 @@ func (s *SpaceView) getSpaceInfo(st *state.State) (info spaceinfo.SpacePersisten
|
|||
return spaceinfo.SpacePersistentInfo{
|
||||
SpaceID: pbtypes.GetString(details, bundle.RelationKeyTargetSpaceId.String()),
|
||||
AccountStatus: spaceinfo.AccountStatus(pbtypes.GetInt64(details, bundle.RelationKeySpaceAccountStatus.String())),
|
||||
AclHeadId: pbtypes.GetString(details, bundle.RelationKeyLatestAclHeadId.String()),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -89,13 +89,16 @@ func (s *State) normalizeLayout() {
|
|||
}
|
||||
|
||||
func (s *State) removeEmptyLayoutBlocks(blocks map[string]simple.Block) {
|
||||
// TODO: rewrite to use DFS routine: If layout block has no children, remove it, then check its parent
|
||||
for _, b := range blocks {
|
||||
if layout := b.Model().GetLayout(); layout != nil {
|
||||
if len(b.Model().ChildrenIds) == 0 {
|
||||
s.Unlink(b.Model().Id)
|
||||
if layout.Style == model.BlockContentLayout_Row || layout.Style == model.BlockContentLayout_Column || layout.Style == model.BlockContentLayout_Div {
|
||||
if len(b.Model().ChildrenIds) == 0 {
|
||||
s.Unlink(b.Model().Id)
|
||||
}
|
||||
// load parent for checking
|
||||
s.GetParentOf(b.Model().Id)
|
||||
}
|
||||
// load parent for checking
|
||||
s.GetParentOf(b.Model().Id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -112,14 +115,14 @@ func (s *State) normalizeChildren(b simple.Block) {
|
|||
}
|
||||
|
||||
func (s *State) normalizeLayoutRow(b simple.Block) {
|
||||
if b.Model().GetLayout().Style != model.BlockContentLayout_Row {
|
||||
return
|
||||
}
|
||||
// remove empty layout
|
||||
if len(b.Model().ChildrenIds) == 0 {
|
||||
s.Unlink(b.Model().Id)
|
||||
return
|
||||
}
|
||||
if b.Model().GetLayout().Style != model.BlockContentLayout_Row {
|
||||
return
|
||||
}
|
||||
// one column - remove row
|
||||
if len(b.Model().ChildrenIds) == 1 {
|
||||
var (
|
||||
|
|
|
@ -76,11 +76,26 @@ func TestState_Normalize(t *testing.T) {
|
|||
r.Add(simple.New(&model.Block{Id: "r1", ChildrenIds: []string{"c1", "c2"}, Content: contRow}))
|
||||
r.Add(simple.New(&model.Block{Id: "c1", Content: contColumn}))
|
||||
r.Add(simple.New(&model.Block{Id: "c2", Content: contColumn}))
|
||||
r.Add(simple.New(&model.Block{Id: "t1"}))
|
||||
|
||||
r.Add(simple.New(&model.Block{Id: "t1", ChildrenIds: []string{"tableRows", "tableColumns"}, Content: &model.BlockContentOfTable{
|
||||
Table: &model.BlockContentTable{},
|
||||
}}))
|
||||
r.Add(simple.New(&model.Block{Id: "tableRows", Content: &model.BlockContentOfLayout{
|
||||
Layout: &model.BlockContentLayout{
|
||||
Style: model.BlockContentLayout_TableRows,
|
||||
},
|
||||
}}))
|
||||
r.Add(simple.New(&model.Block{Id: "tableColumns", Content: &model.BlockContentOfLayout{
|
||||
Layout: &model.BlockContentLayout{
|
||||
Style: model.BlockContentLayout_TableColumns,
|
||||
},
|
||||
}}))
|
||||
|
||||
s := r.NewState()
|
||||
s.Get("c1")
|
||||
s.Get("c2")
|
||||
s.Get("tableRows")
|
||||
s.Get("tableColumns")
|
||||
|
||||
msgs, hist, err := ApplyState(s, true)
|
||||
require.NoError(t, err)
|
||||
|
@ -91,6 +106,8 @@ func TestState_Normalize(t *testing.T) {
|
|||
assert.Nil(t, r.Pick("r1"))
|
||||
assert.Nil(t, r.Pick("c1"))
|
||||
assert.Nil(t, r.Pick("c2"))
|
||||
assert.NotNil(t, r.Pick("tableRows")) // Do not remove table rows
|
||||
assert.NotNil(t, r.Pick("tableColumns")) // Do not remove table columns
|
||||
})
|
||||
|
||||
t.Run("remove one column row", func(t *testing.T) {
|
||||
|
|
|
@ -120,7 +120,7 @@ func (s *State) addChangesForSideMoving(targetID string, pos model.BlockPosition
|
|||
targetID = lastTargetID
|
||||
pos = model.Block_Bottom
|
||||
}
|
||||
cb.Add(targetID, pos, blockToAdd.Model())
|
||||
cb.Add(targetID, pos, blockToAdd.Copy().Model())
|
||||
lastOperation = operationAdd
|
||||
lastTargetID = id
|
||||
} else {
|
||||
|
|
|
@ -388,16 +388,12 @@ func TestTextImpl_SetText(t *testing.T) {
|
|||
BlockId: "1",
|
||||
Text: "1",
|
||||
}))
|
||||
tb.(*textImpl).Lock()
|
||||
tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
tb.(*textImpl).Unlock()
|
||||
flushLocked(tb)
|
||||
require.NoError(t, setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
BlockId: "2",
|
||||
Text: "2",
|
||||
}))
|
||||
tb.(*textImpl).Lock()
|
||||
tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
tb.(*textImpl).Unlock()
|
||||
flushLocked(tb)
|
||||
assert.Equal(t, "1", sb.NewState().Pick("1").Model().GetText().Text)
|
||||
assert.Equal(t, "2", sb.NewState().Pick("2").Model().GetText().Text)
|
||||
time.Sleep(time.Second)
|
||||
|
@ -442,7 +438,7 @@ func TestTextImpl_SetText(t *testing.T) {
|
|||
}))
|
||||
})
|
||||
// TODO: GO-2062 Need to review tests after text shortening refactor
|
||||
//t.Run("set text greater than limit", func(t *testing.T) {
|
||||
// t.Run("set text greater than limit", func(t *testing.T) {
|
||||
// //given
|
||||
// sb := smarttest.New("test")
|
||||
// sb.AddBlock(simple.New(&model.Block{Id: "test", ChildrenIds: []string{"1"}})).
|
||||
|
@ -458,9 +454,9 @@ func TestTextImpl_SetText(t *testing.T) {
|
|||
// //then
|
||||
// assert.NoError(t, err)
|
||||
// assert.Equal(t, strings.Repeat("a", textSizeLimit), sb.NewState().Pick("1").Model().GetText().Text)
|
||||
//})
|
||||
// })
|
||||
t.Run("carriage state is saved in history", func(t *testing.T) {
|
||||
//given
|
||||
// given
|
||||
ctx := session.NewContext()
|
||||
sb := smarttest.New("test")
|
||||
sb.AddBlock(simple.New(&model.Block{Id: "test", ChildrenIds: []string{"1"}})).
|
||||
|
@ -468,7 +464,7 @@ func TestTextImpl_SetText(t *testing.T) {
|
|||
tb := NewText(sb, nil, nil)
|
||||
carriageState := undo.CarriageState{BlockID: "1", RangeFrom: 2, RangeTo: 3}
|
||||
|
||||
//when
|
||||
// when
|
||||
err := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
BlockId: carriageState.BlockID,
|
||||
SelectedTextRange: &model.Range{From: carriageState.RangeFrom, To: carriageState.RangeTo},
|
||||
|
@ -476,7 +472,7 @@ func TestTextImpl_SetText(t *testing.T) {
|
|||
tb.(*textImpl).History().Add(undo.Action{Add: []simple.Block{simple.New(&model.Block{Id: "1"})}})
|
||||
action, err := tb.(*textImpl).History().Previous()
|
||||
|
||||
//then
|
||||
// then
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, carriageState, action.CarriageInfo.Before)
|
||||
})
|
||||
|
@ -584,16 +580,15 @@ func TestTextImpl_removeInternalFlags(t *testing.T) {
|
|||
tb := NewText(sb, nil, nil)
|
||||
|
||||
// when
|
||||
err1 := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
err := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
ContextId: rootID,
|
||||
BlockId: blockID,
|
||||
Text: text,
|
||||
})
|
||||
err2 := tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
flushLocked(tb)
|
||||
|
||||
// then
|
||||
assert.NoError(t, err1)
|
||||
assert.NoError(t, err2)
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, pbtypes.GetIntList(sb.Details(), bundle.RelationKeyInternalFlags.String()), 3)
|
||||
})
|
||||
|
||||
|
@ -607,16 +602,15 @@ func TestTextImpl_removeInternalFlags(t *testing.T) {
|
|||
tb := NewText(sb, nil, nil)
|
||||
|
||||
// when
|
||||
err1 := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
err := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
ContextId: rootID,
|
||||
BlockId: blockID,
|
||||
Text: text + " is changed",
|
||||
})
|
||||
err2 := tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
flushLocked(tb)
|
||||
|
||||
// then
|
||||
assert.NoError(t, err1)
|
||||
assert.NoError(t, err2)
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, pbtypes.GetIntList(sb.Details(), bundle.RelationKeyInternalFlags.String()))
|
||||
})
|
||||
|
||||
|
@ -630,17 +624,16 @@ func TestTextImpl_removeInternalFlags(t *testing.T) {
|
|||
tb := NewText(sb, nil, nil)
|
||||
|
||||
// when
|
||||
err1 := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
err := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
ContextId: rootID,
|
||||
BlockId: blockID,
|
||||
Text: text,
|
||||
Marks: &model.BlockContentTextMarks{Marks: []*model.BlockContentTextMark{{Type: model.BlockContentTextMark_Bold}}},
|
||||
})
|
||||
err2 := tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
flushLocked(tb)
|
||||
|
||||
// then
|
||||
assert.NoError(t, err1)
|
||||
assert.NoError(t, err2)
|
||||
assert.NoError(t, err)
|
||||
assert.Empty(t, pbtypes.GetIntList(sb.Details(), bundle.RelationKeyInternalFlags.String()))
|
||||
})
|
||||
|
||||
|
@ -654,18 +647,23 @@ func TestTextImpl_removeInternalFlags(t *testing.T) {
|
|||
tb := NewText(sb, nil, nil)
|
||||
|
||||
// when
|
||||
err1 := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
err := setText(tb, ctx, pb.RpcBlockTextSetTextRequest{
|
||||
ContextId: rootID,
|
||||
BlockId: template.TitleBlockId,
|
||||
Text: text + " is changed",
|
||||
})
|
||||
err2 := tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
flushLocked(tb)
|
||||
|
||||
// then
|
||||
assert.NoError(t, err1)
|
||||
assert.NoError(t, err2)
|
||||
assert.NoError(t, err)
|
||||
flags := pbtypes.GetIntList(sb.Details(), bundle.RelationKeyInternalFlags.String())
|
||||
assert.Len(t, flags, 2)
|
||||
assert.NotContains(t, flags, model.InternalFlag_editorDeleteEmpty)
|
||||
})
|
||||
}
|
||||
|
||||
func flushLocked(tb Text) {
|
||||
tb.(*textImpl).Lock()
|
||||
tb.(*textImpl).flushSetTextState(smartblock.ApplyInfo{})
|
||||
tb.(*textImpl).Unlock()
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
|
@ -138,12 +139,14 @@ func (e *export) Export(ctx context.Context, req pb.RpcObjectListExportRequest)
|
|||
succeed = e.exportGraphJson(ctx, req, docs, succeed, wr, queue)
|
||||
} else {
|
||||
tasks := make([]process.Task, 0, len(docs))
|
||||
succeed, tasks = e.exportDocs(ctx, req, docs, wr, queue, succeed, tasks)
|
||||
var succeedAsync int64
|
||||
tasks = e.exportDocs(ctx, req, docs, wr, queue, &succeedAsync, tasks)
|
||||
err := queue.Wait(tasks...)
|
||||
if err != nil {
|
||||
e.cleanupFile(wr)
|
||||
return "", 0, err
|
||||
}
|
||||
succeed += int(succeedAsync)
|
||||
}
|
||||
if err = queue.Finalize(); err != nil {
|
||||
e.cleanupFile(wr)
|
||||
|
@ -156,19 +159,19 @@ func (e *export) Export(ctx context.Context, req pb.RpcObjectListExportRequest)
|
|||
return wr.Path(), succeed, nil
|
||||
}
|
||||
|
||||
func (e *export) exportDocs(ctx context.Context, req pb.RpcObjectListExportRequest, docs map[string]*types.Struct, wr writer, queue process.Queue, succeed int, tasks []process.Task) (int, []process.Task) {
|
||||
func (e *export) exportDocs(ctx context.Context, req pb.RpcObjectListExportRequest, docs map[string]*types.Struct, wr writer, queue process.Queue, succeed *int64, tasks []process.Task) []process.Task {
|
||||
for docId := range docs {
|
||||
did := docId
|
||||
task := func() {
|
||||
if werr := e.writeDoc(ctx, req.Format, wr, docs, queue, did, req.IncludeFiles, req.IsJson); werr != nil {
|
||||
log.With("objectID", did).Warnf("can't export doc: %v", werr)
|
||||
} else {
|
||||
succeed++
|
||||
atomic.AddInt64(succeed, 1)
|
||||
}
|
||||
}
|
||||
tasks = append(tasks, task)
|
||||
}
|
||||
return succeed, tasks
|
||||
return tasks
|
||||
}
|
||||
|
||||
func (e *export) exportGraphJson(ctx context.Context, req pb.RpcObjectListExportRequest, docs map[string]*types.Struct, succeed int, wr writer, queue process.Queue) int {
|
||||
|
|
|
@ -46,7 +46,7 @@ func extractFileFromArchiveToTempDirectory(fileName string, rc io.ReadCloser, te
|
|||
directoryWithFile := filepath.Dir(fileName)
|
||||
if directoryWithFile != "" {
|
||||
directoryWithFile = filepath.Join(tempDir, directoryWithFile)
|
||||
if err := os.Mkdir(directoryWithFile, 0777); err != nil && !os.IsExist(err) {
|
||||
if err := os.MkdirAll(directoryWithFile, 0777); err != nil && !os.IsExist(err) {
|
||||
return "", oserror.TransformError(err)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -119,7 +119,7 @@ func (oc *ObjectCreator) Create(dataObject *DataObject, sn *common.Snapshot) (*t
|
|||
}
|
||||
|
||||
st.ModifyLinkedFilesInDetails(func(fileId string) string {
|
||||
newFileId := oc.relationSyncer.Sync(spaceID, fileId, dataObject.createPayloads, origin)
|
||||
newFileId := oc.relationSyncer.Sync(spaceID, fileId, dataObject.newIdsSet, origin)
|
||||
if newFileId != fileId {
|
||||
filesToDelete = append(filesToDelete, fileId)
|
||||
}
|
||||
|
@ -151,13 +151,12 @@ func (oc *ObjectCreator) Create(dataObject *DataObject, sn *common.Snapshot) (*t
|
|||
|
||||
oc.setArchived(snapshot, newID)
|
||||
|
||||
syncErr := oc.syncFilesAndLinks(dataObject.createPayloads, domain.FullID{SpaceID: spaceID, ObjectID: newID}, origin)
|
||||
syncErr := oc.syncFilesAndLinks(dataObject.newIdsSet, domain.FullID{SpaceID: spaceID, ObjectID: newID}, origin)
|
||||
if syncErr != nil {
|
||||
if errors.Is(syncErr, common.ErrFileLoad) {
|
||||
return respDetails, newID, syncErr
|
||||
}
|
||||
}
|
||||
|
||||
return respDetails, newID, nil
|
||||
}
|
||||
|
||||
|
@ -400,7 +399,7 @@ func (oc *ObjectCreator) setArchived(snapshot *model.SmartBlockSnapshotBase, new
|
|||
}
|
||||
}
|
||||
|
||||
func (oc *ObjectCreator) syncFilesAndLinks(snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, id domain.FullID, origin objectorigin.ObjectOrigin) error {
|
||||
func (oc *ObjectCreator) syncFilesAndLinks(newIdsSet map[string]struct{}, id domain.FullID, origin objectorigin.ObjectOrigin) error {
|
||||
tasks := make([]func() error, 0)
|
||||
// todo: rewrite it in order not to create state with URLs inside links
|
||||
err := block.Do(oc.service, id.ObjectID, func(b smartblock.SmartBlock) error {
|
||||
|
@ -410,7 +409,7 @@ func (oc *ObjectCreator) syncFilesAndLinks(snapshotPayloads map[string]treestora
|
|||
if s != nil {
|
||||
// We can't run syncer here because it will cause a deadlock, so we defer this operation
|
||||
tasks = append(tasks, func() error {
|
||||
err := s.Sync(id, snapshotPayloads, bl, origin)
|
||||
err := s.Sync(id, newIdsSet, bl, origin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -17,6 +17,8 @@ type DataObject struct {
|
|||
ctx context.Context
|
||||
origin objectorigin.ObjectOrigin
|
||||
spaceID string
|
||||
|
||||
newIdsSet map[string]struct{}
|
||||
}
|
||||
|
||||
type Result struct {
|
||||
|
@ -32,6 +34,10 @@ func NewDataObject(ctx context.Context,
|
|||
origin objectorigin.ObjectOrigin,
|
||||
spaceID string,
|
||||
) *DataObject {
|
||||
newIdsSet := make(map[string]struct{}, len(oldIDtoNew))
|
||||
for _, newId := range oldIDtoNew {
|
||||
newIdsSet[newId] = struct{}{}
|
||||
}
|
||||
return &DataObject{
|
||||
oldIDtoNew: oldIDtoNew,
|
||||
createPayloads: createPayloads,
|
||||
|
@ -39,6 +45,7 @@ func NewDataObject(ctx context.Context,
|
|||
ctx: ctx,
|
||||
origin: origin,
|
||||
spaceID: spaceID,
|
||||
newIdsSet: newIdsSet,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,8 @@ func (o *fileObject) GetIDAndPayload(ctx context.Context, spaceId string, sn *co
|
|||
encryptionKeys[key.Path] = key.Key
|
||||
}
|
||||
}
|
||||
fileObjectId, err := uploadFile(ctx, o.blockService, spaceId, filePath, origin, encryptionKeys)
|
||||
name := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeyName.String())
|
||||
fileObjectId, err := uploadFile(ctx, o.blockService, spaceId, name, filePath, origin, encryptionKeys)
|
||||
if err != nil {
|
||||
log.Error("handling file object: upload file", zap.Error(err))
|
||||
return id, payload, nil
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block"
|
||||
|
@ -39,7 +40,8 @@ func (f *oldFile) GetIDAndPayload(ctx context.Context, spaceId string, sn *commo
|
|||
|
||||
filePath := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeySource.String())
|
||||
if filePath != "" {
|
||||
fileObjectId, err := uploadFile(ctx, f.blockService, spaceId, filePath, origin, filesKeys)
|
||||
name := pbtypes.GetString(sn.Snapshot.Data.Details, bundle.RelationKeyName.String())
|
||||
fileObjectId, err := uploadFile(ctx, f.blockService, spaceId, name, filePath, origin, filesKeys)
|
||||
if err != nil {
|
||||
log.Error("handling old file object: upload file", zap.Error(err))
|
||||
}
|
||||
|
@ -62,16 +64,20 @@ func (f *oldFile) GetIDAndPayload(ctx context.Context, spaceId string, sn *commo
|
|||
return objectId, treestorage.TreeStorageCreatePayload{}, nil
|
||||
}
|
||||
|
||||
func uploadFile(ctx context.Context, blockService *block.Service, spaceId string, filePath string, origin objectorigin.ObjectOrigin, encryptionKeys map[string]string) (string, error) {
|
||||
func uploadFile(ctx context.Context, blockService *block.Service, spaceId string, name string, filePath string, origin objectorigin.ObjectOrigin, encryptionKeys map[string]string) (string, error) {
|
||||
params := pb.RpcFileUploadRequest{
|
||||
SpaceId: spaceId,
|
||||
LocalPath: filePath,
|
||||
SpaceId: spaceId,
|
||||
Details: &types.Struct{
|
||||
Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyName.String(): pbtypes.String(name),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if strings.HasPrefix(filePath, "http://") || strings.HasPrefix(filePath, "https://") {
|
||||
params = pb.RpcFileUploadRequest{
|
||||
SpaceId: spaceId,
|
||||
Url: filePath,
|
||||
}
|
||||
params.Url = filePath
|
||||
} else {
|
||||
params.LocalPath = filePath
|
||||
}
|
||||
dto := block.FileUploadRequest{
|
||||
RpcFileUploadRequest: params,
|
||||
|
|
|
@ -3,8 +3,6 @@ package syncer
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
|
@ -20,7 +18,7 @@ func NewBookmarkSyncer(service *block.Service) *BookmarkSyncer {
|
|||
return &BookmarkSyncer{service: service}
|
||||
}
|
||||
|
||||
func (bs *BookmarkSyncer) Sync(id domain.FullID, snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, b simple.Block, origin objectorigin.ObjectOrigin) error {
|
||||
func (bs *BookmarkSyncer) Sync(id domain.FullID, newIdsSet map[string]struct{}, b simple.Block, origin objectorigin.ObjectOrigin) error {
|
||||
if b.Model().GetBookmark().TargetObjectId != "" {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -4,8 +4,6 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/basic"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
|
||||
|
@ -42,7 +40,7 @@ func NewFileSyncer(
|
|||
}
|
||||
}
|
||||
|
||||
func (s *FileSyncer) Sync(id domain.FullID, snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, b simple.Block, origin objectorigin.ObjectOrigin) error {
|
||||
func (s *FileSyncer) Sync(id domain.FullID, newIdsSet map[string]struct{}, b simple.Block, origin objectorigin.ObjectOrigin) error {
|
||||
if targetObjectId := b.Model().GetFile().GetTargetObjectId(); targetObjectId != "" {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
"github.com/ipfs/go-cid"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block"
|
||||
|
@ -44,9 +43,9 @@ func NewIconSyncer(service *block.Service, resolver idresolver.Resolver, fileSto
|
|||
}
|
||||
}
|
||||
|
||||
func (s *IconSyncer) Sync(id domain.FullID, snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, b simple.Block, origin objectorigin.ObjectOrigin) error {
|
||||
func (s *IconSyncer) Sync(id domain.FullID, newIdsSet map[string]struct{}, b simple.Block, origin objectorigin.ObjectOrigin) error {
|
||||
iconImage := b.Model().GetText().GetIconImage()
|
||||
newId, err := s.handleIconImage(id.SpaceID, snapshotPayloads, iconImage, origin)
|
||||
newId, err := s.handleIconImage(id.SpaceID, newIdsSet, iconImage, origin)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%w: %w", common.ErrFileLoad, err)
|
||||
}
|
||||
|
@ -71,8 +70,8 @@ func (s *IconSyncer) Sync(id domain.FullID, snapshotPayloads map[string]treestor
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *IconSyncer) handleIconImage(spaceId string, snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, iconImage string, origin objectorigin.ObjectOrigin) (string, error) {
|
||||
if _, ok := snapshotPayloads[iconImage]; ok {
|
||||
func (s *IconSyncer) handleIconImage(spaceId string, newIdsSet map[string]struct{}, iconImage string, origin objectorigin.ObjectOrigin) (string, error) {
|
||||
if _, ok := newIdsSet[iconImage]; ok {
|
||||
return iconImage, nil
|
||||
}
|
||||
_, err := cid.Decode(iconImage)
|
||||
|
|
|
@ -4,7 +4,6 @@ import (
|
|||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
"github.com/ipfs/go-cid"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block"
|
||||
|
@ -32,9 +31,9 @@ func NewFileRelationSyncer(service *block.Service, fileStore filestore.FileStore
|
|||
}
|
||||
}
|
||||
|
||||
func (fs *FileRelationSyncer) Sync(spaceID string, fileId string, snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, origin objectorigin.ObjectOrigin) string {
|
||||
func (fs *FileRelationSyncer) Sync(spaceID string, fileId string, newIdsSet map[string]struct{}, origin objectorigin.ObjectOrigin) string {
|
||||
// If file is created during import, do nothing
|
||||
if _, ok := snapshotPayloads[fileId]; ok {
|
||||
if _, ok := newIdsSet[fileId]; ok {
|
||||
return fileId
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
package syncer
|
||||
|
||||
import (
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
|
||||
)
|
||||
|
||||
type Syncer interface {
|
||||
Sync(id domain.FullID, snapshotPayloads map[string]treestorage.TreeStorageCreatePayload, b simple.Block, origin objectorigin.ObjectOrigin) error
|
||||
Sync(id domain.FullID, newIdsSet map[string]struct{}, b simple.Block, origin objectorigin.ObjectOrigin) error
|
||||
}
|
||||
|
|
|
@ -139,7 +139,7 @@ func (i *Import) Import(ctx context.Context,
|
|||
var rootCollectionId string
|
||||
if c, ok := i.converters[req.Type.String()]; ok {
|
||||
rootCollectionId, returnedErr = i.importFromBuiltinConverter(ctx, req, c, progress, origin)
|
||||
return rootCollectionId, "", returnedErr
|
||||
return rootCollectionId, progress.Id(), returnedErr
|
||||
}
|
||||
if req.Type == model.Import_External {
|
||||
returnedErr = i.importFromExternalSource(ctx, req, progress)
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
package objectcreator
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/gogo/protobuf/types"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/bookmark"
|
||||
simpleBookmark "github.com/anyproto/anytype-heart/core/block/simple/bookmark"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
"github.com/anyproto/anytype-heart/util/pbtypes"
|
||||
"github.com/anyproto/anytype-heart/util/uri"
|
||||
)
|
||||
|
||||
// createBookmark creates a new Bookmark object for provided URL or returns id of existing one
|
||||
func (s *service) createBookmark(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error) {
|
||||
source := pbtypes.GetString(req.Details, bundle.RelationKeySource.String())
|
||||
var res bookmark.ContentFuture
|
||||
if source != "" {
|
||||
u, err := uri.NormalizeURI(source)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("process uri: %w", err)
|
||||
}
|
||||
res = s.bookmark.FetchBookmarkContent(req.SpaceId, u, false)
|
||||
} else {
|
||||
res = func() *simpleBookmark.ObjectContent {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return s.bookmark.CreateBookmarkObject(ctx, spaceId, req.Details, res)
|
||||
}
|
|
@ -6,9 +6,10 @@ import (
|
|||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/bookmark"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/restriction"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/files"
|
||||
"github.com/anyproto/anytype-heart/pb"
|
||||
|
@ -49,10 +50,14 @@ type Service interface {
|
|||
app.Component
|
||||
}
|
||||
|
||||
type bookmarkService interface {
|
||||
CreateObjectAndFetch(ctx context.Context, spaceId string, req *pb.RpcObjectCreateBookmarkRequest) (objectID string, newDetails *types.Struct, err error)
|
||||
}
|
||||
|
||||
type service struct {
|
||||
objectStore objectstore.ObjectStore
|
||||
collectionService CollectionService
|
||||
bookmark bookmark.Service
|
||||
bookmarkService bookmarkService
|
||||
app *app.App
|
||||
spaceService space.Service
|
||||
templateService TemplateService
|
||||
|
@ -65,7 +70,7 @@ func NewCreator() Service {
|
|||
|
||||
func (s *service) Init(a *app.App) (err error) {
|
||||
s.objectStore = a.MustComponent(objectstore.CName).(objectstore.ObjectStore)
|
||||
s.bookmark = a.MustComponent(bookmark.CName).(bookmark.Service)
|
||||
s.bookmarkService = app.MustComponent[bookmarkService](a)
|
||||
s.collectionService = app.MustComponent[CollectionService](a)
|
||||
s.spaceService = app.MustComponent[space.Service](a)
|
||||
s.templateService = app.MustComponent[TemplateService](a)
|
||||
|
@ -106,6 +111,8 @@ func (s *service) CreateObjectUsingObjectUniqueTypeKey(
|
|||
return s.CreateObject(ctx, spaceID, req)
|
||||
}
|
||||
|
||||
// createObjectInSpace is supposed to be called for user-initiated object creation requests
|
||||
// will return Restricted error in case called with types like File or Participant
|
||||
func (s *service) createObjectInSpace(
|
||||
ctx context.Context, space clientspace.Space, req CreateObjectRequest,
|
||||
) (id string, details *types.Struct, err error) {
|
||||
|
@ -115,9 +122,14 @@ func (s *service) createObjectInSpace(
|
|||
}
|
||||
details = internalflag.PutToDetails(details, req.InternalFlags)
|
||||
|
||||
if bundle.HasObjectTypeByKey(req.ObjectTypeKey) {
|
||||
if t := bundle.MustGetType(req.ObjectTypeKey); t.RestrictObjectCreation {
|
||||
return "", nil, errors.Wrap(restriction.ErrRestricted, "creation of this object type is restricted")
|
||||
}
|
||||
}
|
||||
switch req.ObjectTypeKey {
|
||||
case bundle.TypeKeyBookmark:
|
||||
return s.createBookmark(ctx, space.Id(), &pb.RpcObjectCreateBookmarkRequest{
|
||||
return s.bookmarkService.CreateObjectAndFetch(ctx, space.Id(), &pb.RpcObjectCreateBookmarkRequest{
|
||||
Details: details,
|
||||
})
|
||||
case bundle.TypeKeySet:
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"golang.org/x/exp/slices"
|
||||
|
||||
|
@ -26,6 +27,18 @@ type eventKey int
|
|||
|
||||
const eventCreate eventKey = 0
|
||||
|
||||
type CreateOptions struct {
|
||||
payload *treestorage.TreeStorageCreatePayload
|
||||
}
|
||||
|
||||
type CreateOption func(opts *CreateOptions)
|
||||
|
||||
func WithPayload(payload *treestorage.TreeStorageCreatePayload) CreateOption {
|
||||
return func(opts *CreateOptions) {
|
||||
opts.payload = payload
|
||||
}
|
||||
}
|
||||
|
||||
// CreateSmartBlockFromState create new object from the provided `createState` and `details`.
|
||||
// If you pass `details` into the function, it will automatically add missing relationLinks and override the details from the `createState`
|
||||
// It will return error if some of the relation keys in `details` not installed in the workspace.
|
||||
|
@ -41,6 +54,12 @@ func (s *service) CreateSmartBlockFromState(
|
|||
|
||||
func (s *service) CreateSmartBlockFromStateInSpace(
|
||||
ctx context.Context, spc clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State,
|
||||
) (id string, newDetails *types.Struct, err error) {
|
||||
return s.CreateSmartBlockFromStateInSpaceWithOptions(ctx, spc, objectTypeKeys, createState)
|
||||
}
|
||||
|
||||
func (s *service) CreateSmartBlockFromStateInSpaceWithOptions(
|
||||
ctx context.Context, spc clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State, opts ...CreateOption,
|
||||
) (id string, newDetails *types.Struct, err error) {
|
||||
if createState == nil {
|
||||
createState = state.NewDoc("", nil).(*state.State)
|
||||
|
@ -74,7 +93,7 @@ func (s *service) CreateSmartBlockFromStateInSpace(
|
|||
}
|
||||
}
|
||||
|
||||
sb, err := createSmartBlock(ctx, spc, initFunc, createState, sbType)
|
||||
sb, err := createSmartBlock(ctx, spc, initFunc, createState, sbType, opts...)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
@ -120,7 +139,7 @@ func objectTypeKeysToSmartBlockType(typeKeys []domain.TypeKey) coresb.SmartBlock
|
|||
}
|
||||
|
||||
func createSmartBlock(
|
||||
ctx context.Context, spc clientspace.Space, initFunc objectcache.InitFunc, st *state.State, sbType coresb.SmartBlockType,
|
||||
ctx context.Context, spc clientspace.Space, initFunc objectcache.InitFunc, st *state.State, sbType coresb.SmartBlockType, opts ...CreateOption,
|
||||
) (smartblock.SmartBlock, error) {
|
||||
if uKey := st.UniqueKeyInternal(); uKey != "" {
|
||||
uk, err := domain.NewUniqueKey(sbType, uKey)
|
||||
|
@ -139,6 +158,15 @@ func createSmartBlock(
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
createOpts := &CreateOptions{}
|
||||
for _, opt := range opts {
|
||||
opt(createOpts)
|
||||
}
|
||||
if createOpts.payload != nil {
|
||||
return spc.CreateTreeObjectWithPayload(ctx, *createOpts.payload, initFunc)
|
||||
}
|
||||
|
||||
return spc.CreateTreeObject(ctx, objectcache.TreeCreationParams{
|
||||
Time: time.Now(),
|
||||
SmartblockType: sbType,
|
||||
|
|
|
@ -61,7 +61,7 @@ func (s *service) listAllTypesAndRelations(spaceId string) (map[string]*types.St
|
|||
func reviseSystemObject(space clientspace.Space, localObject *types.Struct, marketObjects map[string]*types.Struct) {
|
||||
source := pbtypes.GetString(localObject, bundle.RelationKeySourceObject.String())
|
||||
marketObject, found := marketObjects[source]
|
||||
if !found || !isSystemObject(localObject) || pbtypes.GetInt64(marketObject, revisionKey) < pbtypes.GetInt64(localObject, revisionKey) {
|
||||
if !found || !isSystemObject(localObject) || pbtypes.GetInt64(marketObject, revisionKey) <= pbtypes.GetInt64(localObject, revisionKey) {
|
||||
return
|
||||
}
|
||||
details := buildDiffDetails(marketObject, localObject)
|
||||
|
@ -98,10 +98,17 @@ func buildDiffDetails(origin, current *types.Struct) (details []*pb.RpcObjectSet
|
|||
bundle.RelationKeyName.String(), bundle.RelationKeyDescription.String(),
|
||||
bundle.RelationKeyIsReadonly.String(), bundle.RelationKeyIsHidden.String(),
|
||||
bundle.RelationKeyRevision.String(), bundle.RelationKeyRelationReadonlyValue.String(),
|
||||
bundle.RelationKeyRelationMaxCount.String(),
|
||||
bundle.RelationKeyRelationMaxCount.String(), bundle.RelationKeyTargetObjectType.String(),
|
||||
})
|
||||
|
||||
for key, value := range diff.Fields {
|
||||
if key == bundle.RelationKeyTargetObjectType.String() {
|
||||
// special case. We don't want to remove the types that was set by user, so only add ones that we have
|
||||
currentList := pbtypes.GetStringList(current, bundle.RelationKeyTargetObjectType.String())
|
||||
missedInCurrent, _ := lo.Difference(pbtypes.GetStringList(origin, bundle.RelationKeyTargetObjectType.String()), currentList)
|
||||
currentList = append(currentList, missedInCurrent...)
|
||||
value = pbtypes.StringList(currentList)
|
||||
}
|
||||
details = append(details, &pb.RpcObjectSetDetailsDetail{Key: key, Value: value})
|
||||
}
|
||||
return
|
||||
|
|
|
@ -209,20 +209,25 @@ func (s *service) getObjectRestrictions(rh RestrictionHolder) (r ObjectRestricti
|
|||
}
|
||||
|
||||
func GetRestrictionsForUniqueKey(uk domain.UniqueKey) (r ObjectRestrictions) {
|
||||
r = objectRestrictionsBySBType[uk.SmartblockType()]
|
||||
switch uk.SmartblockType() {
|
||||
case smartblock.SmartBlockTypeObjectType:
|
||||
key := uk.InternalKey()
|
||||
if lo.Contains(bundle.SystemTypes, domain.TypeKey(key)) {
|
||||
return sysTypesRestrictions
|
||||
r = sysTypesRestrictions
|
||||
}
|
||||
if t, _ := bundle.GetType(domain.TypeKey(key)); t != nil && t.RestrictObjectCreation {
|
||||
r = append(r, model.Restrictions_CreateObjectOfThisType)
|
||||
}
|
||||
return r
|
||||
case smartblock.SmartBlockTypeRelation:
|
||||
key := uk.InternalKey()
|
||||
if lo.Contains(bundle.SystemRelations, domain.RelationKey(key)) {
|
||||
return sysRelationsRestrictions
|
||||
r = sysRelationsRestrictions
|
||||
}
|
||||
}
|
||||
// we assume that all sb types exist in objectRestrictionsBySBType
|
||||
return objectRestrictionsBySBType[uk.SmartblockType()]
|
||||
return r
|
||||
}
|
||||
|
||||
func GetDataviewRestrictionsForUniqueKey(uk domain.UniqueKey) DataviewRestrictions {
|
||||
|
|
|
@ -47,10 +47,17 @@ func TestService_ObjectRestrictionsById(t *testing.T) {
|
|||
), ErrRestricted)
|
||||
})
|
||||
|
||||
t.Run("system type restricted creation", func(t *testing.T) {
|
||||
assert.ErrorIs(t, rest.GetRestrictions(givenObjectType(bundle.TypeKeyParticipant)).Object.Check(
|
||||
model.Restrictions_CreateObjectOfThisType,
|
||||
), ErrRestricted)
|
||||
})
|
||||
|
||||
t.Run("ordinary type", func(t *testing.T) {
|
||||
assert.NoError(t, rest.GetRestrictions(givenObjectType(bundle.TypeKeyDailyPlan)).Object.Check(
|
||||
model.Restrictions_Details,
|
||||
model.Restrictions_Delete,
|
||||
model.Restrictions_CreateObjectOfThisType,
|
||||
))
|
||||
})
|
||||
|
||||
|
|
|
@ -798,7 +798,7 @@ func (s *Service) CreateObjectFromUrl(ctx context.Context, req *pb.RpcObjectCrea
|
|||
return "", nil, err
|
||||
}
|
||||
|
||||
res := s.bookmark.FetchBookmarkContent(req.SpaceId, url, true)
|
||||
res := s.bookmark.FetchBookmarkContent(req.SpaceId, url, req.AddPageContent)
|
||||
content := res()
|
||||
shouldUpdateDetails := s.updateBookmarkContentWithUserDetails(req.Details, objectDetails, content)
|
||||
if shouldUpdateDetails {
|
||||
|
|
|
@ -218,3 +218,7 @@ func (b *Bookmark) FillSmartIds(ids []string) []string {
|
|||
func (b *Bookmark) HasSmartIds() bool {
|
||||
return b.content.TargetObjectId != ""
|
||||
}
|
||||
|
||||
func (l *Bookmark) IsEmpty() bool {
|
||||
return l.content.TargetObjectId == ""
|
||||
}
|
||||
|
|
|
@ -516,3 +516,7 @@ func (s *Dataview) UpdateRelationOld(relationKey string, rel model.Relation) err
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Dataview) IsEmpty() bool {
|
||||
return d.content.TargetObjectId == "" && len(d.content.Views) == 0
|
||||
}
|
||||
|
|
|
@ -96,3 +96,7 @@ func (l *Latex) ApplyEvent(e *pb.EventBlockSetLatex) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l *Latex) IsEmpty() bool {
|
||||
return l.content.Text == ""
|
||||
}
|
||||
|
|
|
@ -241,6 +241,10 @@ func (f *File) HasSmartIds() bool {
|
|||
return f.content.TargetObjectId != ""
|
||||
}
|
||||
|
||||
func (f *File) IsEmpty() bool {
|
||||
return f.content.TargetObjectId == "" && f.content.Hash == ""
|
||||
}
|
||||
|
||||
func DetectTypeByMIME(mime string) model.BlockContentFileType {
|
||||
if mill.IsImage(mime) {
|
||||
return model.BlockContentFile_Image
|
||||
|
|
|
@ -73,14 +73,3 @@ func TestFile_Diff(t *testing.T) {
|
|||
}), diff)
|
||||
})
|
||||
}
|
||||
|
||||
func TestFile_Validate(t *testing.T) {
|
||||
t.Run("not validated", func(t *testing.T) {
|
||||
b := NewFile(&model.Block{
|
||||
Restrictions: &model.BlockRestrictions{},
|
||||
Content: &model.BlockContentOfFile{File: &model.BlockContentFile{State: model.BlockContentFile_Done, Size_: 0}},
|
||||
}).(*File)
|
||||
err := b.Validate()
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -188,3 +188,7 @@ func (l *Link) ToText(targetDetails *types.Struct) simple.Block {
|
|||
}
|
||||
return simple.New(m)
|
||||
}
|
||||
|
||||
func (l *Link) IsEmpty() bool {
|
||||
return l.content.TargetBlockId == ""
|
||||
}
|
||||
|
|
|
@ -136,12 +136,10 @@ func (m *subObjectsAndProfileLinksMigration) Migrate(s *state.State) {
|
|||
|
||||
func (m *subObjectsAndProfileLinksMigration) migrateId(oldId string) (newId string) {
|
||||
if m.profileID != "" && m.identityObjectID != "" {
|
||||
// we substitute all links to profile object with identity object EXCEPT the case with
|
||||
// widget to identity in Personal space, we must substitute identity with profile to show links correctly
|
||||
if oldId == m.profileID && (m.space.Id() != m.personalSpaceId || m.sbType != smartblock.SmartBlockTypeWidget) {
|
||||
// we substitute all links to profile object with space member object
|
||||
if oldId == m.profileID ||
|
||||
strings.HasPrefix(oldId, "_id_") { // we don't need to check the exact accountID here, because we only have links to our own identity
|
||||
return m.identityObjectID
|
||||
} else if oldId == m.identityObjectID && m.space.Id() == m.personalSpaceId && m.sbType == smartblock.SmartBlockTypeWidget {
|
||||
return m.profileID
|
||||
}
|
||||
}
|
||||
uniqueKey, valid := subObjectIdToUniqueKey(oldId)
|
||||
|
|
|
@ -152,7 +152,7 @@ func (s *service) createCustomTemplateState(templateId string) (targetState *sta
|
|||
return
|
||||
}
|
||||
|
||||
targetState.RemoveDetail(bundle.RelationKeyTargetObjectType.String(), bundle.RelationKeyTemplateIsBundled.String())
|
||||
targetState.RemoveDetail(bundle.RelationKeyTargetObjectType.String(), bundle.RelationKeyTemplateIsBundled.String(), bundle.RelationKeyOrigin.String())
|
||||
targetState.SetDetailAndBundledRelation(bundle.RelationKeySourceObject, pbtypes.String(sb.Id()))
|
||||
targetState.SetLocalDetails(nil)
|
||||
return
|
||||
|
|
|
@ -44,7 +44,7 @@ func (p *pbc) Convert(sbType model.SmartBlockType) []byte {
|
|||
Snapshot: snapshot,
|
||||
}
|
||||
if p.isJSON {
|
||||
m := jsonpb.Marshaler{Indent: " "}
|
||||
m := jsonpb.Marshaler{Indent: " ", EmitDefaults: true}
|
||||
result, err := m.MarshalToString(mo)
|
||||
if err != nil {
|
||||
log.Errorf("failed to convert object to json: %s", err)
|
||||
|
|
|
@ -101,6 +101,21 @@ func (mw *Middleware) DebugSpaceSummary(cctx context.Context, req *pb.RpcDebugSp
|
|||
return response(nil, spaceSummary)
|
||||
}
|
||||
|
||||
func (mw *Middleware) DebugStat(ctx context.Context, request *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse {
|
||||
debugService := mw.applicationService.GetApp().MustComponent(debug.CName).(debug.Debug)
|
||||
debugStat, err := debugService.DebugStat()
|
||||
code := mapErrorCode(err,
|
||||
errToCode(err, pb.RpcDebugStatResponseError_UNKNOWN_ERROR),
|
||||
)
|
||||
return &pb.RpcDebugStatResponse{
|
||||
JsonStat: debugStat,
|
||||
Error: &pb.RpcDebugStatResponseError{
|
||||
Code: code,
|
||||
Description: getErrorDescription(err),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (mw *Middleware) DebugStackGoroutines(_ context.Context, req *pb.RpcDebugStackGoroutinesRequest) *pb.RpcDebugStackGoroutinesResponse {
|
||||
response := func(err error) (res *pb.RpcDebugStackGoroutinesResponse) {
|
||||
res = &pb.RpcDebugStackGoroutinesResponse{
|
||||
|
|
|
@ -3,6 +3,7 @@ package debug
|
|||
import (
|
||||
"archive/zip"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
|
@ -13,6 +14,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/anyproto/any-sync/app/debugstat"
|
||||
"github.com/anyproto/any-sync/commonspace/objecttreebuilder"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/gogo/protobuf/jsonpb"
|
||||
|
@ -36,6 +38,7 @@ func New() Debug {
|
|||
|
||||
type Debug interface {
|
||||
app.Component
|
||||
DebugStat() (string, error)
|
||||
DumpTree(ctx context.Context, objectID string, path string, anonymize bool, withSvg bool) (filename string, err error)
|
||||
DumpLocalstore(ctx context.Context, spaceID string, objectIds []string, path string) (filename string, err error)
|
||||
SpaceSummary(ctx context.Context, spaceID string) (summary SpaceSummary, err error)
|
||||
|
@ -47,6 +50,7 @@ type debug struct {
|
|||
store objectstore.ObjectStore
|
||||
spaceService space.Service
|
||||
resolver idresolver.Resolver
|
||||
statService debugstat.StatService
|
||||
|
||||
server *http.Server
|
||||
}
|
||||
|
@ -60,7 +64,10 @@ func (d *debug) Init(a *app.App) (err error) {
|
|||
d.block = a.MustComponent(block.CName).(*block.Service)
|
||||
d.spaceService = app.MustComponent[space.Service](a)
|
||||
d.resolver = app.MustComponent[idresolver.Resolver](a)
|
||||
|
||||
d.statService, _ = a.Component(debugstat.CName).(debugstat.StatService)
|
||||
if d.statService == nil {
|
||||
d.statService = debugstat.NewNoOp()
|
||||
}
|
||||
d.initHandlers(a)
|
||||
return nil
|
||||
}
|
||||
|
@ -139,6 +146,15 @@ func (d *debug) SpaceSummary(ctx context.Context, spaceID string) (summary Space
|
|||
return
|
||||
}
|
||||
|
||||
func (d *debug) DebugStat() (string, error) {
|
||||
stats := d.statService.GetStat()
|
||||
marshaled, err := json.Marshal(stats)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(marshaled), nil
|
||||
}
|
||||
|
||||
func (d *debug) TreeHeads(ctx context.Context, id string) (info TreeInfo, err error) {
|
||||
spcID, err := d.resolver.ResolveSpaceID(id)
|
||||
if err != nil {
|
||||
|
|
|
@ -21,6 +21,8 @@ var smartBlockTypeToKey = map[smartblock.SmartBlockType]string{
|
|||
smartblock.SmartBlockTypeWidget: "widget",
|
||||
smartblock.SmartBlockTypeSpaceView: "spaceview",
|
||||
smartblock.SmartBlockTypeFileObject: "file", // For migration purposes only
|
||||
smartblock.SmartBlockTypePage: "page", // For migration purposes only, used for old profile data migration
|
||||
|
||||
}
|
||||
|
||||
// UniqueKey is unique key composed of two parts: smartblock type and internal key.
|
||||
|
|
|
@ -178,35 +178,15 @@ func (ind *indexer) indexNext(ctx context.Context) error {
|
|||
func (ind *indexer) indexFile(ctx context.Context, id domain.FullID, fileId domain.FullFileId) error {
|
||||
defer ind.markIndexingDone(id)
|
||||
|
||||
details, typeKey, err := ind.buildDetails(ctx, fileId)
|
||||
if errors.Is(err, domain.ErrFileNotFound) {
|
||||
log.Errorf("build details: %v", err)
|
||||
return ind.markFileAsNotFound(id)
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("build details: %w", err)
|
||||
}
|
||||
space, err := ind.spaceService.Get(ctx, id.SpaceID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("get space: %w", err)
|
||||
}
|
||||
err = space.Do(id.ObjectID, func(sb smartblock.SmartBlock) error {
|
||||
st := sb.NewState()
|
||||
st.SetObjectTypeKey(typeKey)
|
||||
prevDetails := st.CombinedDetails()
|
||||
|
||||
keys := make([]domain.RelationKey, 0, len(details.Fields))
|
||||
for k := range details.Fields {
|
||||
keys = append(keys, domain.RelationKey(k))
|
||||
}
|
||||
st.AddBundledRelations(keys...)
|
||||
|
||||
details = pbtypes.StructMerge(prevDetails, details, true)
|
||||
st.SetDetails(details)
|
||||
|
||||
err = ind.addBlocks(st, details, id.ObjectID)
|
||||
err := ind.injectMetadataToState(ctx, st, fileId, id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("add blocks: %w", err)
|
||||
return fmt.Errorf("inject metadata to state: %w", err)
|
||||
}
|
||||
return sb.Apply(st)
|
||||
})
|
||||
|
@ -216,16 +196,38 @@ func (ind *indexer) indexFile(ctx context.Context, id domain.FullID, fileId doma
|
|||
return nil
|
||||
}
|
||||
|
||||
func (ind *indexer) markFileAsNotFound(id domain.FullID) error {
|
||||
space, err := ind.spaceService.Get(ind.indexCtx, id.SpaceID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("get space: %w", err)
|
||||
func (ind *indexer) injectMetadataToState(ctx context.Context, st *state.State, fileId domain.FullFileId, id domain.FullID) error {
|
||||
details, typeKey, err := ind.buildDetails(ctx, fileId)
|
||||
if errors.Is(err, domain.ErrFileNotFound) {
|
||||
log.Errorf("build details: %v", err)
|
||||
ind.markFileAsNotFound(st)
|
||||
return nil
|
||||
}
|
||||
return space.Do(id.ObjectID, func(sb smartblock.SmartBlock) error {
|
||||
st := sb.NewState()
|
||||
st.SetDetailAndBundledRelation(bundle.RelationKeyFileIndexingStatus, pbtypes.Int64(int64(model.FileIndexingStatus_NotFound)))
|
||||
return sb.Apply(st)
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("build details: %w", err)
|
||||
}
|
||||
|
||||
st.SetObjectTypeKey(typeKey)
|
||||
prevDetails := st.CombinedDetails()
|
||||
|
||||
keys := make([]domain.RelationKey, 0, len(details.Fields))
|
||||
for k := range details.Fields {
|
||||
keys = append(keys, domain.RelationKey(k))
|
||||
}
|
||||
st.AddBundledRelations(keys...)
|
||||
|
||||
details = pbtypes.StructMerge(prevDetails, details, true)
|
||||
st.SetDetails(details)
|
||||
|
||||
err = ind.addBlocks(st, details, id.ObjectID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("add blocks: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ind *indexer) markFileAsNotFound(st *state.State) {
|
||||
st.SetDetailAndBundledRelation(bundle.RelationKeyFileIndexingStatus, pbtypes.Int64(int64(model.FileIndexingStatus_NotFound)))
|
||||
}
|
||||
|
||||
func (ind *indexer) buildDetails(ctx context.Context, id domain.FullFileId) (details *types.Struct, typeKey domain.TypeKey, err error) {
|
||||
|
|
|
@ -608,6 +608,39 @@ func (_c *MockService_Init_Call) RunAndReturn(run func(*app.App) error) *MockSer
|
|||
return _c
|
||||
}
|
||||
|
||||
// InitEmptyFileState provides a mock function with given fields: st
|
||||
func (_m *MockService) InitEmptyFileState(st *state.State) {
|
||||
_m.Called(st)
|
||||
}
|
||||
|
||||
// MockService_InitEmptyFileState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'InitEmptyFileState'
|
||||
type MockService_InitEmptyFileState_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// InitEmptyFileState is a helper method to define mock.On call
|
||||
// - st *state.State
|
||||
func (_e *MockService_Expecter) InitEmptyFileState(st interface{}) *MockService_InitEmptyFileState_Call {
|
||||
return &MockService_InitEmptyFileState_Call{Call: _e.mock.On("InitEmptyFileState", st)}
|
||||
}
|
||||
|
||||
func (_c *MockService_InitEmptyFileState_Call) Run(run func(st *state.State)) *MockService_InitEmptyFileState_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(*state.State))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_InitEmptyFileState_Call) Return() *MockService_InitEmptyFileState_Call {
|
||||
_c.Call.Return()
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockService_InitEmptyFileState_Call) RunAndReturn(run func(*state.State)) *MockService_InitEmptyFileState_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// MigrateBlocks provides a mock function with given fields: st, spc, keys
|
||||
func (_m *MockService) MigrateBlocks(st *state.State, spc source.Space, keys []*pb.ChangeFileKeys) {
|
||||
_m.Called(st, spc, keys)
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/anyproto/any-sync/commonspace/object/tree/treestorage"
|
||||
|
@ -12,6 +13,9 @@ import (
|
|||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/template"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/objectcreator"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/payloadcreator"
|
||||
"github.com/anyproto/anytype-heart/core/block/simple"
|
||||
"github.com/anyproto/anytype-heart/core/block/source"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
|
@ -41,6 +45,7 @@ const CName = "fileobject"
|
|||
type Service interface {
|
||||
app.ComponentRunnable
|
||||
|
||||
InitEmptyFileState(st *state.State)
|
||||
DeleteFileData(objectId string) error
|
||||
Create(ctx context.Context, spaceId string, req CreateRequest) (id string, object *types.Struct, err error)
|
||||
CreateFromImport(fileId domain.FullFileId, origin objectorigin.ObjectOrigin) (string, error)
|
||||
|
@ -55,7 +60,7 @@ type Service interface {
|
|||
}
|
||||
|
||||
type objectCreatorService interface {
|
||||
CreateSmartBlockFromStateInSpace(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State) (id string, newDetails *types.Struct, err error)
|
||||
CreateSmartBlockFromStateInSpaceWithOptions(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State, opts ...objectcreator.CreateOption) (id string, newDetails *types.Struct, err error)
|
||||
}
|
||||
|
||||
type service struct {
|
||||
|
@ -98,10 +103,21 @@ func (s *service) Close(ctx context.Context) error {
|
|||
}
|
||||
|
||||
type CreateRequest struct {
|
||||
FileId domain.FileId
|
||||
EncryptionKeys map[string]string
|
||||
ObjectOrigin objectorigin.ObjectOrigin
|
||||
AdditionalDetails *types.Struct
|
||||
FileId domain.FileId
|
||||
EncryptionKeys map[string]string
|
||||
ObjectOrigin objectorigin.ObjectOrigin
|
||||
AdditionalDetails *types.Struct
|
||||
AsyncMetadataIndexing bool
|
||||
}
|
||||
|
||||
func (s *service) InitEmptyFileState(st *state.State) {
|
||||
template.InitTemplate(st,
|
||||
template.WithEmpty,
|
||||
template.WithTitle,
|
||||
template.WithDefaultFeaturedRelations,
|
||||
template.WithFeaturedRelations,
|
||||
template.WithAllBlocksEditsRestricted,
|
||||
)
|
||||
}
|
||||
|
||||
func (s *service) Create(ctx context.Context, spaceId string, req CreateRequest) (id string, object *types.Struct, err error) {
|
||||
|
@ -128,32 +144,49 @@ func (s *service) createInSpace(ctx context.Context, space clientspace.Space, re
|
|||
}
|
||||
|
||||
details := s.makeInitialDetails(req.FileId, req.ObjectOrigin)
|
||||
if req.AdditionalDetails != nil {
|
||||
for k, v := range req.AdditionalDetails.GetFields() {
|
||||
if _, ok := details.Fields[k]; !ok {
|
||||
details.Fields[k] = pbtypes.CopyVal(v)
|
||||
}
|
||||
}
|
||||
|
||||
payload, err := space.CreateTreePayload(ctx, payloadcreator.PayloadCreationParams{
|
||||
Time: time.Now(),
|
||||
SmartblockType: coresb.SmartBlockTypeFileObject,
|
||||
})
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("create tree payload: %w", err)
|
||||
}
|
||||
|
||||
createState := state.NewDoc("", nil).(*state.State)
|
||||
createState := state.NewDoc(payload.RootRawChange.Id, nil).(*state.State)
|
||||
createState.SetDetails(details)
|
||||
createState.SetFileInfo(state.FileInfo{
|
||||
FileId: req.FileId,
|
||||
EncryptionKeys: req.EncryptionKeys,
|
||||
})
|
||||
if !req.AsyncMetadataIndexing {
|
||||
s.InitEmptyFileState(createState)
|
||||
fullFileId := domain.FullFileId{SpaceId: space.Id(), FileId: req.FileId}
|
||||
fullObjectId := domain.FullID{SpaceID: space.Id(), ObjectID: payload.RootRawChange.Id}
|
||||
err := s.indexer.injectMetadataToState(ctx, createState, fullFileId, fullObjectId)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("inject metadata to state: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if req.AdditionalDetails != nil {
|
||||
for k, v := range req.AdditionalDetails.GetFields() {
|
||||
createState.SetDetailAndBundledRelation(domain.RelationKey(k), v)
|
||||
}
|
||||
}
|
||||
|
||||
// Type will be changed after indexing, just use general type File for now
|
||||
id, object, err = s.objectCreator.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyFile}, createState)
|
||||
id, object, err = s.objectCreator.CreateSmartBlockFromStateInSpaceWithOptions(ctx, space, []domain.TypeKey{bundle.TypeKeyFile}, createState, objectcreator.WithPayload(&payload))
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("create object: %w", err)
|
||||
}
|
||||
|
||||
err = s.indexer.addToQueue(ctx, domain.FullID{SpaceID: space.Id(), ObjectID: id}, domain.FullFileId{SpaceId: space.Id(), FileId: req.FileId})
|
||||
if err != nil {
|
||||
// Will be retried in background, so don't return error
|
||||
log.Errorf("add to index queue: %v", err)
|
||||
err = nil
|
||||
if req.AsyncMetadataIndexing {
|
||||
err = s.indexer.addToQueue(ctx, domain.FullID{SpaceID: space.Id(), ObjectID: id}, domain.FullFileId{SpaceId: space.Id(), FileId: req.FileId})
|
||||
if err != nil {
|
||||
// Will be retried in background, so don't return error
|
||||
log.Errorf("add to index queue: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
return id, object, nil
|
||||
|
@ -174,7 +207,7 @@ func (s *service) migrateDeriveObject(ctx context.Context, space clientspace.Spa
|
|||
})
|
||||
|
||||
// Type will be changed after indexing, just use general type File for now
|
||||
id, _, err := s.objectCreator.CreateSmartBlockFromStateInSpace(ctx, space, []domain.TypeKey{bundle.TypeKeyFile}, createState)
|
||||
id, _, err := s.objectCreator.CreateSmartBlockFromStateInSpaceWithOptions(ctx, space, []domain.TypeKey{bundle.TypeKeyFile}, createState)
|
||||
if errors.Is(err, treestorage.ErrTreeExists) {
|
||||
return nil
|
||||
}
|
||||
|
@ -233,9 +266,10 @@ func (s *service) CreateFromImport(fileId domain.FullFileId, origin objectorigin
|
|||
return "", fmt.Errorf("get file keys: %w", err)
|
||||
}
|
||||
fileObjectId, _, err = s.Create(context.Background(), fileId.SpaceId, CreateRequest{
|
||||
FileId: fileId.FileId,
|
||||
EncryptionKeys: keys,
|
||||
ObjectOrigin: origin,
|
||||
FileId: fileId.FileId,
|
||||
EncryptionKeys: keys,
|
||||
ObjectOrigin: origin,
|
||||
AsyncMetadataIndexing: true,
|
||||
})
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("create object: %w", err)
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/state"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/objectcreator"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/core/domain/objectorigin"
|
||||
"github.com/anyproto/anytype-heart/core/event/mock_event"
|
||||
|
@ -109,7 +110,7 @@ func (c *objectCreatorStub) Name() string {
|
|||
return "objectCreatorStub"
|
||||
}
|
||||
|
||||
func (c *objectCreatorStub) CreateSmartBlockFromStateInSpace(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State) (id string, newDetails *types.Struct, err error) {
|
||||
func (c *objectCreatorStub) CreateSmartBlockFromStateInSpaceWithOptions(ctx context.Context, space clientspace.Space, objectTypeKeys []domain.TypeKey, createState *state.State, opts ...objectcreator.CreateOption) (id string, newDetails *types.Struct, err error) {
|
||||
c.creationState = createState
|
||||
return c.objectId, c.details, nil
|
||||
}
|
||||
|
|
|
@ -127,9 +127,8 @@ func (f *fileSync) Run(ctx context.Context) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
go f.runNodeUsageUpdater()
|
||||
|
||||
f.loopCtx, f.loopCancel = context.WithCancel(context.Background())
|
||||
go f.runNodeUsageUpdater()
|
||||
go f.addLoop()
|
||||
go f.removeLoop()
|
||||
return
|
||||
|
|
|
@ -251,6 +251,9 @@ func (s *service) cacheProfileDetails(details *types.Struct) {
|
|||
Description: pbtypes.GetString(details, bundle.RelationKeyDescription.String()),
|
||||
IconCid: pbtypes.GetString(details, bundle.RelationKeyIconImage.String()),
|
||||
}
|
||||
|
||||
s.lock.RLock()
|
||||
defer s.lock.RUnlock()
|
||||
observers, ok := s.identityObservers[s.myIdentity]
|
||||
if ok {
|
||||
for _, obs := range observers {
|
||||
|
|
|
@ -29,7 +29,7 @@ type fixture struct {
|
|||
coordinatorClient *inMemoryIdentityRepo
|
||||
}
|
||||
|
||||
const testObserverPeriod = 5 * time.Millisecond
|
||||
const testObserverPeriod = 1 * time.Millisecond
|
||||
|
||||
func newFixture(t *testing.T) *fixture {
|
||||
ctx := context.Background()
|
||||
|
@ -188,7 +188,7 @@ func TestObservers(t *testing.T) {
|
|||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
time.Sleep(testObserverPeriod)
|
||||
time.Sleep(testObserverPeriod * 2)
|
||||
|
||||
err = fx.identityRepoClient.IdentityRepoPut(context.Background(), identity, []*identityrepoproto.Data{
|
||||
{
|
||||
|
@ -206,7 +206,7 @@ func TestObservers(t *testing.T) {
|
|||
}
|
||||
wantData2 := marshalProfile(t, wantProfile2, profileSymKey)
|
||||
|
||||
time.Sleep(testObserverPeriod)
|
||||
time.Sleep(testObserverPeriod * 2)
|
||||
err = fx.identityRepoClient.IdentityRepoPut(context.Background(), identity, []*identityrepoproto.Data{
|
||||
{
|
||||
Kind: identityRepoDataKind,
|
||||
|
|
|
@ -26,7 +26,7 @@ import (
|
|||
|
||||
const (
|
||||
// ForceObjectsReindexCounter reindex thread-based objects
|
||||
ForceObjectsReindexCounter int32 = 15
|
||||
ForceObjectsReindexCounter int32 = 16
|
||||
|
||||
// ForceFilesReindexCounter reindex ipfs-file-based objects
|
||||
ForceFilesReindexCounter int32 = 11 //
|
||||
|
@ -36,7 +36,7 @@ const (
|
|||
|
||||
// ForceIdxRebuildCounter erases localstore indexes and reindex all type of objects
|
||||
// (no need to increase ForceObjectsReindexCounter & ForceFilesReindexCounter)
|
||||
ForceIdxRebuildCounter int32 = 63
|
||||
ForceIdxRebuildCounter int32 = 62
|
||||
|
||||
// ForceFulltextIndexCounter performs fulltext indexing for all type of objects (useful when we change fulltext config)
|
||||
ForceFulltextIndexCounter int32 = 6
|
||||
|
@ -431,6 +431,7 @@ func (i *indexer) saveLatestChecksums(spaceID string) error {
|
|||
FilesForceReindexCounter: ForceFilesReindexCounter,
|
||||
IdxRebuildCounter: ForceIdxRebuildCounter,
|
||||
FulltextRebuild: ForceFulltextIndexCounter,
|
||||
FulltextErase: ForceFulltextEraseCounter,
|
||||
BundledObjects: ForceBundledObjectsReindexCounter,
|
||||
FilestoreKeysForceReindexCounter: ForceFilestoreKeysReindexCounter,
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ func (s *service) RemoveInvite(ctx context.Context, id cid.Cid) error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("offload file: %w", err)
|
||||
}
|
||||
return s.fileSyncService.RemoveSynchronously(s.techSpaceId, domain.FileId(id.String()))
|
||||
return s.fileSyncService.RemoveFile(s.techSpaceId, domain.FileId(id.String()))
|
||||
}
|
||||
|
||||
func (s *service) GetInvite(ctx context.Context, id cid.Cid, key crypto.SymKey) (*model.Invite, error) {
|
||||
|
|
|
@ -82,10 +82,17 @@ func (mw *Middleware) SpaceInviteGetCurrent(cctx context.Context, req *pb.RpcSpa
|
|||
}
|
||||
|
||||
func (mw *Middleware) SpaceInviteRevoke(cctx context.Context, req *pb.RpcSpaceInviteRevokeRequest) *pb.RpcSpaceInviteRevokeResponse {
|
||||
aclService := mw.applicationService.GetApp().MustComponent(acl.CName).(acl.AclService)
|
||||
err := aclService.RevokeInvite(cctx, req.SpaceId)
|
||||
code := mapErrorCode(err,
|
||||
errToCode(space.ErrSpaceDeleted, pb.RpcSpaceInviteRevokeResponseError_SPACE_IS_DELETED),
|
||||
errToCode(space.ErrSpaceNotExists, pb.RpcSpaceInviteRevokeResponseError_NO_SUCH_SPACE),
|
||||
errToCode(acl.ErrAclRequestFailed, pb.RpcSpaceInviteRevokeResponseError_REQUEST_FAILED),
|
||||
)
|
||||
return &pb.RpcSpaceInviteRevokeResponse{
|
||||
Error: &pb.RpcSpaceInviteRevokeResponseError{
|
||||
Code: 1,
|
||||
Description: getErrorDescription(fmt.Errorf("not implemented")),
|
||||
Code: code,
|
||||
Description: getErrorDescription(err),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -140,11 +147,34 @@ func (mw *Middleware) SpaceJoin(cctx context.Context, req *pb.RpcSpaceJoinReques
|
|||
}
|
||||
}
|
||||
|
||||
func (mw *Middleware) SpaceStopSharing(cctx context.Context, req *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse {
|
||||
aclService := mw.applicationService.GetApp().MustComponent(acl.CName).(acl.AclService)
|
||||
err := aclService.StopSharing(cctx, req.SpaceId)
|
||||
code := mapErrorCode(err,
|
||||
errToCode(space.ErrSpaceDeleted, pb.RpcSpaceStopSharingResponseError_SPACE_IS_DELETED),
|
||||
errToCode(space.ErrSpaceNotExists, pb.RpcSpaceStopSharingResponseError_NO_SUCH_SPACE),
|
||||
errToCode(acl.ErrAclRequestFailed, pb.RpcSpaceStopSharingResponseError_REQUEST_FAILED),
|
||||
)
|
||||
return &pb.RpcSpaceStopSharingResponse{
|
||||
Error: &pb.RpcSpaceStopSharingResponseError{
|
||||
Code: code,
|
||||
Description: getErrorDescription(err),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (mw *Middleware) SpaceJoinCancel(cctx context.Context, req *pb.RpcSpaceJoinCancelRequest) *pb.RpcSpaceJoinCancelResponse {
|
||||
aclService := mw.applicationService.GetApp().MustComponent(acl.CName).(acl.AclService)
|
||||
err := aclService.CancelJoin(cctx, req.SpaceId)
|
||||
code := mapErrorCode(err,
|
||||
errToCode(space.ErrSpaceDeleted, pb.RpcSpaceJoinCancelResponseError_SPACE_IS_DELETED),
|
||||
errToCode(space.ErrSpaceNotExists, pb.RpcSpaceJoinCancelResponseError_NO_SUCH_SPACE),
|
||||
errToCode(acl.ErrAclRequestFailed, pb.RpcSpaceJoinCancelResponseError_REQUEST_FAILED),
|
||||
)
|
||||
return &pb.RpcSpaceJoinCancelResponse{
|
||||
Error: &pb.RpcSpaceJoinCancelResponseError{
|
||||
Code: 1,
|
||||
Description: getErrorDescription(fmt.Errorf("not implemented")),
|
||||
Code: code,
|
||||
Description: getErrorDescription(err),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
154
docs/proto.md
154
docs/proto.md
|
@ -539,6 +539,10 @@
|
|||
- [Rpc.Debug.StackGoroutines.Request](#anytype-Rpc-Debug-StackGoroutines-Request)
|
||||
- [Rpc.Debug.StackGoroutines.Response](#anytype-Rpc-Debug-StackGoroutines-Response)
|
||||
- [Rpc.Debug.StackGoroutines.Response.Error](#anytype-Rpc-Debug-StackGoroutines-Response-Error)
|
||||
- [Rpc.Debug.Stat](#anytype-Rpc-Debug-Stat)
|
||||
- [Rpc.Debug.Stat.Request](#anytype-Rpc-Debug-Stat-Request)
|
||||
- [Rpc.Debug.Stat.Response](#anytype-Rpc-Debug-Stat-Response)
|
||||
- [Rpc.Debug.Stat.Response.Error](#anytype-Rpc-Debug-Stat-Response-Error)
|
||||
- [Rpc.Debug.Subscriptions](#anytype-Rpc-Debug-Subscriptions)
|
||||
- [Rpc.Debug.Subscriptions.Request](#anytype-Rpc-Debug-Subscriptions-Request)
|
||||
- [Rpc.Debug.Subscriptions.Response](#anytype-Rpc-Debug-Subscriptions-Response)
|
||||
|
@ -955,6 +959,10 @@
|
|||
- [Rpc.Space.RequestDecline.Request](#anytype-Rpc-Space-RequestDecline-Request)
|
||||
- [Rpc.Space.RequestDecline.Response](#anytype-Rpc-Space-RequestDecline-Response)
|
||||
- [Rpc.Space.RequestDecline.Response.Error](#anytype-Rpc-Space-RequestDecline-Response-Error)
|
||||
- [Rpc.Space.StopSharing](#anytype-Rpc-Space-StopSharing)
|
||||
- [Rpc.Space.StopSharing.Request](#anytype-Rpc-Space-StopSharing-Request)
|
||||
- [Rpc.Space.StopSharing.Response](#anytype-Rpc-Space-StopSharing-Response)
|
||||
- [Rpc.Space.StopSharing.Response.Error](#anytype-Rpc-Space-StopSharing-Response-Error)
|
||||
- [Rpc.Template](#anytype-Rpc-Template)
|
||||
- [Rpc.Template.Clone](#anytype-Rpc-Template-Clone)
|
||||
- [Rpc.Template.Clone.Request](#anytype-Rpc-Template-Clone-Request)
|
||||
|
@ -1164,6 +1172,7 @@
|
|||
- [Rpc.Debug.Ping.Response.Error.Code](#anytype-Rpc-Debug-Ping-Response-Error-Code)
|
||||
- [Rpc.Debug.SpaceSummary.Response.Error.Code](#anytype-Rpc-Debug-SpaceSummary-Response-Error-Code)
|
||||
- [Rpc.Debug.StackGoroutines.Response.Error.Code](#anytype-Rpc-Debug-StackGoroutines-Response-Error-Code)
|
||||
- [Rpc.Debug.Stat.Response.Error.Code](#anytype-Rpc-Debug-Stat-Response-Error-Code)
|
||||
- [Rpc.Debug.Subscriptions.Response.Error.Code](#anytype-Rpc-Debug-Subscriptions-Response-Error-Code)
|
||||
- [Rpc.Debug.Tree.Response.Error.Code](#anytype-Rpc-Debug-Tree-Response-Error-Code)
|
||||
- [Rpc.Debug.TreeHeads.Response.Error.Code](#anytype-Rpc-Debug-TreeHeads-Response-Error-Code)
|
||||
|
@ -1268,6 +1277,7 @@
|
|||
- [Rpc.Space.ParticipantRemove.Response.Error.Code](#anytype-Rpc-Space-ParticipantRemove-Response-Error-Code)
|
||||
- [Rpc.Space.RequestApprove.Response.Error.Code](#anytype-Rpc-Space-RequestApprove-Response-Error-Code)
|
||||
- [Rpc.Space.RequestDecline.Response.Error.Code](#anytype-Rpc-Space-RequestDecline-Response-Error-Code)
|
||||
- [Rpc.Space.StopSharing.Response.Error.Code](#anytype-Rpc-Space-StopSharing-Response-Error-Code)
|
||||
- [Rpc.Template.Clone.Response.Error.Code](#anytype-Rpc-Template-Clone-Response-Error-Code)
|
||||
- [Rpc.Template.CreateFromObject.Response.Error.Code](#anytype-Rpc-Template-CreateFromObject-Response-Error-Code)
|
||||
- [Rpc.Template.ExportAll.Response.Error.Code](#anytype-Rpc-Template-ExportAll-Response-Error-Code)
|
||||
|
@ -1692,6 +1702,7 @@
|
|||
| SpaceJoin | [Rpc.Space.Join.Request](#anytype-Rpc-Space-Join-Request) | [Rpc.Space.Join.Response](#anytype-Rpc-Space-Join-Response) | |
|
||||
| SpaceJoinCancel | [Rpc.Space.JoinCancel.Request](#anytype-Rpc-Space-JoinCancel-Request) | [Rpc.Space.JoinCancel.Response](#anytype-Rpc-Space-JoinCancel-Response) | |
|
||||
| SpaceExit | [Rpc.Space.Exit.Request](#anytype-Rpc-Space-Exit-Request) | [Rpc.Space.Exit.Response](#anytype-Rpc-Space-Exit-Response) | |
|
||||
| SpaceStopSharing | [Rpc.Space.StopSharing.Request](#anytype-Rpc-Space-StopSharing-Request) | [Rpc.Space.StopSharing.Response](#anytype-Rpc-Space-StopSharing-Response) | |
|
||||
| SpaceRequestApprove | [Rpc.Space.RequestApprove.Request](#anytype-Rpc-Space-RequestApprove-Request) | [Rpc.Space.RequestApprove.Response](#anytype-Rpc-Space-RequestApprove-Response) | |
|
||||
| SpaceRequestDecline | [Rpc.Space.RequestDecline.Request](#anytype-Rpc-Space-RequestDecline-Request) | [Rpc.Space.RequestDecline.Response](#anytype-Rpc-Space-RequestDecline-Response) | |
|
||||
| SpaceParticipantRemove | [Rpc.Space.ParticipantRemove.Request](#anytype-Rpc-Space-ParticipantRemove-Request) | [Rpc.Space.ParticipantRemove.Response](#anytype-Rpc-Space-ParticipantRemove-Response) | |
|
||||
|
@ -1864,6 +1875,7 @@
|
|||
| BlockLatexSetText | [Rpc.BlockLatex.SetText.Request](#anytype-Rpc-BlockLatex-SetText-Request) | [Rpc.BlockLatex.SetText.Response](#anytype-Rpc-BlockLatex-SetText-Response) | |
|
||||
| ProcessCancel | [Rpc.Process.Cancel.Request](#anytype-Rpc-Process-Cancel-Request) | [Rpc.Process.Cancel.Response](#anytype-Rpc-Process-Cancel-Response) | |
|
||||
| LogSend | [Rpc.Log.Send.Request](#anytype-Rpc-Log-Send-Request) | [Rpc.Log.Send.Response](#anytype-Rpc-Log-Send-Response) | |
|
||||
| DebugStat | [Rpc.Debug.Stat.Request](#anytype-Rpc-Debug-Stat-Request) | [Rpc.Debug.Stat.Response](#anytype-Rpc-Debug-Stat-Response) | |
|
||||
| DebugTree | [Rpc.Debug.Tree.Request](#anytype-Rpc-Debug-Tree-Request) | [Rpc.Debug.Tree.Response](#anytype-Rpc-Debug-Tree-Response) | |
|
||||
| DebugTreeHeads | [Rpc.Debug.TreeHeads.Request](#anytype-Rpc-Debug-TreeHeads-Request) | [Rpc.Debug.TreeHeads.Response](#anytype-Rpc-Debug-TreeHeads-Response) | |
|
||||
| DebugSpaceSummary | [Rpc.Debug.SpaceSummary.Request](#anytype-Rpc-Debug-SpaceSummary-Request) | [Rpc.Debug.SpaceSummary.Response](#anytype-Rpc-Debug-SpaceSummary-Response) | |
|
||||
|
@ -9672,6 +9684,58 @@ Get marks list in the selected range in text block.
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Stat"></a>
|
||||
|
||||
### Rpc.Debug.Stat
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Stat-Request"></a>
|
||||
|
||||
### Rpc.Debug.Stat.Request
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Stat-Response"></a>
|
||||
|
||||
### Rpc.Debug.Stat.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Debug.Stat.Response.Error](#anytype-Rpc-Debug-Stat-Response-Error) | | |
|
||||
| jsonStat | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Stat-Response-Error"></a>
|
||||
|
||||
### Rpc.Debug.Stat.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Debug.Stat.Response.Error.Code](#anytype-Rpc-Debug-Stat-Response-Error-Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Subscriptions"></a>
|
||||
|
||||
### Rpc.Debug.Subscriptions
|
||||
|
@ -11591,6 +11655,7 @@ Get the info for page alongside with info for all inbound and outbound links fro
|
|||
| objectTypeUniqueKey | [string](#string) | | |
|
||||
| url | [string](#string) | | |
|
||||
| details | [google.protobuf.Struct](#google-protobuf-Struct) | | |
|
||||
| addPageContent | [bool](#bool) | | |
|
||||
|
||||
|
||||
|
||||
|
@ -15464,8 +15529,6 @@ Available undo/redo operations
|
|||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| spaceId | [string](#string) | | |
|
||||
| inviteCid | [string](#string) | | |
|
||||
| inviteFileKey | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
@ -15732,6 +15795,62 @@ Available undo/redo operations
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Space-StopSharing"></a>
|
||||
|
||||
### Rpc.Space.StopSharing
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Space-StopSharing-Request"></a>
|
||||
|
||||
### Rpc.Space.StopSharing.Request
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| spaceId | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Space-StopSharing-Response"></a>
|
||||
|
||||
### Rpc.Space.StopSharing.Response
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| error | [Rpc.Space.StopSharing.Response.Error](#anytype-Rpc-Space-StopSharing-Response-Error) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Space-StopSharing-Response-Error"></a>
|
||||
|
||||
### Rpc.Space.StopSharing.Response.Error
|
||||
|
||||
|
||||
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
| code | [Rpc.Space.StopSharing.Response.Error.Code](#anytype-Rpc-Space-StopSharing-Response-Error-Code) | | |
|
||||
| description | [string](#string) | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Template"></a>
|
||||
|
||||
### Rpc.Template
|
||||
|
@ -18607,6 +18726,19 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Stat-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Debug.Stat.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | ... |
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Debug-Subscriptions-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Debug.Subscriptions.Response.Error.Code
|
||||
|
@ -20034,6 +20166,22 @@ Middleware-to-front-end response, that can contain a NULL error or a non-NULL er
|
|||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Space-StopSharing-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Space.StopSharing.Response.Error.Code
|
||||
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
| NULL | 0 | |
|
||||
| UNKNOWN_ERROR | 1 | |
|
||||
| BAD_INPUT | 2 | |
|
||||
| NO_SUCH_SPACE | 101 | |
|
||||
| SPACE_IS_DELETED | 102 | |
|
||||
| REQUEST_FAILED | 103 | |
|
||||
|
||||
|
||||
|
||||
<a name="anytype-Rpc-Template-Clone-Response-Error-Code"></a>
|
||||
|
||||
### Rpc.Template.Clone.Response.Error.Code
|
||||
|
@ -24670,6 +24818,7 @@ Used to decode block meta only, without the content itself
|
|||
| installedByDefault | [bool](#bool) | | |
|
||||
| key | [string](#string) | | name of objectType (can be localized for bundled types) |
|
||||
| revision | [int64](#int64) | | revision of system objectType. Used to check if we should change type content or not |
|
||||
| restrictObjectCreation | [bool](#bool) | | restricts creating objects of this type for users |
|
||||
|
||||
|
||||
|
||||
|
@ -25693,6 +25842,7 @@ RelationFormat describes how the underlying data is stored in the google.protobu
|
|||
| LayoutChange | 6 | restricts layout changing |
|
||||
| Template | 7 | restricts template creation from this object |
|
||||
| Duplicate | 8 | restricts duplicate object |
|
||||
| CreateObjectOfThisType | 9 | can be set only for types. Restricts creating objects of this type |
|
||||
|
||||
|
||||
|
||||
|
|
40
go.mod
40
go.mod
|
@ -7,7 +7,7 @@ require (
|
|||
github.com/PuerkitoBio/goquery v1.8.1
|
||||
github.com/VividCortex/ewma v1.2.0
|
||||
github.com/adrium/goheif v0.0.0-20230113233934-ca402e77a786
|
||||
github.com/anyproto/any-sync v0.3.25
|
||||
github.com/anyproto/any-sync v0.3.32
|
||||
github.com/anyproto/go-naturaldate/v2 v2.0.2-0.20230524105841-9829cfd13438
|
||||
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
|
||||
github.com/blevesearch/bleve/v2 v2.3.10
|
||||
|
@ -31,7 +31,7 @@ require (
|
|||
github.com/gogo/status v1.1.1
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
|
||||
github.com/golang/snappy v0.0.4
|
||||
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/gosimple/slug v1.13.1
|
||||
github.com/grokify/html-strip-tags-go v0.1.0
|
||||
|
@ -70,7 +70,8 @@ require (
|
|||
github.com/opentracing/opentracing-go v1.2.0
|
||||
github.com/otiai10/copy v1.14.0
|
||||
github.com/otiai10/opengraph/v2 v2.1.0
|
||||
github.com/prometheus/client_golang v1.17.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.18.0
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1
|
||||
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd
|
||||
github.com/samber/lo v1.39.0
|
||||
|
@ -85,7 +86,7 @@ require (
|
|||
go.uber.org/atomic v1.11.0
|
||||
go.uber.org/mock v0.4.0
|
||||
go.uber.org/multierr v1.11.0
|
||||
go.uber.org/zap v1.26.0
|
||||
go.uber.org/zap v1.27.0
|
||||
golang.org/x/exp v0.0.0-20240205201215-2c58cdc269a3
|
||||
golang.org/x/image v0.15.0
|
||||
golang.org/x/mobile v0.0.0-20231006135142-2b44d11868fe
|
||||
|
@ -114,7 +115,7 @@ require (
|
|||
github.com/anyproto/go-slip21 v1.0.0 // indirect
|
||||
github.com/aymerick/douceur v0.2.0 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bits-and-blooms/bitset v1.2.0 // indirect
|
||||
github.com/bits-and-blooms/bitset v1.10.0 // indirect
|
||||
github.com/blevesearch/bleve_index_api v1.0.6 // indirect
|
||||
github.com/blevesearch/geo v0.1.18 // indirect
|
||||
github.com/blevesearch/go-porterstemmer v1.0.3 // indirect
|
||||
|
@ -130,13 +131,18 @@ require (
|
|||
github.com/blevesearch/zapx/v13 v13.3.10 // indirect
|
||||
github.com/blevesearch/zapx/v14 v14.3.10 // indirect
|
||||
github.com/blevesearch/zapx/v15 v15.3.13 // indirect
|
||||
github.com/btcsuite/btcd v0.21.0-beta // indirect
|
||||
github.com/btcsuite/btcd v0.22.1 // indirect
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.2.0 // indirect
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect
|
||||
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.2.0 // indirect
|
||||
github.com/cespare/xxhash v1.1.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||
github.com/chigopher/pathlib v0.15.0 // indirect
|
||||
github.com/consensys/bavard v0.1.13 // indirect
|
||||
github.com/consensys/gnark-crypto v0.12.1 // indirect
|
||||
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 // indirect
|
||||
github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect
|
||||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
|
||||
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect
|
||||
|
@ -146,13 +152,14 @@ require (
|
|||
github.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect
|
||||
github.com/dustin/go-humanize v1.0.0 // indirect
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.2 // indirect
|
||||
github.com/ethereum/go-ethereum v1.10.4 // indirect
|
||||
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
|
||||
github.com/ethereum/go-ethereum v1.13.12 // indirect
|
||||
github.com/fogleman/gg v1.3.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||
github.com/go-errors/errors v1.4.2 // indirect
|
||||
github.com/go-logr/logr v1.3.0 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/go-shiori/dom v0.0.0-20210627111528-4e4722cd0d65 // indirect
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
|
||||
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect
|
||||
|
@ -172,6 +179,7 @@ require (
|
|||
github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect
|
||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||
github.com/hashicorp/yamux v0.1.1 // indirect
|
||||
github.com/holiman/uint256 v1.2.4 // indirect
|
||||
github.com/huandu/xstrings v1.4.0 // indirect
|
||||
github.com/iancoleman/strcase v0.2.0 // indirect
|
||||
github.com/imdario/mergo v0.3.16 // indirect
|
||||
|
@ -194,14 +202,15 @@ require (
|
|||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
|
||||
github.com/miekg/dns v1.1.56 // indirect
|
||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.1 // indirect
|
||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.2 // indirect
|
||||
github.com/minio/sha256-simd v1.0.1 // indirect
|
||||
github.com/mitchellh/copystructure v1.2.0 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||
github.com/mitchellh/reflectwalk v1.0.2 // indirect
|
||||
github.com/mmcloughlin/addchain v0.4.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/mschoch/smat v0.2.0 // indirect
|
||||
|
@ -214,13 +223,12 @@ require (
|
|||
github.com/onsi/ginkgo/v2 v2.15.0 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
|
||||
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/polydawn/refmt v0.89.0 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
|
||||
github.com/prometheus/common v0.44.0 // indirect
|
||||
github.com/prometheus/procfs v0.11.1 // indirect
|
||||
github.com/prometheus/client_model v0.5.0 // indirect
|
||||
github.com/prometheus/common v0.45.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/pseudomuto/protokit v0.2.1 // indirect
|
||||
github.com/quic-go/qtls-go1-20 v0.4.1 // indirect
|
||||
github.com/quic-go/quic-go v0.40.1 // indirect
|
||||
|
@ -237,6 +245,7 @@ require (
|
|||
github.com/spf13/viper v1.15.0 // indirect
|
||||
github.com/stretchr/objx v0.5.0 // indirect
|
||||
github.com/subosito/gotenv v1.4.2 // indirect
|
||||
github.com/supranational/blst v0.3.11 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.12 // indirect
|
||||
github.com/tklauser/numcpus v0.6.1 // indirect
|
||||
github.com/tyler-smith/go-bip39 v1.1.0 // indirect
|
||||
|
@ -266,13 +275,14 @@ require (
|
|||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
lukechampine.com/blake3 v1.2.1 // indirect
|
||||
nhooyr.io/websocket v1.8.7 // indirect
|
||||
rsc.io/tmplfunc v0.0.3 // indirect
|
||||
)
|
||||
|
||||
replace github.com/dgraph-io/badger/v4 => github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580
|
||||
|
||||
replace github.com/dgraph-io/ristretto => github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c
|
||||
|
||||
replace github.com/libp2p/zeroconf/v2 => github.com/anyproto/zeroconf/v2 v2.2.1-0.20230303151330-fa3ab41a4941
|
||||
replace github.com/libp2p/zeroconf/v2 => github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d
|
||||
|
||||
replace github.com/JohannesKaufmann/html-to-markdown => github.com/anyproto/html-to-markdown v0.0.0-20231025221133-830bf0a6f139
|
||||
|
||||
|
|
261
go.sum
261
go.sum
|
@ -1,14 +1,12 @@
|
|||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||
cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg=
|
||||
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
|
||||
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||
cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||
cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw=
|
||||
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
|
||||
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
|
||||
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
|
||||
|
@ -25,7 +23,6 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf
|
|||
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
|
||||
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
|
||||
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
|
||||
cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o=
|
||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
|
||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||
|
@ -38,28 +35,14 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
|
|||
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
|
||||
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
|
||||
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
|
||||
collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
|
||||
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
|
||||
github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4=
|
||||
github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc=
|
||||
github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4=
|
||||
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
|
||||
github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
|
||||
github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
|
||||
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
|
||||
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
|
||||
github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
|
||||
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
|
||||
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
|
||||
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||
|
@ -78,11 +61,9 @@ github.com/RoaringBitmap/roaring v1.2.3 h1:yqreLINqIrX22ErkKI0vY47/ivtJr6n+kMhVO
|
|||
github.com/RoaringBitmap/roaring v1.2.3/go.mod h1:plvDsJQpxOC5bw8LRteu/MLWHsHez/3y6cubLI4/1yE=
|
||||
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
||||
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6 h1:fLjPD/aNc3UIOA6tDi6QXUemppXK3P9BI7mr2hd6gx8=
|
||||
github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
||||
github.com/Stebalien/go-bitfield v0.0.1/go.mod h1:GNjFpasyUVkHMsfEOk8EFLJ9syQ6SI+XWrX9Wf2XH0s=
|
||||
github.com/VictoriaMetrics/fastcache v1.6.0 h1:C/3Oi3EiBCqufydp1neRZkqcwmEiuRT9c3fqvvgKm5o=
|
||||
github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw=
|
||||
github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40=
|
||||
github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
|
||||
github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4=
|
||||
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
|
||||
|
@ -100,15 +81,12 @@ github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAu
|
|||
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
|
||||
github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 h1:iW0a5ljuFxkLGPNem5Ui+KBjFJzKg4Fv2fnxe4dvzpM=
|
||||
github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5/go.mod h1:Y2QMoi1vgtOIfc+6DhrMOGkLoGzqSV2rKp4Sm+opsyA=
|
||||
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
|
||||
github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
|
||||
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
|
||||
github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=
|
||||
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
|
||||
github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
|
||||
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
|
||||
github.com/anyproto/any-sync v0.3.25 h1:qqZoRorh7gB67p0KreMbZzYvza6KLr34zmCK73/xyJE=
|
||||
github.com/anyproto/any-sync v0.3.25/go.mod h1:rYmapuCpZBcNgbVGhMEHlqLtwFr1N48BL6sjFcgEgj4=
|
||||
github.com/anyproto/any-sync v0.3.32 h1:SKSzA4YOCVPwdT6Mf9p0yKnRE3xkvax/EUflspd5pbY=
|
||||
github.com/anyproto/any-sync v0.3.32/go.mod h1:q7O3a4p3DwhFzIACjh6I6rv2RzgqPQesZNZv27B8Xdo=
|
||||
github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580 h1:Ba80IlCCxkZ9H1GF+7vFu/TSpPvbpDCxXJ5ogc4euYc=
|
||||
github.com/anyproto/badger/v4 v4.2.1-0.20240110160636-80743fa3d580/go.mod h1:T/uWAYxrXdaXw64ihI++9RMbKTCpKd/yE9+saARew7k=
|
||||
github.com/anyproto/go-chash v0.1.0 h1:I9meTPjXFRfXZHRJzjOHC/XF7Q5vzysKkiT/grsogXY=
|
||||
|
@ -131,9 +109,8 @@ github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38 h1:80jke82/c+b
|
|||
github.com/anyproto/protobuf v1.3.3-0.20240201225420-6e325cf0ac38/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c h1:GicoaTUyB2mtCIl3YMrO0OzysqRT5GA4vuvDsqEkhSM=
|
||||
github.com/anyproto/ristretto v0.1.2-0.20240221153107-2b23839cc50c/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA=
|
||||
github.com/anyproto/zeroconf/v2 v2.2.1-0.20230303151330-fa3ab41a4941 h1:sXnKo0P45QWddNR4Gfh9CgbgdQXiKjry+KJjU8evoyw=
|
||||
github.com/anyproto/zeroconf/v2 v2.2.1-0.20230303151330-fa3ab41a4941/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs=
|
||||
github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
|
||||
github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d h1:5bj7nX/AS8sxGpTIrapE7PC4oPlhkHMwMqXlJbUHBlg=
|
||||
github.com/anyproto/zeroconf/v2 v2.2.1-0.20240228113933-f90a5cc4439d/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs=
|
||||
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||
github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
|
@ -144,15 +121,6 @@ github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6l
|
|||
github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
|
||||
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
|
||||
github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo=
|
||||
github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y=
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo=
|
||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM=
|
||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8=
|
||||
github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4=
|
||||
github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0=
|
||||
github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM=
|
||||
github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw=
|
||||
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
|
||||
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
|
||||
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
|
@ -162,8 +130,9 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce
|
|||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
|
||||
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
|
||||
github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88=
|
||||
github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
|
||||
github.com/blevesearch/bleve/v2 v2.3.10 h1:z8V0wwGoL4rp7nG/O3qVVLYxUqCbEwskMt4iRJsPLgg=
|
||||
github.com/blevesearch/bleve/v2 v2.3.10/go.mod h1:RJzeoeHC+vNHsoLR54+crS1HmOWpnH87fL70HAUCzIA=
|
||||
github.com/blevesearch/bleve_index_api v1.0.6 h1:gyUUxdsrvmW3jVhhYdCVL6h9dCjNT/geNU7PxGn37p8=
|
||||
|
@ -196,36 +165,33 @@ github.com/blevesearch/zapx/v14 v14.3.10 h1:SG6xlsL+W6YjhX5N3aEiL/2tcWh3DO75Bnz7
|
|||
github.com/blevesearch/zapx/v14 v14.3.10/go.mod h1:qqyuR0u230jN1yMmE4FIAuCxmahRQEOehF78m6oTgns=
|
||||
github.com/blevesearch/zapx/v15 v15.3.13 h1:6EkfaZiPlAxqXz0neniq35my6S48QI94W/wyhnpDHHQ=
|
||||
github.com/blevesearch/zapx/v15 v15.3.13/go.mod h1:Turk/TNRKj9es7ZpKK95PS7f6D44Y7fAFy8F4LXQtGg=
|
||||
github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
|
||||
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
||||
github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8=
|
||||
github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
|
||||
github.com/btcsuite/btcd v0.0.0-20190605094302-a0d1e3e36d50/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
|
||||
github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI=
|
||||
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
|
||||
github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M=
|
||||
github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94=
|
||||
github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c=
|
||||
github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k=
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
|
||||
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts=
|
||||
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ=
|
||||
github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
|
||||
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
|
||||
github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
|
||||
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
|
||||
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
|
||||
github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
|
||||
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||
github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
|
||||
github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
|
||||
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
|
||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
|
@ -244,14 +210,21 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
|
|||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
||||
github.com/cockroachdb/errors v1.8.1 h1:A5+txlVZfOqFBDa4mGz2bUWSp0aHElvHX2bKkdbQu+Y=
|
||||
github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY=
|
||||
github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A=
|
||||
github.com/cockroachdb/redact v1.0.8 h1:8QG/764wK+vmEYoOlfobpe12EQcS81ukx/a4hdVMxNw=
|
||||
github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
|
||||
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
|
||||
github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ=
|
||||
github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q=
|
||||
github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ=
|
||||
github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI=
|
||||
github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M=
|
||||
github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY=
|
||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
|
||||
|
@ -269,11 +242,13 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr
|
|||
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 h1:HVTnpeuvF6Owjd5mniCL8DEXo7uYXdQEmOP4FJbV5tg=
|
||||
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p1d6YEZWvFzEh4KLyvBcVSnrfNDDvK2zfK/4x2v/4pE=
|
||||
github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ=
|
||||
github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA=
|
||||
github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0=
|
||||
github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis=
|
||||
github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
|
||||
github.com/dave/jennifer v1.7.0 h1:uRbSBH9UTS64yXbh4FrMHfgfY762RD+C7bUPKODpSJE=
|
||||
github.com/dave/jennifer v1.7.0/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
|
@ -283,11 +258,9 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||
github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4=
|
||||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU=
|
||||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U=
|
||||
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
|
||||
github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218=
|
||||
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I=
|
||||
github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE=
|
||||
github.com/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ=
|
||||
|
@ -295,7 +268,6 @@ github.com/dgraph-io/badger v1.6.0-rc1/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhY
|
|||
github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4=
|
||||
github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ=
|
||||
github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
|
||||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA=
|
||||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
|
||||
|
@ -306,9 +278,6 @@ github.com/dhowden/tag v0.0.0-20201120070457-d52dcb253c63 h1:/u5RVRk3Nh7Zw1QQnPt
|
|||
github.com/dhowden/tag v0.0.0-20201120070457-d52dcb253c63/go.mod h1:SniNVYuaD1jmdEEvi+7ywb1QFR7agjeTdGKyFb0p7Rw=
|
||||
github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
|
||||
github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
|
||||
github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
||||
github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||
github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA=
|
||||
github.com/dsoprea/go-exif/v2 v2.0.0-20200321225314-640175a69fe4/go.mod h1:Lm2lMM2zx8p4a34ZemkaUV95AnMl4ZvLbCUbwOvLC2E=
|
||||
github.com/dsoprea/go-exif/v3 v3.0.0-20200717053412-08f1b6708903/go.mod h1:0nsO1ce0mh5czxGeLo4+OCZ/C6Eo6ZlMWsz7rH/Gxv8=
|
||||
github.com/dsoprea/go-exif/v3 v3.0.0-20210428042052-dca55bf8ca15/go.mod h1:cg5SNYKHMmzxsr9X6ZeLh/nfBRHHp5PngtEPcujONtk=
|
||||
|
@ -339,7 +308,6 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn
|
|||
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
|
||||
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
|
||||
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
|
||||
github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts=
|
||||
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
|
||||
github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
|
@ -350,10 +318,11 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m
|
|||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
|
||||
github.com/ethereum/go-ethereum v1.10.4 h1:JPZPL2MHbegfFStcaOrrggMVIcf57OQHQ0J3UhjQ+xQ=
|
||||
github.com/ethereum/go-ethereum v1.10.4/go.mod h1:nEE0TP5MtxGzOMd7egIrbPJMQBnhVU3ELNxhBglIzhg=
|
||||
github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY=
|
||||
github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
|
||||
github.com/ethereum/go-ethereum v1.13.12 h1:iDr9UM2JWkngBHGovRJEQn4Kor7mT4gt9rUZqB5M29Y=
|
||||
github.com/ethereum/go-ethereum v1.13.12/go.mod h1:hKL2Qcj1OvStXNSEDbucexqnEt1Wh4Cz329XsjAalZY=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
|
||||
github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ=
|
||||
github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ=
|
||||
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
|
||||
|
@ -365,10 +334,9 @@ github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2
|
|||
github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
|
||||
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
|
||||
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww=
|
||||
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
|
@ -376,8 +344,6 @@ github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
|
|||
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
|
||||
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is=
|
||||
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
||||
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
|
||||
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
|
||||
github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
|
||||
github.com/go-chi/chi/v5 v5.0.10 h1:rLz5avzKpjqxrYwXNfmjkrYYXOyLJd37pz53UFHC6vk=
|
||||
github.com/go-chi/chi/v5 v5.0.10/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||
|
@ -401,9 +367,9 @@ github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
|
|||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
|
||||
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
|
||||
|
@ -415,10 +381,7 @@ github.com/go-shiori/dom v0.0.0-20210627111528-4e4722cd0d65 h1:zx4B0AiwqKDQq+Agq
|
|||
github.com/go-shiori/dom v0.0.0-20210627111528-4e4722cd0d65/go.mod h1:NPO1+buE6TYOWhUI98/hXLHHJhunIpXRuvDN4xjkCoE=
|
||||
github.com/go-shiori/go-readability v0.0.0-20220215145315-dd6828d2f09b h1:yrGomo5CP7IvXwSwKbDeaJkhwa4BxfgOO/s1V7iOQm4=
|
||||
github.com/go-shiori/go-readability v0.0.0-20220215145315-dd6828d2f09b/go.mod h1:LTRGsNyO3/Y6u3ERbz17OiXy2qO1Y+/8QjXpg2ViyEY=
|
||||
github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
|
||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
|
||||
|
@ -436,7 +399,7 @@ github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk=
|
|||
github.com/goccy/go-graphviz v0.1.2 h1:sWSJ6w13BCm/ZOUTHDVrdvbsxqN8yyzaFcHrH/hQ9Yg=
|
||||
github.com/goccy/go-graphviz v0.1.2/go.mod h1:pMYpbAqJT10V8dzV1JN/g/wUlG/0imKPzn3ZsrchGCI=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
||||
github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
|
||||
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
|
||||
github.com/gogo/googleapis v1.3.1 h1:CzMaKrvF6Qa7XtRii064vKBQiyvmY8H8vG1xa1/W1JA=
|
||||
|
@ -491,13 +454,10 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu
|
|||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
|
||||
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
|
||||
github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw=
|
||||
github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
|
@ -518,7 +478,6 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
|
|||
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
|
||||
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
|
@ -537,10 +496,10 @@ github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLe
|
|||
github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo=
|
||||
github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
||||
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
|
@ -563,7 +522,6 @@ github.com/gosimple/slug v1.13.1 h1:bQ+kpX9Qa6tHRaK+fZR0A0M2Kd7Pa5eHPPsb1JpHD+Q=
|
|||
github.com/gosimple/slug v1.13.1/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
|
||||
github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
|
||||
github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
|
||||
github.com/graph-gophers/graphql-go v0.0.0-20201113091052-beb923fada29/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc=
|
||||
github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4=
|
||||
github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
|
@ -602,7 +560,6 @@ github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA
|
|||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4=
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||
|
@ -615,9 +572,8 @@ github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE
|
|||
github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
|
||||
github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119 h1:Xqi5LlXRyF1GlNGXSb2NZJuOeTrXGzwGiQDwkwNXEc8=
|
||||
github.com/hbagdi/go-unsplash v0.0.0-20230414214043-474fc02c9119/go.mod h1:DEzhU5CxSdknL3hUXTco1n5AO2BZHs4KeJo5ADWU0Iw=
|
||||
github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
|
||||
github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
|
||||
github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw=
|
||||
github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU=
|
||||
github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c=
|
||||
github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U=
|
||||
|
@ -627,7 +583,6 @@ github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU
|
|||
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
|
||||
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
|
||||
github.com/huin/goupnp v1.0.1-0.20210310174557-0ca763054c88/go.mod h1:nNs7wvRfN1eKaMknBydLNQU6146XQim8t4h+q90biWo=
|
||||
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
|
||||
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
|
||||
github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
|
||||
|
@ -641,15 +596,7 @@ github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPt
|
|||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY=
|
||||
github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI=
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk=
|
||||
github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE=
|
||||
github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8=
|
||||
github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE=
|
||||
github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0=
|
||||
github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po=
|
||||
github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI=
|
||||
github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs=
|
||||
github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0=
|
||||
|
@ -761,7 +708,6 @@ github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH
|
|||
github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ=
|
||||
github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA=
|
||||
github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/jarcoal/httpmock v1.0.4 h1:jp+dy/+nonJE4g4xbVtl9QdrUNbn6/3hDT5R4nDIZnA=
|
||||
|
@ -775,15 +721,12 @@ github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsj
|
|||
github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
|
||||
github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o=
|
||||
github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
|
||||
github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
|
||||
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
|
||||
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
|
@ -798,7 +741,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
|
|||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o=
|
||||
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e h1:LvL4XsI70QxOGHed6yhQtAU34Kx3Qq2wwBzGFKY8zKk=
|
||||
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
|
||||
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
|
@ -807,26 +749,20 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV
|
|||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
|
||||
github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0=
|
||||
github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0=
|
||||
github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU=
|
||||
github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8=
|
||||
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E=
|
||||
github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
|
||||
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||
github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
|
||||
github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
|
||||
github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
||||
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
|
||||
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk=
|
||||
|
@ -842,11 +778,10 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
|
||||
github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y=
|
||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ=
|
||||
github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E=
|
||||
github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ=
|
||||
|
@ -1029,17 +964,13 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V
|
|||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
|
||||
github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
|
||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
|
@ -1048,15 +979,11 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
|
|||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
|
||||
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||
github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
|
||||
github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
|
||||
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
|
||||
github.com/mb0/diff v0.0.0-20131118162322-d8d9a906c24d h1:eAS2t2Vy+6psf9LZ4T5WXWsbkBt3Tu5PWekJy5AGyEU=
|
||||
github.com/mb0/diff v0.0.0-20131118162322-d8d9a906c24d/go.mod h1:3YMHqrw2Qu3Liy82v4QdAG17e9k91HZ7w3hqlpWqhDo=
|
||||
github.com/mehanizm/dateparse v0.0.0-20210806203422-f82c8742c9f8 h1:SA/3Lk2gFZilCejaXeCTkA3+MHt9uI9ogzx45F/nOFE=
|
||||
|
@ -1072,8 +999,8 @@ github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJys
|
|||
github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
|
||||
github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE=
|
||||
github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY=
|
||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.1 h1:zdXGlHao7idpCBjEGTXThVAtMKs+IxAgivZ75xqkWK0=
|
||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.1/go.mod h1:f9m9uXokAHA6WNoYOPjj4AqjJS5pquQRiYYj/XSyPYc=
|
||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.2 h1:mz9LO6V7QCRkLYb0AH17t5R8KeqCe3E+hx9YXpmZeXA=
|
||||
github.com/miguelmota/go-ethereum-hdwallet v0.1.2/go.mod h1:fdNwFSoBFVBPnU0xpOd6l2ueqsPSH/Gch5kIvSvTGk8=
|
||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
|
||||
github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U=
|
||||
github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U=
|
||||
|
@ -1100,6 +1027,9 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua
|
|||
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
|
||||
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
|
||||
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
|
||||
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
|
||||
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
|
@ -1113,7 +1043,6 @@ github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjW
|
|||
github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
||||
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
|
||||
github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM=
|
||||
github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw=
|
||||
github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA=
|
||||
|
@ -1168,8 +1097,6 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRW
|
|||
github.com/mwitkow/go-proto-validators v0.3.2 h1:qRlmpTzm2pstMKKzTdvwPCF5QfBNURSlAgN/R+qbKos=
|
||||
github.com/mwitkow/go-proto-validators v0.3.2/go.mod h1:ej0Qp0qMgHN/KtDyUt+Q1/tA7a5VarXUOUxD+oeD30w=
|
||||
github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo=
|
||||
github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0=
|
||||
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E=
|
||||
github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
|
||||
github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
|
||||
github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
|
||||
|
@ -1185,27 +1112,22 @@ github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQ
|
|||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
||||
github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY=
|
||||
github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM=
|
||||
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
|
||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||
github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
|
||||
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
|
||||
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
|
||||
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
|
||||
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
||||
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||
|
@ -1226,17 +1148,13 @@ github.com/otiai10/opengraph/v2 v2.1.0 h1:rsrq/Krr4E6IPMPUdJ+pit4mc8ijzH9P7eyfEq
|
|||
github.com/otiai10/opengraph/v2 v2.1.0/go.mod h1:gHYa6c2GENKqbB7O6Mkqpq2Ma0Nti31xIM/3QHNcD/M=
|
||||
github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
|
||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||
github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE=
|
||||
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU=
|
||||
github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
|
||||
github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
|
||||
github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
|
||||
github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0=
|
||||
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ=
|
||||
github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o=
|
||||
github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
|
||||
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
|
@ -1245,7 +1163,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
|||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
|
||||
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
|
||||
github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o=
|
||||
|
@ -1262,26 +1179,25 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf
|
|||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||
github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
|
||||
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
|
||||
github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
|
||||
github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
|
||||
github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
|
||||
github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM=
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
|
||||
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
|
||||
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
|
||||
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||
github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
|
||||
github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
|
||||
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
|
||||
github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
|
||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
|
||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
|
||||
github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
|
||||
github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
|
@ -1289,9 +1205,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
|
|||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
|
||||
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
|
||||
github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=
|
||||
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
||||
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqXnvAufg061w=
|
||||
github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM=
|
||||
|
@ -1304,10 +1219,8 @@ github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1
|
|||
github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c=
|
||||
github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFDD3NxaZLY=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc=
|
||||
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho=
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
||||
|
@ -1331,14 +1244,11 @@ github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7
|
|||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
|
||||
github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
|
||||
github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
||||
github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
|
||||
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
|
||||
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
|
||||
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/shirou/gopsutil/v3 v3.24.1 h1:R3t6ondCEvmARp3wxODhXMTLC/klMa87h2PHUw5m7QI=
|
||||
github.com/shirou/gopsutil/v3 v3.24.1/go.mod h1:UU7a2MSBQa+kW1uuDq8DeEBS8kmrnQwsv2b5O513rwU=
|
||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||
|
@ -1393,7 +1303,6 @@ github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/y
|
|||
github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU=
|
||||
github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA=
|
||||
github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc=
|
||||
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q=
|
||||
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
|
||||
github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
|
||||
github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
|
||||
|
@ -1402,7 +1311,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
|||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
|
@ -1416,21 +1324,18 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
|
|||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8=
|
||||
github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
|
||||
github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4=
|
||||
github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
|
||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954 h1:xQdMZ1WLrgkkvOZ/LDQxjVxMLdby7osSh4ZEVa5sIjs=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210305035536-64b5b1c73954/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM=
|
||||
github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
|
||||
github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160 h1:NSWpaDaurcAJY7PkL8Xt0PhZE7qpvbZl5ljd8r6U0bI=
|
||||
github.com/tj/assert v0.0.0-20190920132354-ee03d75cd160/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
|
||||
github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI=
|
||||
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
|
||||
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
|
||||
github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM=
|
||||
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
|
||||
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs=
|
||||
github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8=
|
||||
github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
|
||||
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
|
||||
|
@ -1446,7 +1351,6 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY
|
|||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||
github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ=
|
||||
github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
|
||||
github.com/vektra/mockery/v2 v2.38.0 h1:I0LBuUzZHqAU4d1DknW0DTFBPO6n8TaD38WL2KJf3yI=
|
||||
|
@ -1467,7 +1371,6 @@ github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvX
|
|||
github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4=
|
||||
github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4=
|
||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI=
|
||||
github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
|
||||
github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
|
||||
|
@ -1476,7 +1379,6 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:
|
|||
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
|
||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
|
@ -1527,7 +1429,7 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0
|
|||
go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||
go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk=
|
||||
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
|
||||
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
|
@ -1537,7 +1439,6 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i
|
|||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
||||
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
|
||||
go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
||||
|
@ -1545,8 +1446,8 @@ go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
|||
go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
|
||||
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
|
||||
go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
|
||||
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
|
||||
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
|
||||
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
|
||||
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
|
@ -1562,16 +1463,13 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
|
|||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
|
@ -1629,7 +1527,6 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
|||
golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
|
||||
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -1667,11 +1564,9 @@ golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/
|
|||
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20200923182212-328152dc79b1/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
|
@ -1679,7 +1574,6 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY
|
|||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
|
||||
|
@ -1754,14 +1648,12 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -1775,13 +1667,11 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -1792,11 +1682,8 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210426080607-c94f62235c83/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -1814,6 +1701,7 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
@ -1849,7 +1737,6 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb
|
|||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
@ -1882,7 +1769,6 @@ golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapK
|
|||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
|
@ -1920,10 +1806,7 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
|
|||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
|
||||
gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
|
||||
gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
|
||||
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
|
||||
gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
|
||||
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
|
||||
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
|
||||
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
|
||||
|
@ -1964,7 +1847,6 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn
|
|||
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
|
||||
google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||
|
@ -1972,7 +1854,6 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx
|
|||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
|
||||
|
@ -2058,18 +1939,14 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy
|
|||
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
|
||||
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
|
||||
gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns=
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8=
|
||||
gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
|
||||
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
|
||||
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
|
@ -2081,7 +1958,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
|
|||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
||||
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
|
@ -2090,7 +1966,6 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
|||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
|
||||
lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI=
|
||||
lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
|
||||
nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
|
||||
|
@ -2100,6 +1975,8 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8
|
|||
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
|
||||
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
|
||||
storj.io/drpc v0.0.33 h1:yCGZ26r66ZdMP0IcTYsj7WDAUIIjzXk6DJhbhvt9FHI=
|
||||
|
|
|
@ -148,10 +148,10 @@ func (c *client) sendNextBatch(info amplitude.AppInfoProvider, batcher *mb.MB[am
|
|||
}
|
||||
|
||||
func (c *client) recordAggregatedData() {
|
||||
c.lock.RLock()
|
||||
c.lock.Lock()
|
||||
toSend := c.aggregatableMap
|
||||
c.aggregatableMap = make(map[string]SamplableEvent)
|
||||
c.lock.RUnlock()
|
||||
c.lock.Unlock()
|
||||
// итерейтим сразу старую мапу и скармливаем ГЦ
|
||||
for _, ev := range toSend {
|
||||
c.send(ev)
|
||||
|
|
|
@ -53,13 +53,14 @@ type MetricsService interface {
|
|||
}
|
||||
|
||||
type service struct {
|
||||
lock sync.RWMutex
|
||||
appVersion string
|
||||
startVersion string
|
||||
userId string
|
||||
deviceId string
|
||||
platform string
|
||||
clients [2]*client
|
||||
lock sync.RWMutex
|
||||
appVersion string
|
||||
startVersion string
|
||||
userId string
|
||||
deviceId string
|
||||
platform string
|
||||
clients [2]*client
|
||||
alreadyRunning bool
|
||||
}
|
||||
|
||||
func (s *service) SendSampled(ev SamplableEvent) {
|
||||
|
@ -161,6 +162,11 @@ func (s *service) GetStartVersion() string {
|
|||
func (s *service) Run() {
|
||||
s.lock.Lock()
|
||||
defer s.lock.Unlock()
|
||||
if s.alreadyRunning {
|
||||
return
|
||||
}
|
||||
s.alreadyRunning = true
|
||||
|
||||
for _, c := range s.clients {
|
||||
c.ctx, c.cancel = context.WithCancel(context.Background())
|
||||
c.setBatcher(mb.New[amplitude.Event](0))
|
||||
|
@ -171,10 +177,11 @@ func (s *service) Run() {
|
|||
|
||||
func (s *service) Close() {
|
||||
s.lock.Lock()
|
||||
defer s.lock.Unlock()
|
||||
for _, c := range s.clients {
|
||||
c.Close()
|
||||
}
|
||||
defer s.lock.Unlock()
|
||||
s.alreadyRunning = false
|
||||
}
|
||||
|
||||
func (s *service) Send(ev amplitude.Event) {
|
||||
|
|
3690
pb/commands.pb.go
3690
pb/commands.pb.go
File diff suppressed because it is too large
Load diff
|
@ -120,6 +120,31 @@ message Rpc {
|
|||
}
|
||||
}
|
||||
|
||||
message StopSharing {
|
||||
message Request {
|
||||
string spaceId = 1;
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
|
||||
NO_SUCH_SPACE = 101;
|
||||
SPACE_IS_DELETED = 102;
|
||||
REQUEST_FAILED = 103;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message InviteGetCurrent {
|
||||
message Request {
|
||||
string spaceId = 1;
|
||||
|
@ -237,8 +262,6 @@ message Rpc {
|
|||
message JoinCancel {
|
||||
message Request {
|
||||
string spaceId = 1;
|
||||
string inviteCid = 2;
|
||||
string inviteFileKey = 3;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -1490,6 +1513,7 @@ message Rpc {
|
|||
string objectTypeUniqueKey = 2;
|
||||
string url = 3;
|
||||
google.protobuf.Struct details = 4;
|
||||
bool addPageContent = 5;
|
||||
}
|
||||
|
||||
message Response {
|
||||
|
@ -5957,6 +5981,28 @@ message Rpc {
|
|||
repeated string headIds = 2;
|
||||
}
|
||||
|
||||
message Stat {
|
||||
message Request {
|
||||
}
|
||||
|
||||
message Response {
|
||||
Error error = 1;
|
||||
string jsonStat = 2;
|
||||
|
||||
message Error {
|
||||
Code code = 1;
|
||||
string description = 2;
|
||||
|
||||
enum Code {
|
||||
NULL = 0;
|
||||
UNKNOWN_ERROR = 1;
|
||||
BAD_INPUT = 2;
|
||||
// ...
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message TreeHeads {
|
||||
message Request {
|
||||
string treeId = 1;
|
||||
|
|
|
@ -57,6 +57,7 @@ service ClientCommands {
|
|||
rpc SpaceJoin (anytype.Rpc.Space.Join.Request) returns (anytype.Rpc.Space.Join.Response);
|
||||
rpc SpaceJoinCancel (anytype.Rpc.Space.JoinCancel.Request) returns (anytype.Rpc.Space.JoinCancel.Response);
|
||||
rpc SpaceExit (anytype.Rpc.Space.Exit.Request) returns (anytype.Rpc.Space.Exit.Response);
|
||||
rpc SpaceStopSharing (anytype.Rpc.Space.StopSharing.Request) returns (anytype.Rpc.Space.StopSharing.Response);
|
||||
rpc SpaceRequestApprove (anytype.Rpc.Space.RequestApprove.Request) returns (anytype.Rpc.Space.RequestApprove.Response);
|
||||
rpc SpaceRequestDecline (anytype.Rpc.Space.RequestDecline.Request) returns (anytype.Rpc.Space.RequestDecline.Response);
|
||||
rpc SpaceParticipantRemove (anytype.Rpc.Space.ParticipantRemove.Request) returns (anytype.Rpc.Space.ParticipantRemove.Response);
|
||||
|
@ -290,6 +291,7 @@ service ClientCommands {
|
|||
|
||||
rpc LogSend (anytype.Rpc.Log.Send.Request) returns (anytype.Rpc.Log.Send.Response);
|
||||
|
||||
rpc DebugStat (anytype.Rpc.Debug.Stat.Request) returns (anytype.Rpc.Debug.Stat.Response);
|
||||
rpc DebugTree (anytype.Rpc.Debug.Tree.Request) returns (anytype.Rpc.Debug.Tree.Response);
|
||||
rpc DebugTreeHeads (anytype.Rpc.Debug.TreeHeads.Request) returns (anytype.Rpc.Debug.TreeHeads.Response);
|
||||
rpc DebugSpaceSummary (anytype.Rpc.Debug.SpaceSummary.Request) returns (anytype.Rpc.Debug.SpaceSummary.Response);
|
||||
|
|
|
@ -26,281 +26,283 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
|
|||
func init() { proto.RegisterFile("pb/protos/service/service.proto", fileDescriptor_93a29dc403579097) }
|
||||
|
||||
var fileDescriptor_93a29dc403579097 = []byte{
|
||||
// 4378 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x1c, 0xc9,
|
||||
0x56, 0xc0, 0x77, 0x5e, 0x58, 0xe8, 0xcb, 0x5d, 0x60, 0x2e, 0x2c, 0x7b, 0xc3, 0xbd, 0xce, 0x6e,
|
||||
0x36, 0xb1, 0x93, 0x38, 0x1e, 0x67, 0x93, 0xdd, 0xec, 0xe5, 0x5e, 0x24, 0xe4, 0xd8, 0xb1, 0xd7,
|
||||
0xdc, 0xc4, 0x31, 0x9e, 0x49, 0x22, 0xad, 0x84, 0x44, 0xbb, 0xa7, 0x32, 0x6e, 0xdc, 0xd3, 0xd5,
|
||||
0xb7, 0xbb, 0x66, 0xec, 0x01, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0xe2, 0xeb, 0x85, 0x07, 0x24,
|
||||
0x1e, 0xf8, 0x3f, 0x78, 0xe3, 0x71, 0x1f, 0x79, 0x44, 0xbb, 0xff, 0xc8, 0x55, 0x57, 0x9d, 0xae,
|
||||
0x8f, 0xd3, 0x75, 0xaa, 0x7b, 0xf6, 0x69, 0x57, 0x3e, 0xbf, 0xf3, 0x51, 0x5d, 0xa7, 0xaa, 0x4e,
|
||||
0x55, 0xf5, 0x74, 0xa2, 0x9b, 0xc5, 0xf9, 0x6e, 0x51, 0x72, 0xc1, 0xab, 0xdd, 0x8a, 0x95, 0xcb,
|
||||
0x34, 0x61, 0xcd, 0x7f, 0x47, 0xf2, 0xcf, 0xc3, 0x77, 0xe3, 0x7c, 0x25, 0x56, 0x05, 0xbb, 0xf1,
|
||||
0x81, 0x21, 0x13, 0x3e, 0x9f, 0xc7, 0xf9, 0xb4, 0x52, 0xc8, 0x8d, 0xf7, 0x8d, 0x84, 0x2d, 0x59,
|
||||
0x2e, 0xe0, 0xef, 0x8f, 0xfe, 0xfb, 0x7f, 0x06, 0xd1, 0x7b, 0xfb, 0x59, 0xca, 0x72, 0xb1, 0x0f,
|
||||
0x1a, 0xc3, 0x2f, 0xa3, 0xef, 0xee, 0x15, 0xc5, 0x11, 0x13, 0xaf, 0x59, 0x59, 0xa5, 0x3c, 0x1f,
|
||||
0x7e, 0x3c, 0x02, 0x07, 0xa3, 0xb3, 0x22, 0x19, 0xed, 0x15, 0xc5, 0xc8, 0x08, 0x47, 0x67, 0xec,
|
||||
0x67, 0x0b, 0x56, 0x89, 0x1b, 0xb7, 0xc3, 0x50, 0x55, 0xf0, 0xbc, 0x62, 0xc3, 0xb7, 0xd1, 0xaf,
|
||||
0xed, 0x15, 0xc5, 0x98, 0x89, 0x03, 0x56, 0x37, 0x60, 0x2c, 0x62, 0xc1, 0x86, 0x5b, 0x2d, 0x55,
|
||||
0x17, 0xd0, 0x3e, 0xee, 0x76, 0x83, 0xe0, 0x67, 0x12, 0x7d, 0xa7, 0xf6, 0x73, 0xb1, 0x10, 0x53,
|
||||
0x7e, 0x95, 0x0f, 0x3f, 0x6a, 0x2b, 0x82, 0x48, 0xdb, 0xbe, 0x15, 0x42, 0xc0, 0xea, 0x9b, 0xe8,
|
||||
0x97, 0xdf, 0xc4, 0x59, 0xc6, 0xc4, 0x7e, 0xc9, 0xea, 0xc0, 0x5d, 0x1d, 0x25, 0x1a, 0x29, 0x99,
|
||||
0xb6, 0xfb, 0x71, 0x90, 0x01, 0xc3, 0x5f, 0x46, 0xdf, 0x55, 0x92, 0x33, 0x96, 0xf0, 0x25, 0x2b,
|
||||
0x87, 0x5e, 0x2d, 0x10, 0x12, 0x8f, 0xbc, 0x05, 0x61, 0xdb, 0xfb, 0x3c, 0x5f, 0xb2, 0x52, 0xf8,
|
||||
0x6d, 0x83, 0x30, 0x6c, 0xdb, 0x40, 0x60, 0xfb, 0x6f, 0x07, 0xd1, 0x0f, 0xf6, 0x92, 0x84, 0x2f,
|
||||
0x72, 0xf1, 0x9c, 0x27, 0x71, 0xf6, 0x3c, 0xcd, 0x2f, 0x4f, 0xd8, 0xd5, 0xfe, 0x45, 0xcd, 0xe7,
|
||||
0x33, 0x36, 0x7c, 0xec, 0x3e, 0x55, 0x85, 0x8e, 0x34, 0x3b, 0xb2, 0x61, 0xed, 0xfb, 0xd3, 0xf5,
|
||||
0x94, 0x20, 0x96, 0x7f, 0x1c, 0x44, 0x1b, 0x38, 0x96, 0x31, 0xcf, 0x96, 0xcc, 0x44, 0xf3, 0x59,
|
||||
0x87, 0x61, 0x17, 0xd7, 0xf1, 0x3c, 0x59, 0x57, 0x0d, 0x22, 0xca, 0xa2, 0xef, 0xd9, 0xe9, 0x32,
|
||||
0x66, 0x95, 0x1c, 0x4e, 0xf7, 0xe8, 0x8c, 0x00, 0x44, 0x7b, 0xbe, 0xdf, 0x07, 0x05, 0x6f, 0x69,
|
||||
0x34, 0x04, 0x6f, 0x19, 0xaf, 0xb4, 0xb3, 0xbb, 0x5e, 0x0b, 0x16, 0xa1, 0x7d, 0xdd, 0xeb, 0x41,
|
||||
0x82, 0xab, 0x3f, 0x8c, 0x7e, 0xe5, 0x0d, 0x2f, 0x2f, 0xab, 0x22, 0x4e, 0x18, 0x0c, 0x85, 0x3b,
|
||||
0xae, 0x76, 0x23, 0xc5, 0xa3, 0x61, 0xb3, 0x0b, 0xb3, 0x92, 0xb6, 0x11, 0xbe, 0x2c, 0x18, 0x9e,
|
||||
0x83, 0x8c, 0x62, 0x2d, 0xa4, 0x92, 0x16, 0x43, 0x60, 0xfb, 0x32, 0x1a, 0x1a, 0xdb, 0xe7, 0x7f,
|
||||
0xc4, 0x12, 0xb1, 0x37, 0x9d, 0xe2, 0x5e, 0x31, 0xba, 0x92, 0x18, 0xed, 0x4d, 0xa7, 0x54, 0xaf,
|
||||
0xf8, 0x51, 0x70, 0x76, 0x15, 0xbd, 0x8f, 0x9c, 0x3d, 0x4f, 0x2b, 0xe9, 0x70, 0x27, 0x6c, 0x05,
|
||||
0x30, 0xed, 0x74, 0xd4, 0x17, 0x07, 0xc7, 0x7f, 0x3e, 0x88, 0xbe, 0xef, 0xf1, 0x7c, 0xc6, 0xe6,
|
||||
0x7c, 0xc9, 0x86, 0x0f, 0xbb, 0xad, 0x29, 0x52, 0xfb, 0xff, 0x64, 0x0d, 0x0d, 0x4f, 0x9a, 0x8c,
|
||||
0x59, 0xc6, 0x12, 0x41, 0xa6, 0x89, 0x12, 0x77, 0xa6, 0x89, 0xc6, 0xac, 0x11, 0xd6, 0x08, 0x8f,
|
||||
0x98, 0xd8, 0x5f, 0x94, 0x25, 0xcb, 0x05, 0xd9, 0x97, 0x06, 0xe9, 0xec, 0x4b, 0x07, 0xf5, 0xb4,
|
||||
0xe7, 0x88, 0x89, 0xbd, 0x2c, 0x23, 0xdb, 0xa3, 0xc4, 0x9d, 0xed, 0xd1, 0x18, 0x78, 0x48, 0xa2,
|
||||
0x5f, 0xb5, 0x9e, 0x98, 0x38, 0xce, 0xdf, 0xf2, 0x21, 0xfd, 0x2c, 0xa4, 0x5c, 0xfb, 0xd8, 0xea,
|
||||
0xe4, 0x3c, 0xcd, 0x78, 0x76, 0x5d, 0xf0, 0x92, 0xee, 0x16, 0x25, 0xee, 0x6c, 0x86, 0xc6, 0xc0,
|
||||
0xc3, 0x1f, 0x44, 0xef, 0xc1, 0x2c, 0xd9, 0xac, 0x67, 0xb7, 0xbd, 0x53, 0x28, 0x5e, 0xd0, 0xee,
|
||||
0x74, 0x50, 0x66, 0x72, 0x00, 0x19, 0x4c, 0x3e, 0x1f, 0x7b, 0xf5, 0xd0, 0xd4, 0x73, 0x3b, 0x0c,
|
||||
0xb5, 0x6c, 0x1f, 0xb0, 0x8c, 0x91, 0xb6, 0x95, 0xb0, 0xc3, 0xb6, 0x86, 0xc0, 0x76, 0x19, 0xfd,
|
||||
0x86, 0x7e, 0x2c, 0xf5, 0x3a, 0x2a, 0xe5, 0xf5, 0x24, 0xbd, 0x4d, 0xb4, 0xdb, 0x86, 0xb4, 0xaf,
|
||||
0x07, 0xfd, 0xe0, 0x56, 0x7b, 0x60, 0x04, 0xfa, 0xdb, 0x83, 0xc6, 0xdf, 0xed, 0x30, 0x04, 0xb6,
|
||||
0xff, 0x6e, 0x10, 0xfd, 0x10, 0x64, 0xcf, 0xf2, 0xf8, 0x3c, 0x63, 0x72, 0x49, 0x3c, 0x61, 0xe2,
|
||||
0x8a, 0x97, 0x97, 0xe3, 0x55, 0x9e, 0x10, 0xcb, 0xbf, 0x1f, 0xee, 0x58, 0xfe, 0x49, 0x25, 0xab,
|
||||
0xe2, 0x83, 0x86, 0x0a, 0x5e, 0xe0, 0x8a, 0xaf, 0x69, 0x81, 0xe0, 0x05, 0x55, 0xf1, 0xb9, 0x48,
|
||||
0xcb, 0xea, 0x8b, 0x7a, 0xda, 0xf4, 0x5b, 0x7d, 0x61, 0xcf, 0x93, 0xb7, 0x42, 0x88, 0x99, 0xb6,
|
||||
0x9a, 0x04, 0xe6, 0xf9, 0xdb, 0x74, 0xf6, 0xaa, 0x98, 0xd6, 0x69, 0x7c, 0xcf, 0x9f, 0xa1, 0x16,
|
||||
0x42, 0x4c, 0x5b, 0x04, 0x0a, 0xde, 0xfe, 0xc1, 0x14, 0x46, 0x30, 0x94, 0x0e, 0x4b, 0x3e, 0x7f,
|
||||
0xce, 0x66, 0x71, 0xb2, 0x82, 0xf1, 0xff, 0x69, 0x68, 0xe0, 0x61, 0x5a, 0x07, 0xf1, 0xd9, 0x9a,
|
||||
0x5a, 0x10, 0xcf, 0x7f, 0x0e, 0xa2, 0xdb, 0x4d, 0xf3, 0x2f, 0xe2, 0x7c, 0xc6, 0xa0, 0x3f, 0x55,
|
||||
0xf4, 0x7b, 0xf9, 0xf4, 0x8c, 0x55, 0x22, 0x2e, 0xc5, 0xf0, 0xc7, 0xfe, 0x46, 0x86, 0x74, 0x74,
|
||||
0x6c, 0x3f, 0xf9, 0x56, 0xba, 0xa6, 0xd7, 0xc7, 0xf5, 0xc4, 0x06, 0x53, 0x80, 0xdb, 0xeb, 0x52,
|
||||
0x82, 0x27, 0x80, 0x5b, 0x21, 0xc4, 0xf4, 0xba, 0x14, 0x1c, 0xe7, 0xcb, 0x54, 0xb0, 0x23, 0x96,
|
||||
0xb3, 0xb2, 0xdd, 0xeb, 0x4a, 0xd5, 0x45, 0x88, 0x5e, 0x27, 0x50, 0x33, 0xd9, 0x38, 0xde, 0xf4,
|
||||
0xe2, 0xb8, 0x1d, 0x30, 0xd2, 0x5a, 0x1e, 0x1f, 0xf4, 0x83, 0xcd, 0xee, 0xce, 0xf2, 0x79, 0xc6,
|
||||
0x96, 0xfc, 0x12, 0xef, 0xee, 0x6c, 0x13, 0x0a, 0x20, 0x76, 0x77, 0x5e, 0xd0, 0xac, 0x60, 0x96,
|
||||
0x9f, 0xd7, 0x29, 0xbb, 0x42, 0x2b, 0x98, 0xad, 0x5c, 0x8b, 0x89, 0x15, 0xcc, 0x83, 0x81, 0x87,
|
||||
0x93, 0xe8, 0x97, 0xa4, 0xf0, 0xf7, 0x78, 0x9a, 0x0f, 0x6f, 0x7a, 0x94, 0x6a, 0x81, 0xb6, 0xfa,
|
||||
0x21, 0x0d, 0xa0, 0x88, 0xeb, 0xbf, 0xee, 0xc7, 0x79, 0xc2, 0x32, 0x6f, 0xc4, 0x46, 0x1c, 0x8c,
|
||||
0xd8, 0xc1, 0x50, 0xc4, 0xcf, 0xae, 0x53, 0xe1, 0x8d, 0xb8, 0x16, 0x04, 0x23, 0x06, 0x00, 0x65,
|
||||
0x2b, 0x68, 0xec, 0x15, 0x45, 0x59, 0xcf, 0x80, 0xbe, 0x6c, 0x75, 0x91, 0x60, 0xb6, 0xb6, 0x50,
|
||||
0xbf, 0xb7, 0x03, 0x96, 0x64, 0x69, 0x1e, 0xf4, 0x06, 0x48, 0x1f, 0x6f, 0x06, 0x05, 0x6f, 0x8b,
|
||||
0xe8, 0x7d, 0x09, 0x9c, 0xc6, 0xa5, 0x48, 0x93, 0xb4, 0x88, 0xf3, 0xa6, 0x2e, 0xf6, 0xe5, 0x7b,
|
||||
0x8b, 0xd2, 0x3e, 0x77, 0x7a, 0xd2, 0xe0, 0xf6, 0xdf, 0x07, 0xd1, 0x47, 0xd8, 0xef, 0x29, 0x2b,
|
||||
0xe7, 0xa9, 0xdc, 0x5e, 0x55, 0x6a, 0x72, 0x1a, 0x7e, 0x1e, 0x36, 0xda, 0x52, 0xd0, 0xd1, 0xfc,
|
||||
0x68, 0x7d, 0x45, 0x08, 0xec, 0xf7, 0xa3, 0x48, 0x95, 0xf1, 0x72, 0xab, 0xe5, 0xe6, 0x06, 0xd4,
|
||||
0xf7, 0xce, 0x3e, 0xeb, 0xa3, 0x00, 0x61, 0xa6, 0x50, 0xf5, 0x77, 0xb9, 0x83, 0x1c, 0x7a, 0x35,
|
||||
0xa4, 0x88, 0x98, 0x42, 0x11, 0x82, 0x03, 0x1d, 0x5f, 0xf0, 0x2b, 0x7f, 0xa0, 0xb5, 0x24, 0x1c,
|
||||
0x28, 0x10, 0xe6, 0x4c, 0x07, 0x02, 0xf5, 0x9d, 0xe9, 0x34, 0x61, 0x84, 0xce, 0x74, 0x30, 0x03,
|
||||
0x86, 0x79, 0xf4, 0xeb, 0xb6, 0xe1, 0xa7, 0x9c, 0x5f, 0xce, 0xe3, 0xf2, 0x72, 0x78, 0x9f, 0x56,
|
||||
0x6e, 0x18, 0xed, 0x68, 0xbb, 0x17, 0x6b, 0xc6, 0x90, 0xed, 0xb0, 0x5e, 0x80, 0x5f, 0x95, 0x19,
|
||||
0x1a, 0x43, 0x8e, 0x0d, 0x40, 0x88, 0x31, 0x44, 0xa0, 0x66, 0x46, 0xb3, 0xbd, 0x8d, 0x19, 0xde,
|
||||
0x45, 0x38, 0xea, 0x63, 0x46, 0xed, 0x22, 0x3c, 0x18, 0x4e, 0xa1, 0xa3, 0x32, 0x2e, 0x2e, 0xfc,
|
||||
0x29, 0x24, 0x45, 0xe1, 0x14, 0x6a, 0x10, 0xdc, 0xdf, 0x63, 0x16, 0x97, 0xc9, 0x85, 0xbf, 0xbf,
|
||||
0x95, 0x2c, 0xdc, 0xdf, 0x9a, 0x31, 0x0b, 0xae, 0x6d, 0x78, 0xbc, 0x38, 0xaf, 0x92, 0x32, 0x3d,
|
||||
0x67, 0xc3, 0x6d, 0x5a, 0x5b, 0x43, 0xc4, 0x82, 0x4b, 0xc2, 0xe6, 0xcc, 0x07, 0x7c, 0x36, 0xb2,
|
||||
0xe3, 0x69, 0x85, 0xce, 0x7c, 0x1a, 0x1b, 0x16, 0x41, 0x9c, 0xf9, 0xf8, 0x49, 0xdc, 0xbc, 0xa3,
|
||||
0x92, 0x2f, 0x8a, 0xaa, 0xa3, 0x79, 0x08, 0x0a, 0x37, 0xaf, 0x0d, 0x83, 0xcf, 0xeb, 0xe8, 0x37,
|
||||
0xed, 0x47, 0xfa, 0x2a, 0xaf, 0xb4, 0xd7, 0x1d, 0xfa, 0x39, 0x59, 0x18, 0x71, 0x7a, 0x12, 0xc0,
|
||||
0xcd, 0x46, 0xbc, 0xf1, 0x2c, 0x0e, 0x98, 0x88, 0xd3, 0xac, 0x1a, 0x6e, 0xfa, 0x6d, 0x34, 0x72,
|
||||
0x62, 0x23, 0xee, 0xe3, 0xf0, 0x10, 0x3a, 0x58, 0x14, 0x59, 0x9a, 0xb4, 0x8f, 0xd1, 0x40, 0x57,
|
||||
0x8b, 0xc3, 0x43, 0xc8, 0xc6, 0xf0, 0x94, 0x30, 0x66, 0x42, 0xfd, 0xcf, 0x64, 0x55, 0x30, 0xff,
|
||||
0x94, 0xe0, 0x20, 0xe1, 0x29, 0x01, 0xa3, 0xb8, 0x3d, 0x63, 0x26, 0x9e, 0xc7, 0x2b, 0xbe, 0x20,
|
||||
0xa6, 0x04, 0x2d, 0x0e, 0xb7, 0xc7, 0xc6, 0xcc, 0xc2, 0xad, 0x3d, 0x1c, 0xe7, 0x82, 0x95, 0x79,
|
||||
0x9c, 0x1d, 0x66, 0xf1, 0xac, 0x1a, 0x12, 0xe3, 0xc6, 0xa5, 0x88, 0x85, 0x9b, 0xa6, 0x3d, 0x8f,
|
||||
0xf1, 0xb8, 0x3a, 0x8c, 0x97, 0xbc, 0x4c, 0x05, 0xfd, 0x18, 0x0d, 0xd2, 0xf9, 0x18, 0x1d, 0xd4,
|
||||
0xeb, 0x6d, 0xaf, 0x4c, 0x2e, 0xd2, 0x25, 0x9b, 0x06, 0xbc, 0x35, 0x48, 0x0f, 0x6f, 0x16, 0xea,
|
||||
0xe9, 0xb4, 0x31, 0x5f, 0x94, 0x09, 0x23, 0x3b, 0x4d, 0x89, 0x3b, 0x3b, 0x4d, 0x63, 0xe0, 0xe1,
|
||||
0xaf, 0x06, 0xd1, 0x6f, 0x29, 0xa9, 0x7d, 0xb6, 0x75, 0x10, 0x57, 0x17, 0xe7, 0x3c, 0x2e, 0xa7,
|
||||
0xc3, 0x4f, 0x7c, 0x76, 0xbc, 0xa8, 0x76, 0xfd, 0x68, 0x1d, 0x15, 0xfc, 0x58, 0x9f, 0xa7, 0x95,
|
||||
0x35, 0xe2, 0xbc, 0x8f, 0xd5, 0x41, 0xc2, 0x8f, 0x15, 0xa3, 0x78, 0x02, 0x91, 0x72, 0xb5, 0x8f,
|
||||
0xdc, 0x24, 0xf5, 0xdd, 0xcd, 0xe4, 0x56, 0x27, 0x87, 0xe7, 0xc7, 0x5a, 0xe8, 0x66, 0xcb, 0x0e,
|
||||
0x65, 0xc3, 0x9f, 0x31, 0xa3, 0xbe, 0x38, 0xe9, 0x59, 0x8f, 0x8a, 0xb0, 0xe7, 0xd6, 0xc8, 0x18,
|
||||
0xf5, 0xc5, 0x09, 0xcf, 0xd6, 0xb4, 0x16, 0xf2, 0xec, 0x99, 0xda, 0x46, 0x7d, 0x71, 0x9c, 0x40,
|
||||
0x7b, 0x45, 0x91, 0xad, 0x26, 0x6c, 0x5e, 0x64, 0x64, 0x02, 0x39, 0x48, 0x38, 0x81, 0x30, 0x8a,
|
||||
0xab, 0x9f, 0x09, 0xaf, 0x6b, 0x2b, 0x6f, 0xf5, 0x23, 0x45, 0xe1, 0xea, 0xa7, 0x41, 0x70, 0xc1,
|
||||
0x30, 0xe1, 0xfb, 0x3c, 0xcb, 0x58, 0x22, 0xda, 0x97, 0x44, 0x5a, 0xd3, 0x10, 0xe1, 0x82, 0x01,
|
||||
0x91, 0xe6, 0x30, 0xa0, 0xa9, 0xd5, 0xe3, 0x92, 0x3d, 0x5d, 0x3d, 0x4f, 0xf3, 0xcb, 0xa1, 0x7f,
|
||||
0x6d, 0x34, 0x00, 0x71, 0x18, 0xe0, 0x05, 0xf1, 0x9e, 0xe0, 0x55, 0x3e, 0xe5, 0xfe, 0x3d, 0x41,
|
||||
0x2d, 0x09, 0xef, 0x09, 0x80, 0xc0, 0x26, 0xcf, 0x18, 0x65, 0xb2, 0x96, 0x84, 0x4d, 0x02, 0xe1,
|
||||
0x9b, 0x0f, 0xe0, 0xd4, 0x8d, 0x9c, 0x0f, 0xd0, 0x39, 0xdb, 0x56, 0x27, 0x87, 0x33, 0xb4, 0xd9,
|
||||
0x1c, 0x1c, 0x32, 0x91, 0x5c, 0xf8, 0x33, 0xd4, 0x41, 0xc2, 0x19, 0x8a, 0x51, 0xdc, 0xa4, 0x09,
|
||||
0xd7, 0x9b, 0x9b, 0x4d, 0x7f, 0x7e, 0xb4, 0x36, 0x36, 0x5b, 0x9d, 0x1c, 0x2e, 0xd7, 0x8f, 0xe7,
|
||||
0xf2, 0x99, 0x79, 0x93, 0x5c, 0xc9, 0xc2, 0xe5, 0xba, 0x66, 0x70, 0xf4, 0x4a, 0x50, 0x3f, 0x4e,
|
||||
0x7f, 0xf4, 0x46, 0x1e, 0x8e, 0xde, 0xe1, 0xc0, 0xc9, 0xbf, 0x0e, 0xa2, 0x9b, 0xb6, 0x97, 0x13,
|
||||
0x5e, 0x8f, 0x91, 0xd7, 0x71, 0x96, 0x4e, 0x63, 0xc1, 0x26, 0xfc, 0x92, 0xe5, 0x68, 0xbf, 0xef,
|
||||
0x46, 0xab, 0xf8, 0x91, 0xa3, 0x40, 0xec, 0xf7, 0x7b, 0x29, 0xe2, 0x3c, 0x51, 0xf4, 0xab, 0x8a,
|
||||
0xed, 0xc7, 0x15, 0x31, 0x93, 0x39, 0x48, 0x38, 0x4f, 0x30, 0x8a, 0x8b, 0x36, 0x25, 0x7f, 0x76,
|
||||
0x5d, 0xb0, 0x32, 0x65, 0x79, 0xc2, 0xfc, 0x45, 0x1b, 0xa6, 0xc2, 0x45, 0x9b, 0x87, 0x6e, 0x6d,
|
||||
0x87, 0xf5, 0xe4, 0xd4, 0xbe, 0xe7, 0xc5, 0x44, 0xe0, 0x9e, 0x97, 0x40, 0x71, 0x23, 0x0d, 0xe0,
|
||||
0x3d, 0x52, 0x6a, 0x59, 0x09, 0x1e, 0x29, 0xd1, 0x74, 0xeb, 0x90, 0x41, 0x33, 0xe3, 0x7a, 0x98,
|
||||
0x74, 0x84, 0x3e, 0xb6, 0x87, 0xcb, 0x76, 0x2f, 0xd6, 0x7f, 0xaa, 0x71, 0xc6, 0xb2, 0x58, 0x2e,
|
||||
0x21, 0x81, 0xa3, 0x83, 0x86, 0xe9, 0x73, 0xaa, 0x61, 0xb1, 0xe0, 0xf0, 0x2f, 0x06, 0xd1, 0x0d,
|
||||
0x9f, 0xc7, 0x97, 0x85, 0xf4, 0xfb, 0xb0, 0xdb, 0x96, 0x22, 0x89, 0x8b, 0xec, 0xb0, 0x06, 0xc4,
|
||||
0xf0, 0x27, 0xd1, 0x07, 0x8d, 0xc8, 0xdc, 0x73, 0x43, 0x00, 0x6e, 0x15, 0xa1, 0xe3, 0xc7, 0x9c,
|
||||
0x76, 0xbf, 0xdb, 0x9b, 0x37, 0x05, 0xba, 0x1b, 0x57, 0x85, 0x0a, 0x74, 0x6d, 0x03, 0xc4, 0x44,
|
||||
0x81, 0xee, 0xc1, 0xf0, 0x4a, 0xdd, 0x20, 0xf5, 0x38, 0xf1, 0xcd, 0x71, 0xda, 0x84, 0x3d, 0x4a,
|
||||
0xee, 0x76, 0x83, 0x38, 0x77, 0x1a, 0x31, 0xd4, 0xc5, 0xf7, 0x43, 0x16, 0x50, 0x6d, 0xbc, 0xdd,
|
||||
0x8b, 0x05, 0x87, 0x7f, 0x16, 0x7d, 0xbf, 0xd5, 0xb0, 0x43, 0x16, 0x8b, 0x45, 0xc9, 0xa6, 0xc3,
|
||||
0xdd, 0x8e, 0xb8, 0x1b, 0x50, 0xbb, 0x7e, 0xd8, 0x5f, 0x01, 0xfc, 0xff, 0xcd, 0x20, 0xfa, 0x81,
|
||||
0xcb, 0xa9, 0x2e, 0xd6, 0x31, 0x3c, 0x0a, 0x99, 0x74, 0x59, 0x1d, 0xc6, 0xe3, 0xb5, 0x74, 0x5a,
|
||||
0x7b, 0x30, 0x3b, 0x91, 0xf7, 0x96, 0x71, 0x9a, 0xc5, 0xe7, 0x19, 0xf3, 0xee, 0xc1, 0x9c, 0xdc,
|
||||
0xd4, 0x68, 0x70, 0x0f, 0x46, 0xaa, 0xb4, 0x66, 0x49, 0x39, 0xde, 0xac, 0xda, 0xfd, 0x01, 0x3d,
|
||||
0x2a, 0x3d, 0xa5, 0xfb, 0x4e, 0x4f, 0x1a, 0xdc, 0x8a, 0xe6, 0xec, 0xaa, 0xfe, 0xb3, 0x9d, 0xe4,
|
||||
0x3e, 0xaf, 0xa0, 0xea, 0xc9, 0xf4, 0x9d, 0x9e, 0x34, 0x78, 0xfd, 0xd3, 0xe8, 0x83, 0xb6, 0x57,
|
||||
0x58, 0x14, 0x76, 0x3b, 0x4d, 0xa1, 0x75, 0xe1, 0x61, 0x7f, 0x05, 0x53, 0xea, 0x7f, 0x91, 0x56,
|
||||
0x82, 0x97, 0xab, 0xf1, 0x05, 0xbf, 0x6a, 0xde, 0xe5, 0x74, 0x47, 0x2b, 0x00, 0x23, 0x8b, 0x20,
|
||||
0x4a, 0x7d, 0x3f, 0xd9, 0x72, 0x65, 0xde, 0xf9, 0xac, 0x08, 0x57, 0x16, 0xd1, 0xe1, 0xca, 0x25,
|
||||
0xcd, 0x5c, 0xd5, 0xb4, 0xca, 0xbc, 0xa0, 0xba, 0xe5, 0x0f, 0xb5, 0xfd, 0x92, 0xea, 0xdd, 0x6e,
|
||||
0xd0, 0x6c, 0xbf, 0x0e, 0xd3, 0x8c, 0xbd, 0x7c, 0xfb, 0x36, 0xe3, 0xf1, 0x14, 0x6d, 0xbf, 0x6a,
|
||||
0xc9, 0x08, 0x44, 0xc4, 0xf6, 0x0b, 0x21, 0xa6, 0xe8, 0xac, 0x05, 0xf2, 0x6e, 0xa6, 0x31, 0xbd,
|
||||
0xd9, 0xd6, 0xb3, 0xe5, 0x44, 0xd1, 0xe9, 0xe3, 0xcc, 0x82, 0x51, 0x4b, 0xeb, 0x21, 0xd8, 0xf8,
|
||||
0xb8, 0xd3, 0xd6, 0xb5, 0xc4, 0xc4, 0x82, 0xe1, 0xc1, 0xcc, 0xfe, 0xa8, 0x16, 0xbe, 0x2a, 0xa4,
|
||||
0xf1, 0x0f, 0xdb, 0x5a, 0x4a, 0x42, 0xec, 0x8f, 0x5c, 0xc2, 0xd4, 0xf9, 0xf5, 0xdf, 0x0f, 0xf8,
|
||||
0x55, 0x2e, 0x8d, 0x7a, 0x9e, 0x66, 0x23, 0x23, 0xea, 0x7c, 0xcc, 0x80, 0xe1, 0x9f, 0x46, 0xbf,
|
||||
0x28, 0x0d, 0x97, 0xbc, 0x18, 0x6e, 0x78, 0x14, 0x4a, 0xeb, 0x8d, 0x90, 0x9b, 0xa4, 0xdc, 0xbc,
|
||||
0xd8, 0xa4, 0xfb, 0xef, 0x55, 0x15, 0xcf, 0x18, 0x7a, 0xb1, 0xc9, 0xf4, 0x8a, 0x94, 0x12, 0x2f,
|
||||
0x36, 0xb5, 0x29, 0xf3, 0xb2, 0x4e, 0x2d, 0x3b, 0xe1, 0x53, 0xb0, 0xee, 0x69, 0xa1, 0x16, 0x12,
|
||||
0x2f, 0xeb, 0xb4, 0x20, 0x73, 0x7e, 0x7f, 0x12, 0x2f, 0xd3, 0x99, 0x9e, 0xfc, 0xd5, 0x1c, 0x52,
|
||||
0xa1, 0xf3, 0x7b, 0xc3, 0x8c, 0x2c, 0x88, 0x38, 0xbf, 0x27, 0x61, 0xf0, 0xf9, 0x2f, 0x83, 0xe8,
|
||||
0x43, 0xc3, 0x1c, 0x35, 0xc7, 0x2a, 0xc7, 0xf9, 0x5b, 0xfe, 0x26, 0x15, 0x17, 0xf5, 0x3e, 0xbe,
|
||||
0x1a, 0x3e, 0xa1, 0x4c, 0xfa, 0x79, 0x1d, 0xca, 0xe7, 0x6b, 0xeb, 0x99, 0x6a, 0xae, 0x39, 0x6e,
|
||||
0x31, 0x77, 0x5b, 0x4a, 0x03, 0x55, 0x73, 0xfa, 0x54, 0x06, 0x73, 0x44, 0x35, 0x17, 0xe2, 0x4d,
|
||||
0x17, 0x6b, 0xe7, 0x19, 0xcf, 0x71, 0x17, 0x1b, 0x0b, 0xb5, 0x90, 0xe8, 0xe2, 0x16, 0x64, 0xe6,
|
||||
0xc6, 0x46, 0xa4, 0x4e, 0x06, 0xf6, 0xb2, 0x0c, 0xcd, 0x8d, 0x5a, 0x55, 0x03, 0xc4, 0xdc, 0xe8,
|
||||
0x05, 0xc1, 0xcf, 0x59, 0xf4, 0x9d, 0xfa, 0x91, 0x9e, 0x96, 0x6c, 0x99, 0x32, 0x7c, 0x0d, 0x6b,
|
||||
0x49, 0x88, 0xf1, 0xef, 0x12, 0x66, 0x64, 0xbd, 0xca, 0xab, 0x22, 0x8b, 0xab, 0x0b, 0xb8, 0x98,
|
||||
0x73, 0xdb, 0xdc, 0x08, 0xf1, 0xd5, 0xdc, 0x9d, 0x0e, 0xca, 0x4c, 0xbc, 0x8d, 0x4c, 0x4f, 0x31,
|
||||
0x9b, 0x7e, 0xd5, 0xd6, 0x34, 0xb3, 0xd5, 0xc9, 0x99, 0xa3, 0xc9, 0xa3, 0x38, 0xcb, 0x58, 0xb9,
|
||||
0x6a, 0x64, 0x2f, 0xe2, 0x3c, 0x7d, 0xcb, 0x2a, 0x81, 0x8e, 0x26, 0x81, 0x1a, 0x61, 0x8c, 0x38,
|
||||
0x9a, 0x0c, 0xe0, 0xa6, 0xb2, 0x46, 0x9e, 0x8f, 0xf3, 0x29, 0xbb, 0x46, 0x95, 0x35, 0xb6, 0x23,
|
||||
0x19, 0xa2, 0xb2, 0xa6, 0x58, 0xb3, 0x3c, 0x3e, 0xcd, 0x78, 0x72, 0x09, 0x4b, 0x80, 0xdb, 0xc1,
|
||||
0x52, 0x82, 0xd7, 0x80, 0x5b, 0x21, 0xc4, 0x2c, 0x02, 0x52, 0x70, 0xc6, 0x8a, 0x2c, 0x4e, 0xf0,
|
||||
0x5d, 0xbc, 0xd2, 0x01, 0x19, 0xb1, 0x08, 0x60, 0x06, 0x85, 0x0b, 0x77, 0xfc, 0xbe, 0x70, 0xd1,
|
||||
0x15, 0xff, 0xad, 0x10, 0x62, 0x96, 0x41, 0x29, 0x18, 0x17, 0x59, 0x2a, 0xd0, 0x30, 0x50, 0x1a,
|
||||
0x52, 0x42, 0x0c, 0x03, 0x97, 0x40, 0x26, 0x5f, 0xb0, 0x72, 0xc6, 0xbc, 0x26, 0xa5, 0x24, 0x68,
|
||||
0xb2, 0x21, 0xcc, 0x8b, 0x41, 0xaa, 0xed, 0xbc, 0x58, 0xa1, 0x17, 0x83, 0xa0, 0x59, 0xbc, 0x58,
|
||||
0x11, 0x2f, 0x06, 0x39, 0x00, 0x0a, 0xf1, 0x34, 0xae, 0x84, 0x3f, 0x44, 0x29, 0x09, 0x86, 0xd8,
|
||||
0x10, 0x66, 0x8d, 0x56, 0x21, 0x2e, 0x04, 0x5a, 0xa3, 0x21, 0x00, 0xeb, 0xaa, 0xf0, 0x26, 0x29,
|
||||
0x37, 0x33, 0x89, 0xea, 0x15, 0x26, 0x0e, 0x53, 0x96, 0x4d, 0x2b, 0x34, 0x93, 0xc0, 0x73, 0x6f,
|
||||
0xa4, 0xc4, 0x4c, 0xd2, 0xa6, 0x50, 0x2a, 0xc1, 0x19, 0xae, 0xaf, 0x75, 0xe8, 0xf8, 0xf6, 0x56,
|
||||
0x08, 0x31, 0xf3, 0x53, 0x13, 0xf4, 0x7e, 0x5c, 0x96, 0x69, 0xbd, 0xf8, 0x6f, 0xfa, 0x03, 0x6a,
|
||||
0xe4, 0xc4, 0xfc, 0xe4, 0xe3, 0xd0, 0xf0, 0x6a, 0x26, 0x6e, 0x5f, 0x60, 0x78, 0xea, 0xfe, 0x38,
|
||||
0xc8, 0x98, 0x8a, 0x53, 0x4a, 0xac, 0xbb, 0x2e, 0xdf, 0xd3, 0xf4, 0x5c, 0x75, 0x6d, 0x76, 0x61,
|
||||
0xd6, 0xab, 0xc6, 0xda, 0xc5, 0x0b, 0xbe, 0x64, 0x13, 0xfe, 0xec, 0x3a, 0xad, 0x44, 0x9a, 0xcf,
|
||||
0x60, 0xe5, 0x7e, 0x4c, 0x58, 0xf2, 0xc1, 0xc4, 0xab, 0xc6, 0x9d, 0x4a, 0xa6, 0x80, 0x40, 0xb1,
|
||||
0x9c, 0xb0, 0x2b, 0x6f, 0x01, 0x81, 0x2d, 0x6a, 0x8e, 0x28, 0x20, 0x42, 0xbc, 0x39, 0xd3, 0xd0,
|
||||
0xce, 0xe1, 0xf7, 0x58, 0x13, 0xde, 0xd4, 0x72, 0x94, 0x35, 0x0c, 0x12, 0xdb, 0xca, 0xa0, 0x82,
|
||||
0xd9, 0xeb, 0x69, 0xff, 0x66, 0x88, 0xdd, 0x25, 0xec, 0xb4, 0x87, 0xd9, 0xbd, 0x1e, 0xa4, 0xc7,
|
||||
0x95, 0xb9, 0xb0, 0xa5, 0x5c, 0xb5, 0xef, 0x6b, 0xef, 0xf5, 0x20, 0xad, 0xf3, 0x11, 0xbb, 0x59,
|
||||
0x4f, 0xe3, 0xe4, 0x72, 0x56, 0xf2, 0x45, 0x3e, 0xdd, 0xe7, 0x19, 0x2f, 0xd1, 0xf9, 0x88, 0x13,
|
||||
0x35, 0x42, 0x89, 0xf3, 0x91, 0x0e, 0x15, 0x53, 0xc1, 0xd9, 0x51, 0xec, 0x65, 0xe9, 0x0c, 0xef,
|
||||
0x6e, 0x1d, 0x43, 0x12, 0x20, 0x2a, 0x38, 0x2f, 0xe8, 0x49, 0x22, 0xb5, 0xfb, 0x15, 0x69, 0x12,
|
||||
0x67, 0xca, 0xdf, 0x2e, 0x6d, 0xc6, 0x01, 0x3b, 0x93, 0xc8, 0xa3, 0xe0, 0x69, 0xe7, 0x64, 0x51,
|
||||
0xe6, 0xc7, 0xb9, 0xe0, 0x64, 0x3b, 0x1b, 0xa0, 0xb3, 0x9d, 0x16, 0x88, 0xa6, 0xd5, 0x09, 0xbb,
|
||||
0xae, 0xa3, 0xa9, 0xff, 0xe3, 0x9b, 0x56, 0xeb, 0xbf, 0x8f, 0x40, 0x1e, 0x9a, 0x56, 0x11, 0x87,
|
||||
0x1a, 0x03, 0x4e, 0x54, 0xc2, 0x04, 0xb4, 0xdd, 0x34, 0xb9, 0xdb, 0x0d, 0xfa, 0xfd, 0x8c, 0xc5,
|
||||
0x2a, 0x63, 0x21, 0x3f, 0x12, 0xe8, 0xe3, 0xa7, 0x01, 0xcd, 0xc5, 0x89, 0xd3, 0x9e, 0x0b, 0x96,
|
||||
0x5c, 0xb6, 0xde, 0x3f, 0x71, 0x03, 0x55, 0x08, 0x71, 0x71, 0x42, 0xa0, 0xfe, 0x2e, 0x3a, 0x4e,
|
||||
0x78, 0x1e, 0xea, 0xa2, 0x5a, 0xde, 0xa7, 0x8b, 0x80, 0x33, 0x9b, 0x5f, 0x2d, 0x85, 0xcc, 0x54,
|
||||
0xdd, 0xb4, 0x4d, 0x58, 0xb0, 0x21, 0x62, 0xf3, 0x4b, 0xc2, 0xa6, 0x26, 0xc7, 0x3e, 0x5f, 0xb4,
|
||||
0xdf, 0xff, 0x6c, 0x59, 0x79, 0x41, 0xbf, 0xff, 0x49, 0xb1, 0x74, 0x23, 0x55, 0x8e, 0x74, 0x58,
|
||||
0x71, 0xf3, 0xe4, 0x41, 0x3f, 0xd8, 0x6c, 0x79, 0x1c, 0x9f, 0xfb, 0x19, 0x8b, 0x4b, 0xe5, 0x75,
|
||||
0x27, 0x60, 0xc8, 0x60, 0xc4, 0x96, 0x27, 0x80, 0xa3, 0x29, 0xcc, 0xf1, 0xbc, 0xcf, 0x73, 0xc1,
|
||||
0x72, 0xe1, 0x9b, 0xc2, 0x5c, 0x63, 0x00, 0x86, 0xa6, 0x30, 0x4a, 0x01, 0xe5, 0xad, 0x3c, 0x0f,
|
||||
0x62, 0xe2, 0x24, 0x9e, 0x7b, 0x2b, 0x36, 0x75, 0xd6, 0xa3, 0xe4, 0xa1, 0xbc, 0x45, 0x1c, 0x1a,
|
||||
0xf2, 0xc7, 0xf3, 0x78, 0xa6, 0xbd, 0x78, 0xb4, 0xa5, 0xbc, 0xe5, 0xe6, 0x6e, 0x37, 0x88, 0xfc,
|
||||
0xbc, 0x4e, 0xa7, 0x8c, 0x07, 0xfc, 0x48, 0x79, 0x1f, 0x3f, 0x18, 0x44, 0x95, 0x53, 0xdd, 0x5a,
|
||||
0xb5, 0x9b, 0xda, 0xcb, 0xa7, 0xb0, 0x87, 0x1c, 0x11, 0x0f, 0x05, 0x71, 0xa1, 0xca, 0x89, 0xe0,
|
||||
0xd1, 0xf8, 0x68, 0x0e, 0x47, 0x43, 0xe3, 0x43, 0x9f, 0x7d, 0xf6, 0x19, 0x1f, 0x3e, 0x18, 0x7c,
|
||||
0xfe, 0x31, 0x8c, 0x8f, 0x83, 0x58, 0xc4, 0x75, 0xcd, 0xfc, 0x3a, 0x65, 0x57, 0xb0, 0x09, 0xf5,
|
||||
0xb4, 0xb7, 0xa1, 0x46, 0xf2, 0xc7, 0x28, 0x68, 0x47, 0xba, 0xdb, 0x9b, 0x0f, 0xf8, 0x86, 0xea,
|
||||
0xbc, 0xd3, 0x37, 0x2a, 0xd3, 0x77, 0x7b, 0xf3, 0x01, 0xdf, 0xf0, 0x2b, 0xb7, 0x4e, 0xdf, 0xe8,
|
||||
0xa7, 0x6e, 0xbb, 0xbd, 0x79, 0xf0, 0xfd, 0x97, 0x83, 0xe8, 0x46, 0xcb, 0x79, 0x5d, 0x03, 0x25,
|
||||
0x22, 0x5d, 0x32, 0x5f, 0x29, 0xe7, 0xda, 0xd3, 0x68, 0xa8, 0x94, 0xa3, 0x55, 0xac, 0x4f, 0x23,
|
||||
0xf8, 0xa2, 0x38, 0xe5, 0x55, 0x2a, 0x2f, 0x8e, 0x1f, 0xf7, 0x30, 0xda, 0xc0, 0xa1, 0x0d, 0x4b,
|
||||
0x48, 0xc9, 0x5c, 0xbb, 0x39, 0xa8, 0x79, 0xd5, 0xf3, 0x41, 0xc0, 0x5e, 0xfb, 0x8d, 0xcf, 0x9d,
|
||||
0x9e, 0xb4, 0xb9, 0x00, 0x73, 0x18, 0xfb, 0xe6, 0x2d, 0xd4, 0xab, 0xde, 0xcb, 0xb7, 0x87, 0xfd,
|
||||
0x15, 0xc0, 0xfd, 0x5f, 0x37, 0x35, 0x3d, 0xf6, 0x0f, 0x83, 0xe0, 0x51, 0x1f, 0x8b, 0x68, 0x20,
|
||||
0x3c, 0x5e, 0x4b, 0x07, 0x02, 0xf9, 0x8f, 0x41, 0x74, 0xcb, 0x1b, 0x88, 0x7b, 0x07, 0xfb, 0xdb,
|
||||
0x7d, 0x6c, 0xfb, 0xef, 0x62, 0x7f, 0xfc, 0x6d, 0x54, 0x21, 0xba, 0xbf, 0x6f, 0xb6, 0xd6, 0x8d,
|
||||
0x86, 0x7c, 0x1d, 0xff, 0x65, 0x39, 0x65, 0x25, 0x8c, 0xd8, 0x50, 0xd2, 0x19, 0x18, 0x8f, 0xdb,
|
||||
0xcf, 0xd6, 0xd4, 0xb2, 0x3e, 0xe3, 0xe1, 0xc0, 0xf0, 0xcb, 0x24, 0x2b, 0x9e, 0x90, 0x65, 0x8b,
|
||||
0xc6, 0x01, 0x3d, 0x59, 0x57, 0x8d, 0x1a, 0xc9, 0x16, 0x2c, 0x7f, 0x15, 0xfc, 0xb8, 0xa7, 0x61,
|
||||
0xe7, 0x77, 0xc2, 0x9f, 0xae, 0xa7, 0x04, 0xb1, 0xfc, 0xd7, 0x20, 0xba, 0xe3, 0xb0, 0xe6, 0xa6,
|
||||
0x01, 0x9d, 0x87, 0xfc, 0x24, 0x60, 0x9f, 0x52, 0xd2, 0xc1, 0xfd, 0xce, 0xb7, 0x53, 0x36, 0xdf,
|
||||
0xbc, 0x70, 0x54, 0x0e, 0xd3, 0x4c, 0xb0, 0xb2, 0xfd, 0xcd, 0x0b, 0xd7, 0xae, 0xa2, 0x46, 0xf4,
|
||||
0x37, 0x2f, 0x02, 0xb8, 0xf5, 0xcd, 0x0b, 0x8f, 0x67, 0xef, 0x37, 0x2f, 0xbc, 0xd6, 0x82, 0xdf,
|
||||
0xbc, 0x08, 0x6b, 0x50, 0x8b, 0x4f, 0x13, 0x82, 0x3a, 0xd1, 0xee, 0x65, 0xd1, 0x3d, 0xe0, 0x7e,
|
||||
0xb4, 0x8e, 0x0a, 0xb1, 0xfc, 0x2a, 0x4e, 0xbe, 0x19, 0xd6, 0xe3, 0x99, 0x3a, 0x6f, 0x87, 0xed,
|
||||
0xf6, 0xe6, 0xc1, 0xf7, 0xcf, 0x60, 0xdf, 0xa3, 0x17, 0x1b, 0x5e, 0xca, 0xef, 0x9d, 0x6c, 0x87,
|
||||
0x16, 0x8f, 0xda, 0x82, 0xdd, 0xf3, 0x0f, 0xfa, 0xc1, 0x44, 0x73, 0x6b, 0x02, 0x3a, 0x7d, 0xd4,
|
||||
0x65, 0x08, 0x75, 0xf9, 0x6e, 0x6f, 0x9e, 0x58, 0xe4, 0x94, 0x6f, 0xd5, 0xdb, 0x3d, 0x8c, 0xb9,
|
||||
0x7d, 0xfd, 0xb0, 0xbf, 0x82, 0x79, 0xb5, 0xa5, 0xe5, 0x5e, 0xf6, 0x73, 0xe7, 0x13, 0x74, 0x7a,
|
||||
0x79, 0xa7, 0x27, 0x1d, 0x2a, 0x6e, 0xec, 0xe5, 0xbd, 0xab, 0xb8, 0xf1, 0x2e, 0xf1, 0x9f, 0xae,
|
||||
0xa7, 0x04, 0xb1, 0xfc, 0xf3, 0x20, 0xba, 0x49, 0xc6, 0x02, 0x59, 0xf0, 0xa4, 0xaf, 0x65, 0x94,
|
||||
0x0d, 0x9f, 0xaf, 0xad, 0x07, 0x41, 0xfd, 0xdb, 0x20, 0xfa, 0x30, 0x10, 0x94, 0x4a, 0x8f, 0x35,
|
||||
0xac, 0xbb, 0x69, 0xf2, 0xa3, 0xf5, 0x15, 0xa9, 0xc5, 0xde, 0xc6, 0xc7, 0xed, 0x4f, 0x41, 0x04,
|
||||
0x6c, 0x8f, 0xe9, 0x4f, 0x41, 0x74, 0x6b, 0xe1, 0xc3, 0x9f, 0xba, 0x24, 0x81, 0x7d, 0x91, 0xef,
|
||||
0xf0, 0x47, 0x56, 0x2c, 0x68, 0x3f, 0xb4, 0xd5, 0xc9, 0xf9, 0x9c, 0x3c, 0xbb, 0x2e, 0xe2, 0x7c,
|
||||
0x4a, 0x3b, 0x51, 0xf2, 0x6e, 0x27, 0x9a, 0xc3, 0x87, 0x66, 0xb5, 0xf4, 0x8c, 0x37, 0x9b, 0xbc,
|
||||
0x7b, 0x94, 0xbe, 0x46, 0x82, 0x87, 0x66, 0x2d, 0x94, 0xf0, 0x06, 0x15, 0x6d, 0xc8, 0x1b, 0x2a,
|
||||
0x64, 0xef, 0xf7, 0x41, 0xd1, 0xf6, 0x41, 0x7b, 0xd3, 0x67, 0xf1, 0x0f, 0x42, 0x56, 0x5a, 0xe7,
|
||||
0xf1, 0x3b, 0x3d, 0x69, 0xc2, 0xed, 0x98, 0x89, 0x2f, 0x58, 0x3c, 0x65, 0x65, 0xd0, 0xad, 0xa6,
|
||||
0x7a, 0xb9, 0xb5, 0x69, 0x9f, 0xdb, 0x7d, 0x9e, 0x2d, 0xe6, 0x39, 0x74, 0x26, 0xe9, 0xd6, 0xa6,
|
||||
0xba, 0xdd, 0x22, 0x1a, 0x1f, 0x17, 0x1a, 0xb7, 0xb2, 0xb8, 0xbc, 0x1f, 0x36, 0xe3, 0xd4, 0x94,
|
||||
0xdb, 0xbd, 0x58, 0xba, 0x9d, 0x90, 0x46, 0x1d, 0xed, 0x44, 0x99, 0xb4, 0xd3, 0x93, 0xc6, 0xe7,
|
||||
0x76, 0x96, 0x5b, 0x9d, 0x4f, 0xbb, 0x1d, 0xb6, 0x5a, 0x29, 0xf5, 0xb0, 0xbf, 0x02, 0x3e, 0x25,
|
||||
0x85, 0xac, 0xaa, 0x77, 0x45, 0x87, 0x69, 0x96, 0x0d, 0xb7, 0x03, 0x69, 0xd2, 0x40, 0xc1, 0x53,
|
||||
0x52, 0x0f, 0x4c, 0x64, 0x72, 0x73, 0xaa, 0x98, 0x0f, 0xbb, 0xec, 0x48, 0xaa, 0x57, 0x26, 0xdb,
|
||||
0x34, 0x3a, 0x6d, 0xb3, 0x1e, 0xb5, 0x6e, 0xed, 0x28, 0xfc, 0xe0, 0x5a, 0x0d, 0xde, 0xed, 0xcd,
|
||||
0xa3, 0x6b, 0x78, 0x49, 0xc9, 0x95, 0xe5, 0x36, 0x65, 0xc2, 0x59, 0x49, 0xee, 0x74, 0x50, 0xe8,
|
||||
0xc4, 0x52, 0x0d, 0xa3, 0x37, 0xe9, 0x74, 0xc6, 0x84, 0xf7, 0x06, 0xc9, 0x06, 0x82, 0x37, 0x48,
|
||||
0x08, 0x44, 0x5d, 0xa7, 0xfe, 0x3e, 0x66, 0x62, 0x12, 0x97, 0x33, 0x26, 0x8e, 0xa7, 0xbe, 0xae,
|
||||
0x03, 0x65, 0x8b, 0x0a, 0x75, 0x9d, 0x97, 0x46, 0xb3, 0x81, 0x76, 0x0b, 0xbf, 0xa7, 0xbe, 0x1f,
|
||||
0x32, 0x83, 0x7e, 0x54, 0xbd, 0xdd, 0x8b, 0x45, 0x2b, 0x8a, 0x71, 0x98, 0xce, 0x53, 0xe1, 0x5b,
|
||||
0x51, 0x2c, 0x1b, 0x35, 0x12, 0x5a, 0x51, 0xda, 0x28, 0xd5, 0xbc, 0xba, 0x46, 0x38, 0x9e, 0x86,
|
||||
0x9b, 0xa7, 0x98, 0x7e, 0xcd, 0xd3, 0x6c, 0xeb, 0xc2, 0x33, 0xd7, 0x29, 0x23, 0x2e, 0x60, 0xab,
|
||||
0xec, 0xc9, 0x6d, 0xf9, 0x13, 0x43, 0x0c, 0x86, 0x66, 0x1d, 0x4a, 0xc1, 0xfa, 0x15, 0x8b, 0xe6,
|
||||
0x9a, 0x3b, 0xd9, 0xa2, 0x60, 0x71, 0x19, 0xe7, 0x89, 0x77, 0x6b, 0x2a, 0x0d, 0xb6, 0xc8, 0xd0,
|
||||
0xd6, 0x94, 0xd4, 0x40, 0xd7, 0xe9, 0xee, 0x8f, 0x03, 0x3d, 0x43, 0x41, 0xff, 0x0a, 0xcf, 0xfd,
|
||||
0x6d, 0xe0, 0xbd, 0x1e, 0x24, 0xbe, 0x4e, 0x6f, 0x00, 0x7d, 0x28, 0xaf, 0x9c, 0x7e, 0x12, 0x30,
|
||||
0xe5, 0xa2, 0xa1, 0x6d, 0x30, 0xad, 0x82, 0x92, 0x5a, 0x17, 0xb8, 0x4c, 0xfc, 0x94, 0xad, 0x7c,
|
||||
0x49, 0x6d, 0xea, 0x53, 0x89, 0x84, 0x92, 0xba, 0x8d, 0xa2, 0x3a, 0xd3, 0xde, 0x07, 0x6d, 0x06,
|
||||
0xf4, 0xed, 0xad, 0xcf, 0x56, 0x27, 0x87, 0x46, 0xce, 0x41, 0xba, 0x74, 0xee, 0x30, 0x3c, 0x81,
|
||||
0x1e, 0xa4, 0x4b, 0xff, 0x15, 0xc6, 0x76, 0x2f, 0x16, 0x5f, 0xd5, 0xc7, 0x82, 0x5d, 0x37, 0x77,
|
||||
0xe8, 0x9e, 0x70, 0xa5, 0xbc, 0x75, 0x89, 0x7e, 0xb7, 0x1b, 0x34, 0x2f, 0xc6, 0x9e, 0x96, 0x3c,
|
||||
0x61, 0x55, 0x05, 0xdf, 0xc7, 0x72, 0xdf, 0x3c, 0x02, 0xd9, 0x08, 0x7d, 0x1d, 0xeb, 0x76, 0x18,
|
||||
0x02, 0xdb, 0x5f, 0x44, 0xef, 0x3e, 0xe7, 0xb3, 0x31, 0xcb, 0xa7, 0xc3, 0x1f, 0xba, 0xaf, 0xa2,
|
||||
0xf2, 0xd9, 0xa8, 0xfe, 0xb3, 0xb6, 0xb7, 0x41, 0x89, 0xcd, 0xcb, 0x74, 0x07, 0xec, 0x7c, 0x31,
|
||||
0x9b, 0x94, 0x8c, 0xa1, 0x97, 0xe9, 0xe4, 0xdf, 0x47, 0xb5, 0x80, 0x78, 0x99, 0xce, 0x01, 0xcc,
|
||||
0x2a, 0xa9, 0xed, 0xd5, 0x85, 0x28, 0x7e, 0x59, 0xcd, 0xe8, 0x48, 0x29, 0xb1, 0x4a, 0xb6, 0x29,
|
||||
0xd3, 0x79, 0x52, 0x26, 0x5f, 0x36, 0x1f, 0x2f, 0xe6, 0xf3, 0xb8, 0x5c, 0xa1, 0xce, 0x53, 0xba,
|
||||
0x36, 0x40, 0x74, 0x9e, 0x17, 0x34, 0x59, 0xa9, 0xfc, 0x88, 0x38, 0xb9, 0x3c, 0xe2, 0x25, 0x5f,
|
||||
0x88, 0x34, 0x67, 0x15, 0xca, 0x4a, 0xb0, 0xe0, 0x32, 0x44, 0x56, 0x52, 0xac, 0xa9, 0xe2, 0x24,
|
||||
0xa1, 0xde, 0xa3, 0x93, 0x5f, 0x85, 0xac, 0x04, 0x2f, 0xf1, 0x5d, 0x9e, 0xb2, 0x82, 0x21, 0xa2,
|
||||
0x8a, 0x23, 0x61, 0xd4, 0xf7, 0xa7, 0x69, 0x3e, 0xf3, 0xf6, 0x7d, 0x2d, 0x08, 0xf6, 0x3d, 0x00,
|
||||
0x66, 0x3e, 0x56, 0x0f, 0x4d, 0x7d, 0x7e, 0x06, 0x7e, 0xdb, 0xe7, 0x7d, 0xe8, 0x36, 0x41, 0xcc,
|
||||
0xc7, 0x7e, 0x12, 0xb9, 0x7a, 0x59, 0xb0, 0x9c, 0x4d, 0x9b, 0xb7, 0xc5, 0x7c, 0xae, 0x1c, 0x22,
|
||||
0xe8, 0x0a, 0x93, 0x26, 0x15, 0x5e, 0x30, 0x51, 0xa6, 0x49, 0x35, 0x66, 0xe2, 0x34, 0x2e, 0xe3,
|
||||
0x39, 0x13, 0xac, 0xc4, 0xa9, 0x00, 0xc8, 0xc8, 0x61, 0x88, 0x54, 0xa0, 0x58, 0x70, 0xf8, 0xbb,
|
||||
0xd1, 0xf7, 0xea, 0x99, 0x8b, 0xe5, 0xf0, 0x99, 0xea, 0x67, 0xf2, 0xfb, 0xf6, 0xc3, 0xf7, 0xb5,
|
||||
0x8d, 0xb1, 0x28, 0x59, 0x3c, 0x6f, 0x6c, 0xbf, 0xa7, 0xff, 0x2e, 0xc1, 0x87, 0x83, 0x7a, 0xde,
|
||||
0x3e, 0xe1, 0x22, 0x7d, 0x5b, 0x6f, 0x14, 0xe0, 0x52, 0x06, 0xcd, 0xdb, 0xb6, 0x78, 0x14, 0xf8,
|
||||
0x25, 0xb8, 0x8f, 0x33, 0x23, 0xd1, 0x96, 0x9e, 0xb1, 0x22, 0xc3, 0x23, 0xd1, 0xd1, 0x96, 0x00,
|
||||
0x31, 0x12, 0xbd, 0xa0, 0x59, 0x84, 0x6c, 0xf1, 0x84, 0x85, 0x1b, 0x33, 0x61, 0xfd, 0x1a, 0x33,
|
||||
0x71, 0x5e, 0x37, 0xaf, 0xf7, 0x50, 0x25, 0x8f, 0xa7, 0x49, 0x5c, 0x89, 0xd3, 0x78, 0x95, 0xf1,
|
||||
0x78, 0x2a, 0x1f, 0x26, 0xde, 0x43, 0x35, 0xcc, 0xc8, 0x86, 0xa8, 0x3d, 0x14, 0x05, 0x2b, 0x9f,
|
||||
0x4f, 0x3f, 0xfa, 0xdf, 0xaf, 0x37, 0x06, 0x5f, 0x7d, 0xbd, 0x31, 0xf8, 0xff, 0xaf, 0x37, 0x06,
|
||||
0xff, 0xf4, 0xcd, 0xc6, 0x3b, 0x5f, 0x7d, 0xb3, 0xf1, 0xce, 0xff, 0x7d, 0xb3, 0xf1, 0xce, 0x97,
|
||||
0xef, 0xc2, 0xbf, 0x86, 0x70, 0xfe, 0x0b, 0xf2, 0xdf, 0x34, 0x78, 0xfc, 0xf3, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xeb, 0xbf, 0x4d, 0x5d, 0x31, 0x61, 0x00, 0x00,
|
||||
// 4410 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x9d, 0xdd, 0x6f, 0x1d, 0x49,
|
||||
0x56, 0xc0, 0xe7, 0xbe, 0x30, 0xd0, 0xcb, 0x0e, 0x70, 0x17, 0x86, 0xd9, 0xb0, 0xeb, 0x64, 0x32,
|
||||
0x89, 0x9d, 0xc4, 0xf1, 0x75, 0x26, 0x99, 0x8f, 0x65, 0x17, 0x09, 0x39, 0x76, 0xec, 0x31, 0x9b,
|
||||
0x38, 0xc6, 0xd7, 0x49, 0xa4, 0x91, 0x90, 0x68, 0xf7, 0xad, 0x5c, 0x37, 0x6e, 0x77, 0xf5, 0x76,
|
||||
0xd7, 0xf5, 0x07, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x5f, 0x2f, 0x3c, 0x20, 0xf1, 0xa7,
|
||||
0xf0, 0xc4, 0xe3, 0x3c, 0x22, 0xf1, 0x82, 0x66, 0xfe, 0x91, 0x55, 0x57, 0x9f, 0xae, 0x8f, 0xd3,
|
||||
0xe7, 0x54, 0xf7, 0x9d, 0xa7, 0x19, 0xf9, 0xfc, 0xce, 0x47, 0x75, 0x9d, 0xaa, 0x3a, 0x55, 0xd5,
|
||||
0xb7, 0x13, 0xdd, 0x2c, 0x4e, 0x36, 0x8b, 0x52, 0x2a, 0x59, 0x6d, 0x56, 0xa2, 0xbc, 0x48, 0x13,
|
||||
0xd1, 0xfe, 0x77, 0xa2, 0xff, 0x3c, 0x7e, 0x37, 0xce, 0xaf, 0xd5, 0x75, 0x21, 0x6e, 0x7c, 0x60,
|
||||
0xc9, 0x44, 0x9e, 0x9f, 0xc7, 0xf9, 0xac, 0x6a, 0x90, 0x1b, 0xef, 0x5b, 0x89, 0xb8, 0x10, 0xb9,
|
||||
0x82, 0xbf, 0x3f, 0xfe, 0xbf, 0xff, 0x1e, 0x45, 0xef, 0x6d, 0x67, 0xa9, 0xc8, 0xd5, 0x36, 0x68,
|
||||
0x8c, 0xbf, 0x8c, 0xbe, 0xbb, 0x55, 0x14, 0x7b, 0x42, 0xbd, 0x16, 0x65, 0x95, 0xca, 0x7c, 0xfc,
|
||||
0xd1, 0x04, 0x1c, 0x4c, 0x8e, 0x8a, 0x64, 0xb2, 0x55, 0x14, 0x13, 0x2b, 0x9c, 0x1c, 0x89, 0x9f,
|
||||
0x2d, 0x44, 0xa5, 0x6e, 0xdc, 0x09, 0x43, 0x55, 0x21, 0xf3, 0x4a, 0x8c, 0xdf, 0x46, 0xbf, 0xb6,
|
||||
0x55, 0x14, 0x53, 0xa1, 0x76, 0x44, 0xdd, 0x80, 0xa9, 0x8a, 0x95, 0x18, 0xaf, 0x75, 0x54, 0x7d,
|
||||
0xc0, 0xf8, 0xb8, 0xd7, 0x0f, 0x82, 0x9f, 0xe3, 0xe8, 0x3b, 0xb5, 0x9f, 0xd3, 0x85, 0x9a, 0xc9,
|
||||
0xcb, 0x7c, 0xfc, 0x61, 0x57, 0x11, 0x44, 0xc6, 0xf6, 0xed, 0x10, 0x02, 0x56, 0xdf, 0x44, 0xbf,
|
||||
0xfc, 0x26, 0xce, 0x32, 0xa1, 0xb6, 0x4b, 0x51, 0x07, 0xee, 0xeb, 0x34, 0xa2, 0x49, 0x23, 0x33,
|
||||
0x76, 0x3f, 0x0a, 0x32, 0x60, 0xf8, 0xcb, 0xe8, 0xbb, 0x8d, 0xe4, 0x48, 0x24, 0xf2, 0x42, 0x94,
|
||||
0x63, 0x52, 0x0b, 0x84, 0xcc, 0x23, 0xef, 0x40, 0xd8, 0xf6, 0xb6, 0xcc, 0x2f, 0x44, 0xa9, 0x68,
|
||||
0xdb, 0x20, 0x0c, 0xdb, 0xb6, 0x10, 0xd8, 0xfe, 0xdb, 0x51, 0xf4, 0x83, 0xad, 0x24, 0x91, 0x8b,
|
||||
0x5c, 0x3d, 0x97, 0x49, 0x9c, 0x3d, 0x4f, 0xf3, 0xb3, 0x03, 0x71, 0xb9, 0x7d, 0x5a, 0xf3, 0xf9,
|
||||
0x5c, 0x8c, 0x9f, 0xf8, 0x4f, 0xb5, 0x41, 0x27, 0x86, 0x9d, 0xb8, 0xb0, 0xf1, 0xfd, 0xc9, 0x72,
|
||||
0x4a, 0x10, 0xcb, 0x3f, 0x8e, 0xa2, 0x15, 0x1c, 0xcb, 0x54, 0x66, 0x17, 0xc2, 0x46, 0xf3, 0x69,
|
||||
0x8f, 0x61, 0x1f, 0x37, 0xf1, 0x7c, 0xb6, 0xac, 0x1a, 0x44, 0x94, 0x45, 0xdf, 0x73, 0xd3, 0x65,
|
||||
0x2a, 0x2a, 0x3d, 0x9c, 0xee, 0xf3, 0x19, 0x01, 0x88, 0xf1, 0xfc, 0x60, 0x08, 0x0a, 0xde, 0xd2,
|
||||
0x68, 0x0c, 0xde, 0x32, 0x59, 0x19, 0x67, 0xf7, 0x48, 0x0b, 0x0e, 0x61, 0x7c, 0xdd, 0x1f, 0x40,
|
||||
0x82, 0xab, 0x3f, 0x8c, 0x7e, 0xe5, 0x8d, 0x2c, 0xcf, 0xaa, 0x22, 0x4e, 0x04, 0x0c, 0x85, 0xbb,
|
||||
0xbe, 0x76, 0x2b, 0xc5, 0xa3, 0x61, 0xb5, 0x0f, 0x73, 0x92, 0xb6, 0x15, 0xbe, 0x2c, 0x04, 0x9e,
|
||||
0x83, 0xac, 0x62, 0x2d, 0xe4, 0x92, 0x16, 0x43, 0x60, 0xfb, 0x2c, 0x1a, 0x5b, 0xdb, 0x27, 0x7f,
|
||||
0x24, 0x12, 0xb5, 0x35, 0x9b, 0xe1, 0x5e, 0xb1, 0xba, 0x9a, 0x98, 0x6c, 0xcd, 0x66, 0x5c, 0xaf,
|
||||
0xd0, 0x28, 0x38, 0xbb, 0x8c, 0xde, 0x47, 0xce, 0x9e, 0xa7, 0x95, 0x76, 0xb8, 0x11, 0xb6, 0x02,
|
||||
0x98, 0x71, 0x3a, 0x19, 0x8a, 0x83, 0xe3, 0x3f, 0x1f, 0x45, 0xdf, 0x27, 0x3c, 0x1f, 0x89, 0x73,
|
||||
0x79, 0x21, 0xc6, 0x8f, 0xfa, 0xad, 0x35, 0xa4, 0xf1, 0xff, 0xf1, 0x12, 0x1a, 0x44, 0x9a, 0x4c,
|
||||
0x45, 0x26, 0x12, 0xc5, 0xa6, 0x49, 0x23, 0xee, 0x4d, 0x13, 0x83, 0x39, 0x23, 0xac, 0x15, 0xee,
|
||||
0x09, 0xb5, 0xbd, 0x28, 0x4b, 0x91, 0x2b, 0xb6, 0x2f, 0x2d, 0xd2, 0xdb, 0x97, 0x1e, 0x4a, 0xb4,
|
||||
0x67, 0x4f, 0xa8, 0xad, 0x2c, 0x63, 0xdb, 0xd3, 0x88, 0x7b, 0xdb, 0x63, 0x30, 0xf0, 0x90, 0x44,
|
||||
0xbf, 0xea, 0x3c, 0x31, 0xb5, 0x9f, 0xbf, 0x95, 0x63, 0xfe, 0x59, 0x68, 0xb9, 0xf1, 0xb1, 0xd6,
|
||||
0xcb, 0x11, 0xcd, 0x78, 0x76, 0x55, 0xc8, 0x92, 0xef, 0x96, 0x46, 0xdc, 0xdb, 0x0c, 0x83, 0x81,
|
||||
0x87, 0x3f, 0x88, 0xde, 0x83, 0x59, 0xb2, 0x5d, 0xcf, 0xee, 0x90, 0x53, 0x28, 0x5e, 0xd0, 0xee,
|
||||
0xf6, 0x50, 0x76, 0x72, 0x00, 0x19, 0x4c, 0x3e, 0x1f, 0x91, 0x7a, 0x68, 0xea, 0xb9, 0x13, 0x86,
|
||||
0x3a, 0xb6, 0x77, 0x44, 0x26, 0x58, 0xdb, 0x8d, 0xb0, 0xc7, 0xb6, 0x81, 0xc0, 0x76, 0x19, 0xfd,
|
||||
0x86, 0x79, 0x2c, 0xf5, 0x3a, 0xaa, 0xe5, 0xf5, 0x24, 0xbd, 0xce, 0xb4, 0xdb, 0x85, 0x8c, 0xaf,
|
||||
0x87, 0xc3, 0xe0, 0x4e, 0x7b, 0x60, 0x04, 0xd2, 0xed, 0x41, 0xe3, 0xef, 0x4e, 0x18, 0x02, 0xdb,
|
||||
0x7f, 0x37, 0x8a, 0x7e, 0x08, 0xb2, 0x67, 0x79, 0x7c, 0x92, 0x09, 0xbd, 0x24, 0x1e, 0x08, 0x75,
|
||||
0x29, 0xcb, 0xb3, 0xe9, 0x75, 0x9e, 0x30, 0xcb, 0x3f, 0x0d, 0xf7, 0x2c, 0xff, 0xac, 0x92, 0x53,
|
||||
0xf1, 0x41, 0x43, 0x95, 0x2c, 0x70, 0xc5, 0xd7, 0xb6, 0x40, 0xc9, 0x82, 0xab, 0xf8, 0x7c, 0xa4,
|
||||
0x63, 0xf5, 0x45, 0x3d, 0x6d, 0xd2, 0x56, 0x5f, 0xb8, 0xf3, 0xe4, 0xed, 0x10, 0x62, 0xa7, 0xad,
|
||||
0x36, 0x81, 0x65, 0xfe, 0x36, 0x9d, 0xbf, 0x2a, 0x66, 0x75, 0x1a, 0xdf, 0xa7, 0x33, 0xd4, 0x41,
|
||||
0x98, 0x69, 0x8b, 0x41, 0xc1, 0xdb, 0x3f, 0xd8, 0xc2, 0x08, 0x86, 0xd2, 0x6e, 0x29, 0xcf, 0x9f,
|
||||
0x8b, 0x79, 0x9c, 0x5c, 0xc3, 0xf8, 0xff, 0x24, 0x34, 0xf0, 0x30, 0x6d, 0x82, 0xf8, 0x74, 0x49,
|
||||
0x2d, 0x88, 0xe7, 0x3f, 0x47, 0xd1, 0x9d, 0xb6, 0xf9, 0xa7, 0x71, 0x3e, 0x17, 0xd0, 0x9f, 0x4d,
|
||||
0xf4, 0x5b, 0xf9, 0xec, 0x48, 0x54, 0x2a, 0x2e, 0xd5, 0xf8, 0xc7, 0x74, 0x23, 0x43, 0x3a, 0x26,
|
||||
0xb6, 0x9f, 0x7c, 0x2b, 0x5d, 0xdb, 0xeb, 0xd3, 0x7a, 0x62, 0x83, 0x29, 0xc0, 0xef, 0x75, 0x2d,
|
||||
0xc1, 0x13, 0xc0, 0xed, 0x10, 0x62, 0x7b, 0x5d, 0x0b, 0xf6, 0xf3, 0x8b, 0x54, 0x89, 0x3d, 0x91,
|
||||
0x8b, 0xb2, 0xdb, 0xeb, 0x8d, 0xaa, 0x8f, 0x30, 0xbd, 0xce, 0xa0, 0x76, 0xb2, 0xf1, 0xbc, 0x99,
|
||||
0xc5, 0x71, 0x3d, 0x60, 0xa4, 0xb3, 0x3c, 0x3e, 0x1c, 0x06, 0xdb, 0xdd, 0x9d, 0xe3, 0xf3, 0x48,
|
||||
0x5c, 0xc8, 0x33, 0xbc, 0xbb, 0x73, 0x4d, 0x34, 0x00, 0xb3, 0xbb, 0x23, 0x41, 0xbb, 0x82, 0x39,
|
||||
0x7e, 0x5e, 0xa7, 0xe2, 0x12, 0xad, 0x60, 0xae, 0x72, 0x2d, 0x66, 0x56, 0x30, 0x02, 0x03, 0x0f,
|
||||
0x07, 0xd1, 0x2f, 0x69, 0xe1, 0xef, 0xc9, 0x34, 0x1f, 0xdf, 0x24, 0x94, 0x6a, 0x81, 0xb1, 0x7a,
|
||||
0x8b, 0x07, 0x50, 0xc4, 0xf5, 0x5f, 0xb7, 0xe3, 0x3c, 0x11, 0x19, 0x19, 0xb1, 0x15, 0x07, 0x23,
|
||||
0xf6, 0x30, 0x14, 0xf1, 0xb3, 0xab, 0x54, 0x91, 0x11, 0xd7, 0x82, 0x60, 0xc4, 0x00, 0xd8, 0x52,
|
||||
0x44, 0xff, 0xb9, 0x9e, 0x0f, 0xa7, 0xa7, 0x71, 0x99, 0xe6, 0xf3, 0x31, 0x15, 0x8b, 0x23, 0x67,
|
||||
0x4a, 0x11, 0x8a, 0x43, 0x43, 0x02, 0x14, 0xb7, 0x8a, 0xa2, 0xac, 0xa7, 0x59, 0x6a, 0x48, 0xf8,
|
||||
0x48, 0x70, 0x48, 0x74, 0x50, 0xda, 0xdb, 0x8e, 0x48, 0xb2, 0x34, 0x0f, 0x7a, 0x03, 0x64, 0x88,
|
||||
0x37, 0x8b, 0x82, 0xb7, 0x45, 0xf4, 0xbe, 0x06, 0x0e, 0xe3, 0x52, 0xa5, 0x49, 0x5a, 0xc4, 0x79,
|
||||
0x5b, 0x7c, 0x53, 0x83, 0xaa, 0x43, 0x19, 0x9f, 0x1b, 0x03, 0x69, 0x70, 0xfb, 0xef, 0xa3, 0xe8,
|
||||
0x43, 0xec, 0xf7, 0x50, 0x94, 0xe7, 0xa9, 0xde, 0xc3, 0x55, 0xcd, 0x0c, 0x38, 0xfe, 0x3c, 0x6c,
|
||||
0xb4, 0xa3, 0x60, 0xa2, 0xf9, 0xd1, 0xf2, 0x8a, 0x10, 0xd8, 0xef, 0x47, 0x51, 0xb3, 0x57, 0xd0,
|
||||
0xfb, 0x39, 0x3f, 0x01, 0x61, 0x13, 0xe1, 0x6d, 0xe6, 0x3e, 0x0c, 0x10, 0x76, 0x9e, 0x6e, 0xfe,
|
||||
0xae, 0xb7, 0xa9, 0x63, 0x52, 0x43, 0x8b, 0x98, 0x79, 0x1a, 0x21, 0x38, 0xd0, 0xe9, 0xa9, 0xbc,
|
||||
0xa4, 0x03, 0xad, 0x25, 0xe1, 0x40, 0x81, 0xb0, 0x07, 0x47, 0x10, 0x28, 0x75, 0x70, 0xd4, 0x86,
|
||||
0x11, 0x3a, 0x38, 0xc2, 0x0c, 0x18, 0x96, 0xd1, 0xaf, 0xbb, 0x86, 0x9f, 0x4a, 0x79, 0x76, 0x1e,
|
||||
0x97, 0x67, 0xe3, 0x07, 0xbc, 0x72, 0xcb, 0x18, 0x47, 0xeb, 0x83, 0x58, 0x3b, 0x86, 0x5c, 0x87,
|
||||
0xf5, 0x2a, 0xff, 0xaa, 0xcc, 0xd0, 0x18, 0xf2, 0x6c, 0x00, 0xc2, 0x8c, 0x21, 0x06, 0xb5, 0xd3,
|
||||
0xa6, 0xeb, 0x6d, 0x2a, 0xf0, 0x56, 0xc5, 0x53, 0x9f, 0x0a, 0x6e, 0xab, 0x42, 0x60, 0x38, 0x85,
|
||||
0xf6, 0xca, 0xb8, 0x38, 0xa5, 0x53, 0x48, 0x8b, 0xc2, 0x29, 0xd4, 0x22, 0xb8, 0xbf, 0xa7, 0x22,
|
||||
0x2e, 0x93, 0x53, 0xba, 0xbf, 0x1b, 0x59, 0xb8, 0xbf, 0x0d, 0x63, 0x57, 0x75, 0xd7, 0xf0, 0x74,
|
||||
0x71, 0x52, 0x25, 0x65, 0x7a, 0x22, 0xc6, 0xeb, 0xbc, 0xb6, 0x81, 0x98, 0x55, 0x9d, 0x85, 0xed,
|
||||
0xc1, 0x12, 0xf8, 0x6c, 0x65, 0xfb, 0xb3, 0x0a, 0x1d, 0x2c, 0xb5, 0x36, 0x1c, 0x82, 0x39, 0x58,
|
||||
0xa2, 0x49, 0xdc, 0xbc, 0xbd, 0x52, 0x2e, 0x8a, 0xaa, 0xa7, 0x79, 0x08, 0x0a, 0x37, 0xaf, 0x0b,
|
||||
0x83, 0xcf, 0xab, 0xe8, 0x37, 0xdd, 0x47, 0xfa, 0x2a, 0xaf, 0x8c, 0xd7, 0x0d, 0xfe, 0x39, 0x39,
|
||||
0x18, 0x73, 0x44, 0x13, 0xc0, 0xed, 0x12, 0xdb, 0x7a, 0x56, 0x3b, 0x42, 0xc5, 0x69, 0x56, 0x8d,
|
||||
0x57, 0x69, 0x1b, 0xad, 0x9c, 0x59, 0x62, 0x29, 0x0e, 0x0f, 0xa1, 0x9d, 0x45, 0x91, 0xa5, 0x49,
|
||||
0xf7, 0xac, 0x0e, 0x74, 0x8d, 0x38, 0x3c, 0x84, 0x5c, 0x0c, 0x4f, 0x09, 0x53, 0xa1, 0x9a, 0xff,
|
||||
0x39, 0xbe, 0x2e, 0x04, 0x3d, 0x25, 0x78, 0x48, 0x78, 0x4a, 0xc0, 0x28, 0x6e, 0xcf, 0x54, 0xa8,
|
||||
0xe7, 0xf1, 0xb5, 0x5c, 0x30, 0x53, 0x82, 0x11, 0x87, 0xdb, 0xe3, 0x62, 0x76, 0xe1, 0x36, 0x1e,
|
||||
0xf6, 0x73, 0x25, 0xca, 0x3c, 0xce, 0x76, 0xb3, 0x78, 0x5e, 0x8d, 0x99, 0x71, 0xe3, 0x53, 0xcc,
|
||||
0xc2, 0xcd, 0xd3, 0xc4, 0x63, 0xdc, 0xaf, 0x76, 0xe3, 0x0b, 0x59, 0xa6, 0x8a, 0x7f, 0x8c, 0x16,
|
||||
0xe9, 0x7d, 0x8c, 0x1e, 0x4a, 0x7a, 0xdb, 0x2a, 0x93, 0xd3, 0xf4, 0x42, 0xcc, 0x02, 0xde, 0x5a,
|
||||
0x64, 0x80, 0x37, 0x07, 0x25, 0x3a, 0x6d, 0x2a, 0x17, 0x65, 0x22, 0xd8, 0x4e, 0x6b, 0xc4, 0xbd,
|
||||
0x9d, 0x66, 0x30, 0xf0, 0xf0, 0x57, 0xa3, 0xe8, 0xb7, 0x1a, 0xa9, 0x7b, 0x80, 0xb6, 0x13, 0x57,
|
||||
0xa7, 0x27, 0x32, 0x2e, 0x67, 0xe3, 0x8f, 0x29, 0x3b, 0x24, 0x6a, 0x5c, 0x3f, 0x5e, 0x46, 0x05,
|
||||
0x3f, 0xd6, 0xe7, 0x69, 0xe5, 0x8c, 0x38, 0xf2, 0xb1, 0x7a, 0x48, 0xf8, 0xb1, 0x62, 0x14, 0x4f,
|
||||
0x20, 0x5a, 0xde, 0x6c, 0x56, 0x57, 0x59, 0x7d, 0x7f, 0xc7, 0xba, 0xd6, 0xcb, 0xe1, 0xf9, 0xb1,
|
||||
0x16, 0xfa, 0xd9, 0xb2, 0xc1, 0xd9, 0xa0, 0x33, 0x66, 0x32, 0x14, 0x67, 0x3d, 0x9b, 0x51, 0x11,
|
||||
0xf6, 0xdc, 0x19, 0x19, 0x93, 0xa1, 0x38, 0xe3, 0xd9, 0x99, 0xd6, 0x42, 0x9e, 0x89, 0xa9, 0x6d,
|
||||
0x32, 0x14, 0xc7, 0x09, 0xb4, 0x55, 0x14, 0xd9, 0xf5, 0xb1, 0x38, 0x2f, 0x32, 0x36, 0x81, 0x3c,
|
||||
0x24, 0x9c, 0x40, 0x18, 0xc5, 0xd5, 0xcf, 0xb1, 0xac, 0x6b, 0x2b, 0xb2, 0xfa, 0xd1, 0xa2, 0x70,
|
||||
0xf5, 0xd3, 0x22, 0xb8, 0x60, 0x38, 0x96, 0xdb, 0x32, 0xcb, 0x44, 0xa2, 0xba, 0x37, 0x51, 0x46,
|
||||
0xd3, 0x12, 0xe1, 0x82, 0x01, 0x91, 0xf6, 0xc4, 0xa1, 0xad, 0xd5, 0xe3, 0x52, 0x3c, 0xbd, 0x7e,
|
||||
0x9e, 0xe6, 0x67, 0x63, 0x7a, 0x6d, 0xb4, 0x00, 0x73, 0xe2, 0x40, 0x82, 0x78, 0x4f, 0xf0, 0x2a,
|
||||
0x9f, 0x49, 0x7a, 0x4f, 0x50, 0x4b, 0xc2, 0x7b, 0x02, 0x20, 0xb0, 0xc9, 0x23, 0xc1, 0x99, 0xac,
|
||||
0x25, 0x61, 0x93, 0x40, 0x50, 0xf3, 0x01, 0x1c, 0xed, 0xb1, 0xf3, 0x01, 0x3a, 0xcc, 0x5b, 0xeb,
|
||||
0xe5, 0x70, 0x86, 0xb6, 0x9b, 0x83, 0x5d, 0xa1, 0x92, 0x53, 0x3a, 0x43, 0x3d, 0x24, 0x9c, 0xa1,
|
||||
0x18, 0xc5, 0x4d, 0x3a, 0x96, 0x66, 0x73, 0xb3, 0x4a, 0xe7, 0x47, 0x67, 0x63, 0xb3, 0xd6, 0xcb,
|
||||
0xe1, 0x72, 0x7d, 0xff, 0x5c, 0x3f, 0x33, 0x32, 0xc9, 0x1b, 0x59, 0xb8, 0x5c, 0x37, 0x0c, 0x8e,
|
||||
0xbe, 0x11, 0xd4, 0x8f, 0x93, 0x8e, 0xde, 0xca, 0xc3, 0xd1, 0x7b, 0x1c, 0x38, 0xf9, 0xd7, 0x51,
|
||||
0x74, 0xd3, 0xf5, 0x72, 0x20, 0xeb, 0x31, 0xf2, 0x3a, 0xce, 0xd2, 0x59, 0xac, 0xc4, 0xb1, 0x3c,
|
||||
0x13, 0x39, 0xda, 0xef, 0xfb, 0xd1, 0x36, 0xfc, 0xc4, 0x53, 0x60, 0xf6, 0xfb, 0x83, 0x14, 0x71,
|
||||
0x9e, 0x34, 0xf4, 0xab, 0x4a, 0x6c, 0xc7, 0x15, 0x33, 0x93, 0x79, 0x48, 0x38, 0x4f, 0x30, 0x8a,
|
||||
0x8b, 0xb6, 0x46, 0xfe, 0xec, 0xaa, 0x10, 0x65, 0x2a, 0xf2, 0x44, 0xd0, 0x45, 0x1b, 0xa6, 0xc2,
|
||||
0x45, 0x1b, 0x41, 0x77, 0xb6, 0xc3, 0x66, 0x72, 0xea, 0x5e, 0x26, 0x63, 0x22, 0x70, 0x99, 0xcc,
|
||||
0xa0, 0xb8, 0x91, 0x16, 0x20, 0x8f, 0x94, 0x3a, 0x56, 0x82, 0x47, 0x4a, 0x3c, 0xdd, 0x39, 0x64,
|
||||
0x30, 0xcc, 0xb4, 0x1e, 0x26, 0x3d, 0xa1, 0x4f, 0xdd, 0xe1, 0xb2, 0x3e, 0x88, 0xa5, 0x4f, 0x35,
|
||||
0x8e, 0x44, 0x16, 0xeb, 0x25, 0x24, 0x70, 0x74, 0xd0, 0x32, 0x43, 0x4e, 0x35, 0x1c, 0x16, 0x1c,
|
||||
0xfe, 0xc5, 0x28, 0xba, 0x41, 0x79, 0x7c, 0x59, 0x68, 0xbf, 0x8f, 0xfa, 0x6d, 0x35, 0x24, 0x73,
|
||||
0x5b, 0x1e, 0xd6, 0x80, 0x18, 0xfe, 0x24, 0xfa, 0xa0, 0x15, 0xd9, 0xcb, 0x74, 0x08, 0xc0, 0xaf,
|
||||
0x22, 0x4c, 0xfc, 0x98, 0x33, 0xee, 0x37, 0x07, 0xf3, 0xb6, 0x40, 0xf7, 0xe3, 0xaa, 0x50, 0x81,
|
||||
0x6e, 0x6c, 0x80, 0x98, 0x29, 0xd0, 0x09, 0x0c, 0xaf, 0xd4, 0x2d, 0x52, 0x8f, 0x13, 0x6a, 0x8e,
|
||||
0x33, 0x26, 0xdc, 0x51, 0x72, 0xaf, 0x1f, 0xc4, 0xb9, 0xd3, 0x8a, 0xa1, 0x2e, 0x7e, 0x10, 0xb2,
|
||||
0x80, 0x6a, 0xe3, 0xf5, 0x41, 0x2c, 0x38, 0xfc, 0xb3, 0xe8, 0xfb, 0x9d, 0x86, 0xed, 0x8a, 0x58,
|
||||
0x2d, 0x4a, 0x31, 0x1b, 0x6f, 0xf6, 0xc4, 0xdd, 0x82, 0xc6, 0xf5, 0xa3, 0xe1, 0x0a, 0xe0, 0xff,
|
||||
0x6f, 0x46, 0xd1, 0x0f, 0x7c, 0xae, 0xe9, 0x62, 0x13, 0xc3, 0xe3, 0x90, 0x49, 0x9f, 0x35, 0x61,
|
||||
0x3c, 0x59, 0x4a, 0xa7, 0xb3, 0x07, 0x73, 0x13, 0x79, 0xeb, 0x22, 0x4e, 0xb3, 0xf8, 0x24, 0x13,
|
||||
0xe4, 0x1e, 0xcc, 0xcb, 0x4d, 0x83, 0x06, 0xf7, 0x60, 0xac, 0x4a, 0x67, 0x96, 0xd4, 0xe3, 0xcd,
|
||||
0xa9, 0xdd, 0x1f, 0xf2, 0xa3, 0x92, 0x28, 0xdd, 0x37, 0x06, 0xd2, 0xe0, 0x56, 0xb5, 0x67, 0x57,
|
||||
0xf5, 0x9f, 0xdd, 0x24, 0xa7, 0xbc, 0x82, 0x2a, 0x91, 0xe9, 0x1b, 0x03, 0x69, 0xf0, 0xfa, 0xa7,
|
||||
0xd1, 0x07, 0x5d, 0xaf, 0xb0, 0x28, 0x6c, 0xf6, 0x9a, 0x42, 0xeb, 0xc2, 0xa3, 0xe1, 0x0a, 0xb6,
|
||||
0xd4, 0xff, 0x22, 0xad, 0x94, 0x2c, 0xaf, 0xa7, 0xa7, 0xf2, 0xb2, 0x7d, 0x61, 0xd4, 0x1f, 0xad,
|
||||
0x00, 0x4c, 0x1c, 0x82, 0x29, 0xf5, 0x69, 0xb2, 0xe3, 0xca, 0xbe, 0x58, 0x5a, 0x31, 0xae, 0x1c,
|
||||
0xa2, 0xc7, 0x95, 0x4f, 0xda, 0xb9, 0xaa, 0x6d, 0x95, 0x7d, 0x0b, 0x76, 0x8d, 0x0e, 0xb5, 0xfb,
|
||||
0x26, 0xec, 0xbd, 0x7e, 0xd0, 0x6e, 0xbf, 0x76, 0xd3, 0x4c, 0xbc, 0x7c, 0xfb, 0x36, 0x93, 0xf1,
|
||||
0x0c, 0x6d, 0xbf, 0x6a, 0xc9, 0x04, 0x44, 0xcc, 0xf6, 0x0b, 0x21, 0xb6, 0xe8, 0xac, 0x05, 0xfa,
|
||||
0x6e, 0xa6, 0x35, 0xbd, 0xda, 0xd5, 0x73, 0xe5, 0x4c, 0xd1, 0x49, 0x71, 0x76, 0xc1, 0xa8, 0xa5,
|
||||
0xf5, 0x10, 0x6c, 0x7d, 0xdc, 0xed, 0xea, 0x3a, 0x62, 0x66, 0xc1, 0x20, 0x30, 0xbb, 0x3f, 0xaa,
|
||||
0x85, 0xaf, 0x0a, 0x6d, 0xfc, 0x56, 0x57, 0xab, 0x91, 0x30, 0xfb, 0x23, 0x9f, 0xb0, 0x75, 0x7e,
|
||||
0xfd, 0xf7, 0x1d, 0x79, 0x99, 0x6b, 0xa3, 0xc4, 0xd3, 0x6c, 0x65, 0x4c, 0x9d, 0x8f, 0x19, 0x30,
|
||||
0xfc, 0xd3, 0xe8, 0x17, 0xb5, 0xe1, 0x52, 0x16, 0xe3, 0x15, 0x42, 0xa1, 0x74, 0x5e, 0x3b, 0xb9,
|
||||
0xc9, 0xca, 0xed, 0xdb, 0x53, 0xa6, 0xff, 0x5e, 0x55, 0xf1, 0x5c, 0xa0, 0xb7, 0xa7, 0x6c, 0xaf,
|
||||
0x68, 0x29, 0xf3, 0xf6, 0x54, 0x97, 0xb2, 0x6f, 0x04, 0xd5, 0xb2, 0x03, 0x39, 0x03, 0xeb, 0x44,
|
||||
0x0b, 0x8d, 0x90, 0x79, 0x23, 0xa8, 0x03, 0xd9, 0xf3, 0xfb, 0x83, 0xf8, 0x22, 0x9d, 0x9b, 0xc9,
|
||||
0xbf, 0x99, 0x43, 0x2a, 0x74, 0x7e, 0x6f, 0x99, 0x89, 0x03, 0x31, 0xe7, 0xf7, 0x2c, 0x0c, 0x3e,
|
||||
0xff, 0x65, 0x14, 0xdd, 0xb2, 0xcc, 0x5e, 0x7b, 0xac, 0xb2, 0x9f, 0xbf, 0x95, 0x6f, 0x52, 0x75,
|
||||
0x5a, 0xef, 0xe3, 0xab, 0xf1, 0x67, 0x9c, 0x49, 0x9a, 0x37, 0xa1, 0x7c, 0xbe, 0xb4, 0x9e, 0xad,
|
||||
0xe6, 0xda, 0xe3, 0x16, 0x7b, 0xb7, 0xd5, 0x68, 0xa0, 0x6a, 0xce, 0x9c, 0xca, 0x60, 0x8e, 0xa9,
|
||||
0xe6, 0x42, 0xbc, 0xed, 0x62, 0xe3, 0x3c, 0x93, 0x39, 0xee, 0x62, 0x6b, 0xa1, 0x16, 0x32, 0x5d,
|
||||
0xdc, 0x81, 0xec, 0xdc, 0xd8, 0x8a, 0x9a, 0x93, 0x81, 0xad, 0x2c, 0x43, 0x73, 0xa3, 0x51, 0x35,
|
||||
0x00, 0x33, 0x37, 0x92, 0x20, 0xf8, 0x39, 0x8a, 0xbe, 0x53, 0x3f, 0xd2, 0xc3, 0x52, 0x5c, 0xa4,
|
||||
0x02, 0x5f, 0xc3, 0x3a, 0x12, 0x66, 0xfc, 0xfb, 0x84, 0x1d, 0x59, 0xaf, 0xf2, 0xaa, 0xc8, 0xe2,
|
||||
0xea, 0x14, 0x2e, 0xe6, 0xfc, 0x36, 0xb7, 0x42, 0x7c, 0x35, 0x77, 0xb7, 0x87, 0xb2, 0x13, 0x6f,
|
||||
0x2b, 0x33, 0x53, 0xcc, 0x2a, 0xad, 0xda, 0x99, 0x66, 0xd6, 0x7a, 0x39, 0x7b, 0x34, 0xb9, 0x17,
|
||||
0x67, 0x99, 0x28, 0xaf, 0x5b, 0xd9, 0x8b, 0x38, 0x4f, 0xdf, 0x8a, 0x4a, 0xa1, 0xa3, 0x49, 0xa0,
|
||||
0x26, 0x18, 0x63, 0x8e, 0x26, 0x03, 0xb8, 0xad, 0xac, 0x91, 0xe7, 0xfd, 0x7c, 0x26, 0xae, 0x50,
|
||||
0x65, 0x8d, 0xed, 0x68, 0x86, 0xa9, 0xac, 0x39, 0xd6, 0x2e, 0x8f, 0x4f, 0x33, 0x99, 0x9c, 0xc1,
|
||||
0x12, 0xe0, 0x77, 0xb0, 0x96, 0xe0, 0x35, 0xe0, 0x76, 0x08, 0xb1, 0x8b, 0x80, 0x16, 0x1c, 0x89,
|
||||
0x22, 0x8b, 0x13, 0x7c, 0x17, 0xdf, 0xe8, 0x80, 0x8c, 0x59, 0x04, 0x30, 0x83, 0xc2, 0x85, 0x3b,
|
||||
0x7e, 0x2a, 0x5c, 0x74, 0xc5, 0x7f, 0x3b, 0x84, 0xd8, 0x65, 0x50, 0x0b, 0xa6, 0x45, 0x96, 0x2a,
|
||||
0x34, 0x0c, 0x1a, 0x0d, 0x2d, 0x61, 0x86, 0x81, 0x4f, 0x20, 0x93, 0x2f, 0x44, 0x39, 0x17, 0xa4,
|
||||
0x49, 0x2d, 0x09, 0x9a, 0x6c, 0x09, 0xfb, 0xf6, 0x51, 0xd3, 0x76, 0x59, 0x5c, 0xa3, 0xb7, 0x8f,
|
||||
0xa0, 0x59, 0xb2, 0xb8, 0x66, 0xde, 0x3e, 0xf2, 0x00, 0x14, 0xe2, 0x61, 0x5c, 0x29, 0x3a, 0x44,
|
||||
0x2d, 0x09, 0x86, 0xd8, 0x12, 0x76, 0x8d, 0x6e, 0x42, 0x5c, 0x28, 0xb4, 0x46, 0x43, 0x00, 0xce,
|
||||
0x55, 0xe1, 0x4d, 0x56, 0x6e, 0x67, 0x92, 0xa6, 0x57, 0x84, 0xda, 0x4d, 0x45, 0x36, 0xab, 0xd0,
|
||||
0x4c, 0x02, 0xcf, 0xbd, 0x95, 0x32, 0x33, 0x49, 0x97, 0x42, 0xa9, 0x04, 0x67, 0xb8, 0x54, 0xeb,
|
||||
0xd0, 0xf1, 0xed, 0xed, 0x10, 0x62, 0xe7, 0xa7, 0x36, 0xe8, 0xed, 0xb8, 0x2c, 0xd3, 0x7a, 0xf1,
|
||||
0x5f, 0xa5, 0x03, 0x6a, 0xe5, 0xcc, 0xfc, 0x44, 0x71, 0x68, 0x78, 0xb5, 0x13, 0x37, 0x15, 0x18,
|
||||
0x9e, 0xba, 0x3f, 0x0a, 0x32, 0xb6, 0xe2, 0xd4, 0x12, 0xe7, 0xae, 0x8b, 0x7a, 0x9a, 0xc4, 0x55,
|
||||
0xd7, 0x6a, 0x1f, 0xe6, 0xbc, 0xcf, 0x6c, 0x5c, 0xbc, 0x90, 0x17, 0xe2, 0x58, 0x3e, 0xbb, 0x4a,
|
||||
0x2b, 0x95, 0xe6, 0x73, 0x58, 0xb9, 0x9f, 0x30, 0x96, 0x28, 0x98, 0x79, 0x9f, 0xb9, 0x57, 0xc9,
|
||||
0x16, 0x10, 0x28, 0x96, 0x03, 0x71, 0x49, 0x16, 0x10, 0xd8, 0xa2, 0xe1, 0x98, 0x02, 0x22, 0xc4,
|
||||
0xdb, 0x33, 0x0d, 0xe3, 0x1c, 0x7e, 0xf4, 0x75, 0x2c, 0xdb, 0x5a, 0x8e, 0xb3, 0x86, 0x41, 0x66,
|
||||
0x5b, 0x19, 0x54, 0xb0, 0x7b, 0x3d, 0xe3, 0xdf, 0x0e, 0xb1, 0x7b, 0x8c, 0x9d, 0xee, 0x30, 0xbb,
|
||||
0x3f, 0x80, 0x24, 0x5c, 0xd9, 0x0b, 0x5b, 0xce, 0x55, 0xf7, 0xbe, 0xf6, 0xfe, 0x00, 0xd2, 0x39,
|
||||
0x1f, 0x71, 0x9b, 0xf5, 0x34, 0x4e, 0xce, 0xe6, 0xa5, 0x5c, 0xe4, 0xb3, 0x6d, 0x99, 0xc9, 0x12,
|
||||
0x9d, 0x8f, 0x78, 0x51, 0x23, 0x94, 0x39, 0x1f, 0xe9, 0x51, 0xb1, 0x15, 0x9c, 0x1b, 0xc5, 0x56,
|
||||
0x96, 0xce, 0xf1, 0xee, 0xd6, 0x33, 0xa4, 0x01, 0xa6, 0x82, 0x23, 0x41, 0x22, 0x89, 0x9a, 0xdd,
|
||||
0xaf, 0x4a, 0x93, 0x38, 0x6b, 0xfc, 0x6d, 0xf2, 0x66, 0x3c, 0xb0, 0x37, 0x89, 0x08, 0x05, 0xa2,
|
||||
0x9d, 0xc7, 0x8b, 0x32, 0xdf, 0xcf, 0x95, 0x64, 0xdb, 0xd9, 0x02, 0xbd, 0xed, 0x74, 0x40, 0x34,
|
||||
0xad, 0x1e, 0x8b, 0xab, 0x3a, 0x9a, 0xfa, 0x3f, 0xd4, 0xb4, 0x5a, 0xff, 0x7d, 0x02, 0xf2, 0xd0,
|
||||
0xb4, 0x8a, 0x38, 0xd4, 0x18, 0x70, 0xd2, 0x24, 0x4c, 0x40, 0xdb, 0x4f, 0x93, 0x7b, 0xfd, 0x20,
|
||||
0xed, 0x67, 0xaa, 0xae, 0x33, 0x11, 0xf2, 0xa3, 0x81, 0x21, 0x7e, 0x5a, 0xd0, 0x5e, 0x9c, 0x78,
|
||||
0xed, 0x39, 0x15, 0xc9, 0x59, 0xe7, 0xfd, 0x13, 0x3f, 0xd0, 0x06, 0x61, 0x2e, 0x4e, 0x18, 0x94,
|
||||
0xee, 0xa2, 0xfd, 0x44, 0xe6, 0xa1, 0x2e, 0xaa, 0xe5, 0x43, 0xba, 0x08, 0x38, 0xbb, 0xf9, 0x35,
|
||||
0x52, 0xc8, 0xcc, 0xa6, 0x9b, 0xd6, 0x19, 0x0b, 0x2e, 0xc4, 0x6c, 0x7e, 0x59, 0xd8, 0xd6, 0xe4,
|
||||
0xd8, 0xe7, 0x8b, 0xee, 0xfb, 0x9f, 0x1d, 0x2b, 0x2f, 0xf8, 0xf7, 0x3f, 0x39, 0x96, 0x6f, 0x64,
|
||||
0x93, 0x23, 0x3d, 0x56, 0xfc, 0x3c, 0x79, 0x38, 0x0c, 0xb6, 0x5b, 0x1e, 0xcf, 0xe7, 0x76, 0x26,
|
||||
0xe2, 0xb2, 0xf1, 0xba, 0x11, 0x30, 0x64, 0x31, 0x66, 0xcb, 0x13, 0xc0, 0xd1, 0x14, 0xe6, 0x79,
|
||||
0xde, 0x96, 0xb9, 0x12, 0xb9, 0xa2, 0xa6, 0x30, 0xdf, 0x18, 0x80, 0xa1, 0x29, 0x8c, 0x53, 0x40,
|
||||
0x79, 0xab, 0xcf, 0x83, 0x84, 0x3a, 0x88, 0xcf, 0xc9, 0x8a, 0xad, 0x39, 0xeb, 0x69, 0xe4, 0xa1,
|
||||
0xbc, 0x45, 0x1c, 0x1a, 0xf2, 0xfb, 0xe7, 0xf1, 0xdc, 0x78, 0x21, 0xb4, 0xb5, 0xbc, 0xe3, 0xe6,
|
||||
0x5e, 0x3f, 0x88, 0xfc, 0xbc, 0x4e, 0x67, 0x42, 0x06, 0xfc, 0x68, 0xf9, 0x10, 0x3f, 0x18, 0x44,
|
||||
0x95, 0x53, 0xdd, 0xda, 0x66, 0x37, 0xb5, 0x95, 0xcf, 0x60, 0x0f, 0x39, 0x61, 0x1e, 0x0a, 0xe2,
|
||||
0x42, 0x95, 0x13, 0xc3, 0xa3, 0xf1, 0xd1, 0x1e, 0x8e, 0x86, 0xc6, 0x87, 0x39, 0xfb, 0x1c, 0x32,
|
||||
0x3e, 0x28, 0x18, 0x7c, 0xfe, 0x31, 0x8c, 0x8f, 0x9d, 0x58, 0xc5, 0x75, 0xcd, 0xfc, 0x3a, 0x15,
|
||||
0x97, 0xb0, 0x09, 0x25, 0xda, 0xdb, 0x52, 0x13, 0xfd, 0x8b, 0x17, 0xb4, 0x23, 0xdd, 0x1c, 0xcc,
|
||||
0x07, 0x7c, 0x43, 0x75, 0xde, 0xeb, 0x1b, 0x95, 0xe9, 0x9b, 0x83, 0xf9, 0x80, 0x6f, 0xf8, 0x29,
|
||||
0x5d, 0xaf, 0x6f, 0xf4, 0x7b, 0xba, 0xcd, 0xc1, 0x3c, 0xf8, 0xfe, 0xcb, 0x51, 0x74, 0xa3, 0xe3,
|
||||
0xbc, 0xae, 0x81, 0x12, 0x95, 0x5e, 0x08, 0xaa, 0x94, 0xf3, 0xed, 0x19, 0x34, 0x54, 0xca, 0xf1,
|
||||
0x2a, 0xce, 0xf7, 0x17, 0xa8, 0x28, 0x0e, 0x65, 0x95, 0xea, 0x8b, 0xe3, 0x27, 0x03, 0x8c, 0xb6,
|
||||
0x70, 0x68, 0xc3, 0x12, 0x52, 0xb2, 0xd7, 0x6e, 0x1e, 0x6a, 0x5f, 0xf5, 0x7c, 0x18, 0xb0, 0xd7,
|
||||
0x7d, 0xe3, 0x73, 0x63, 0x20, 0x6d, 0x2f, 0xc0, 0x3c, 0xc6, 0xbd, 0x79, 0x0b, 0xf5, 0x2a, 0x79,
|
||||
0xf9, 0xf6, 0x68, 0xb8, 0x02, 0xb8, 0xff, 0xeb, 0xb6, 0xa6, 0xc7, 0xfe, 0x61, 0x10, 0x3c, 0x1e,
|
||||
0x62, 0x11, 0x0d, 0x84, 0x27, 0x4b, 0xe9, 0x40, 0x20, 0xff, 0x31, 0x8a, 0x6e, 0x93, 0x81, 0xf8,
|
||||
0x77, 0xb0, 0xbf, 0x3d, 0xc4, 0x36, 0x7d, 0x17, 0xfb, 0xe3, 0x6f, 0xa3, 0x0a, 0xd1, 0xfd, 0x7d,
|
||||
0xbb, 0xb5, 0x6e, 0x35, 0xf4, 0xeb, 0xf8, 0x2f, 0xcb, 0x99, 0x28, 0x61, 0xc4, 0x86, 0x92, 0xce,
|
||||
0xc2, 0x78, 0xdc, 0x7e, 0xba, 0xa4, 0x96, 0xf3, 0xad, 0x10, 0x0f, 0x86, 0x5f, 0x26, 0x39, 0xf1,
|
||||
0x84, 0x2c, 0x3b, 0x34, 0x0e, 0xe8, 0xb3, 0x65, 0xd5, 0xb8, 0x91, 0xec, 0xc0, 0xfa, 0xa7, 0xc7,
|
||||
0x4f, 0x06, 0x1a, 0xf6, 0x7e, 0x8c, 0xfc, 0xc9, 0x72, 0x4a, 0x10, 0xcb, 0x7f, 0x8d, 0xa2, 0xbb,
|
||||
0x1e, 0x6b, 0x6f, 0x1a, 0xd0, 0x79, 0xc8, 0x4f, 0x02, 0xf6, 0x39, 0x25, 0x13, 0xdc, 0xef, 0x7c,
|
||||
0x3b, 0x65, 0xfb, 0x61, 0x0d, 0x4f, 0x65, 0x37, 0xcd, 0x94, 0x28, 0xbb, 0x1f, 0xd6, 0xf0, 0xed,
|
||||
0x36, 0xd4, 0x84, 0xff, 0xb0, 0x46, 0x00, 0x77, 0x3e, 0xac, 0x41, 0x78, 0x26, 0x3f, 0xac, 0x41,
|
||||
0x5a, 0x0b, 0x7e, 0x58, 0x23, 0xac, 0xc1, 0x2d, 0x3e, 0x6d, 0x08, 0xcd, 0x89, 0xf6, 0x20, 0x8b,
|
||||
0xfe, 0x01, 0xf7, 0xe3, 0x65, 0x54, 0x98, 0xe5, 0xb7, 0xe1, 0xf4, 0x9b, 0x61, 0x03, 0x9e, 0xa9,
|
||||
0xf7, 0x76, 0xd8, 0xe6, 0x60, 0x1e, 0x7c, 0xff, 0x0c, 0xf6, 0x3d, 0x66, 0xb1, 0x91, 0xa5, 0xfe,
|
||||
0xa8, 0xca, 0x7a, 0x68, 0xf1, 0xa8, 0x2d, 0xb8, 0x3d, 0xff, 0x70, 0x18, 0xcc, 0x34, 0xb7, 0x26,
|
||||
0xa0, 0xd3, 0x27, 0x7d, 0x86, 0x50, 0x97, 0x6f, 0x0e, 0xe6, 0x99, 0x45, 0xae, 0xf1, 0xdd, 0xf4,
|
||||
0xf6, 0x00, 0x63, 0x7e, 0x5f, 0x3f, 0x1a, 0xae, 0x60, 0x5f, 0x6d, 0xe9, 0xb8, 0xd7, 0xfd, 0xdc,
|
||||
0xfb, 0x04, 0xbd, 0x5e, 0xde, 0x18, 0x48, 0x87, 0x8a, 0x1b, 0x77, 0x79, 0xef, 0x2b, 0x6e, 0xc8,
|
||||
0x25, 0xfe, 0x93, 0xe5, 0x94, 0x20, 0x96, 0x7f, 0x1e, 0x45, 0x37, 0xd9, 0x58, 0x20, 0x0b, 0x3e,
|
||||
0x1b, 0x6a, 0x19, 0x65, 0xc3, 0xe7, 0x4b, 0xeb, 0x41, 0x50, 0xff, 0x36, 0x8a, 0x6e, 0x05, 0x82,
|
||||
0x6a, 0xd2, 0x63, 0x09, 0xeb, 0x7e, 0x9a, 0xfc, 0x68, 0x79, 0x45, 0x6e, 0xb1, 0x77, 0xf1, 0x69,
|
||||
0xf7, 0x7b, 0x13, 0x01, 0xdb, 0x53, 0xfe, 0x7b, 0x13, 0xfd, 0x5a, 0xf8, 0xf0, 0xa7, 0x2e, 0x49,
|
||||
0x60, 0x5f, 0x44, 0x1d, 0xfe, 0xe8, 0x8a, 0x05, 0xed, 0x87, 0xd6, 0x7a, 0x39, 0xca, 0xc9, 0xb3,
|
||||
0xab, 0x22, 0xce, 0x67, 0xbc, 0x93, 0x46, 0xde, 0xef, 0xc4, 0x70, 0xf8, 0xd0, 0xac, 0x96, 0x1e,
|
||||
0xc9, 0x76, 0x93, 0x77, 0x9f, 0xd3, 0x37, 0x48, 0xf0, 0xd0, 0xac, 0x83, 0x32, 0xde, 0xa0, 0xa2,
|
||||
0x0d, 0x79, 0x43, 0x85, 0xec, 0x83, 0x21, 0x28, 0xda, 0x3e, 0x18, 0x6f, 0xe6, 0x2c, 0xfe, 0x61,
|
||||
0xc8, 0x4a, 0xe7, 0x3c, 0x7e, 0x63, 0x20, 0xcd, 0xb8, 0x9d, 0x0a, 0xf5, 0x85, 0x88, 0x67, 0xa2,
|
||||
0x0c, 0xba, 0x35, 0xd4, 0x20, 0xb7, 0x2e, 0x4d, 0xb9, 0xdd, 0x96, 0xd9, 0xe2, 0x3c, 0x87, 0xce,
|
||||
0x64, 0xdd, 0xba, 0x54, 0xbf, 0x5b, 0x44, 0xe3, 0xe3, 0x42, 0xeb, 0x56, 0x17, 0x97, 0x0f, 0xc2,
|
||||
0x66, 0xbc, 0x9a, 0x72, 0x7d, 0x10, 0xcb, 0xb7, 0x13, 0xd2, 0xa8, 0xa7, 0x9d, 0x28, 0x93, 0x36,
|
||||
0x06, 0xd2, 0xf8, 0xdc, 0xce, 0x71, 0x6b, 0xf2, 0x69, 0xb3, 0xc7, 0x56, 0x27, 0xa5, 0x1e, 0x0d,
|
||||
0x57, 0xc0, 0xa7, 0xa4, 0x90, 0x55, 0xf5, 0xae, 0x68, 0x37, 0xcd, 0xb2, 0xf1, 0x7a, 0x20, 0x4d,
|
||||
0x5a, 0x28, 0x78, 0x4a, 0x4a, 0xc0, 0x4c, 0x26, 0xb7, 0xa7, 0x8a, 0xf9, 0xb8, 0xcf, 0x8e, 0xa6,
|
||||
0x06, 0x65, 0xb2, 0x4b, 0xa3, 0xd3, 0x36, 0xe7, 0x51, 0x9b, 0xd6, 0x4e, 0xc2, 0x0f, 0xae, 0xd3,
|
||||
0xe0, 0xcd, 0xc1, 0x3c, 0xba, 0x86, 0xd7, 0x94, 0x5e, 0x59, 0xee, 0x70, 0x26, 0xbc, 0x95, 0xe4,
|
||||
0x6e, 0x0f, 0x85, 0x4e, 0x2c, 0x9b, 0x61, 0xf4, 0x26, 0x9d, 0xcd, 0x85, 0x22, 0x6f, 0x90, 0x5c,
|
||||
0x20, 0x78, 0x83, 0x84, 0x40, 0xd4, 0x75, 0xcd, 0xdf, 0xa7, 0x42, 0x1d, 0xc7, 0xe5, 0x5c, 0xa8,
|
||||
0xfd, 0x19, 0xd5, 0x75, 0xa0, 0xec, 0x50, 0xa1, 0xae, 0x23, 0x69, 0x34, 0x1b, 0x18, 0xb7, 0xf0,
|
||||
0x7b, 0xea, 0x07, 0x21, 0x33, 0xe8, 0x47, 0xd5, 0xeb, 0x83, 0x58, 0xb4, 0xa2, 0x58, 0x87, 0xe9,
|
||||
0x79, 0xaa, 0xa8, 0x15, 0xc5, 0xb1, 0x51, 0x23, 0xa1, 0x15, 0xa5, 0x8b, 0x72, 0xcd, 0xab, 0x6b,
|
||||
0x84, 0xfd, 0x59, 0xb8, 0x79, 0x0d, 0x33, 0xac, 0x79, 0x86, 0xed, 0x5c, 0x78, 0xe6, 0x26, 0x65,
|
||||
0xd4, 0x29, 0x6c, 0x95, 0x89, 0xdc, 0xd6, 0x3f, 0x31, 0xc4, 0x60, 0x68, 0xd6, 0xe1, 0x14, 0x9c,
|
||||
0x5f, 0xb1, 0x18, 0xae, 0xbd, 0x93, 0x2d, 0x0a, 0x11, 0x97, 0x71, 0x9e, 0x90, 0x5b, 0x53, 0x6d,
|
||||
0xb0, 0x43, 0x86, 0xb6, 0xa6, 0xac, 0x06, 0xba, 0x4e, 0xf7, 0x7f, 0x1c, 0x48, 0x0c, 0x05, 0xf3,
|
||||
0x2b, 0x3c, 0xff, 0xb7, 0x81, 0xf7, 0x07, 0x90, 0xf8, 0x3a, 0xbd, 0x05, 0xcc, 0xa1, 0x7c, 0xe3,
|
||||
0xf4, 0xe3, 0x80, 0x29, 0x1f, 0x0d, 0x6d, 0x83, 0x79, 0x15, 0x94, 0xd4, 0xa6, 0xc0, 0x15, 0xea,
|
||||
0xa7, 0xe2, 0x9a, 0x4a, 0x6a, 0x5b, 0x9f, 0x6a, 0x24, 0x94, 0xd4, 0x5d, 0x14, 0xd5, 0x99, 0xee,
|
||||
0x3e, 0x68, 0x35, 0xa0, 0xef, 0x6e, 0x7d, 0xd6, 0x7a, 0x39, 0x34, 0x72, 0x76, 0xd2, 0x0b, 0xef,
|
||||
0x0e, 0x83, 0x08, 0x74, 0x27, 0xbd, 0xa0, 0xaf, 0x30, 0xd6, 0x07, 0xb1, 0xf8, 0xaa, 0x3e, 0x56,
|
||||
0xe2, 0xaa, 0xbd, 0x43, 0x27, 0xc2, 0xd5, 0xf2, 0xce, 0x25, 0xfa, 0xbd, 0x7e, 0xd0, 0xbe, 0x18,
|
||||
0x7b, 0x58, 0xca, 0x44, 0x54, 0x15, 0x7c, 0x84, 0xcb, 0x7f, 0xf3, 0x08, 0x64, 0x13, 0xf4, 0x09,
|
||||
0xae, 0x3b, 0x61, 0x08, 0x6c, 0x7f, 0x11, 0xbd, 0xfb, 0x5c, 0xce, 0xa7, 0x22, 0x9f, 0x8d, 0x7f,
|
||||
0xe8, 0xbf, 0x8a, 0x2a, 0xe7, 0x93, 0xfa, 0xcf, 0xc6, 0xde, 0x0a, 0x27, 0xb6, 0x2f, 0xd3, 0xed,
|
||||
0x88, 0x93, 0xc5, 0x7c, 0xaa, 0x62, 0xfc, 0x29, 0x2f, 0xfd, 0xf7, 0x49, 0x2d, 0x60, 0x5e, 0xa6,
|
||||
0xf3, 0x00, 0x64, 0xef, 0xb8, 0x14, 0x82, 0xb4, 0x57, 0x0b, 0x82, 0xf6, 0x00, 0xb0, 0xab, 0xae,
|
||||
0xb1, 0x57, 0x17, 0xb6, 0xf8, 0xe5, 0x37, 0xab, 0xa3, 0xa5, 0xcc, 0xaa, 0xdb, 0xa5, 0x6c, 0x32,
|
||||
0x34, 0xcd, 0xd7, 0x9f, 0x59, 0x58, 0x9c, 0x9f, 0xc7, 0xe5, 0x35, 0x4a, 0x06, 0x68, 0xa5, 0x03,
|
||||
0x30, 0xc9, 0x40, 0x82, 0x36, 0xcb, 0xdb, 0xc7, 0x9c, 0x9c, 0xed, 0xc9, 0x52, 0x2e, 0x54, 0x9a,
|
||||
0x8b, 0x0a, 0x65, 0xb9, 0x79, 0xa0, 0x2e, 0xc3, 0x64, 0x39, 0xc7, 0xda, 0xaa, 0x50, 0x13, 0xcd,
|
||||
0x7b, 0x79, 0xfa, 0x53, 0x96, 0x95, 0x92, 0x25, 0xbe, 0x1b, 0x6c, 0xac, 0x60, 0x88, 0xa9, 0x0a,
|
||||
0x59, 0x18, 0xf5, 0xfd, 0x61, 0x9a, 0xcf, 0xc9, 0xbe, 0x3f, 0x74, 0x3f, 0xdc, 0x76, 0x8b, 0x07,
|
||||
0xec, 0xfc, 0xde, 0x3c, 0xb4, 0xe6, 0x73, 0x36, 0xf0, 0x5b, 0x41, 0xf2, 0xa1, 0xbb, 0x04, 0x33,
|
||||
0xbf, 0xd3, 0x24, 0x72, 0xf5, 0xb2, 0x10, 0xb9, 0x98, 0xb5, 0x6f, 0x9f, 0x51, 0xae, 0x3c, 0x22,
|
||||
0xe8, 0x0a, 0x93, 0x36, 0x15, 0x5e, 0x08, 0x55, 0xa6, 0x49, 0x35, 0x15, 0xea, 0x30, 0x2e, 0xe3,
|
||||
0x73, 0xa1, 0x44, 0x89, 0x53, 0x01, 0x90, 0x89, 0xc7, 0x30, 0xa9, 0xc0, 0xb1, 0xe0, 0xf0, 0x77,
|
||||
0xa3, 0xef, 0xd5, 0x33, 0xa1, 0xc8, 0xe1, 0xdb, 0xda, 0xcf, 0xf4, 0x47, 0xf9, 0xc7, 0xef, 0x1b,
|
||||
0x1b, 0x53, 0x55, 0x8a, 0xf8, 0xbc, 0xb5, 0xfd, 0x9e, 0xf9, 0xbb, 0x06, 0x1f, 0x8d, 0xea, 0x75,
|
||||
0xe0, 0x40, 0xaa, 0xf4, 0x6d, 0xbd, 0xf1, 0x80, 0x4b, 0x1e, 0xb4, 0x0e, 0xb8, 0xe2, 0x49, 0xe0,
|
||||
0x97, 0xe5, 0x14, 0x67, 0x47, 0xa2, 0x2b, 0x3d, 0x12, 0x45, 0x86, 0x47, 0xa2, 0xa7, 0xad, 0x01,
|
||||
0x66, 0x24, 0x92, 0xa0, 0x5d, 0xd4, 0x5c, 0xf1, 0xb1, 0x08, 0x37, 0xe6, 0x58, 0x0c, 0x6b, 0xcc,
|
||||
0xb1, 0xf7, 0xfa, 0x7a, 0xbd, 0x27, 0x2b, 0x65, 0x3c, 0x4b, 0xe2, 0x4a, 0x1d, 0xc6, 0xd7, 0x99,
|
||||
0x8c, 0x67, 0xfa, 0x61, 0xe2, 0x3d, 0x59, 0xcb, 0x4c, 0x5c, 0x88, 0xdb, 0x93, 0x71, 0x70, 0xe3,
|
||||
0xf3, 0xe9, 0x87, 0xff, 0xf3, 0xf5, 0xca, 0xe8, 0xab, 0xaf, 0x57, 0x46, 0xff, 0xff, 0xf5, 0xca,
|
||||
0xe8, 0x9f, 0xbe, 0x59, 0x79, 0xe7, 0xab, 0x6f, 0x56, 0xde, 0xf9, 0xdf, 0x6f, 0x56, 0xde, 0xf9,
|
||||
0xf2, 0x5d, 0xf8, 0x27, 0x1c, 0x4e, 0x7e, 0x41, 0xff, 0x43, 0x0c, 0x4f, 0x7e, 0x1e, 0x00, 0x00,
|
||||
0xff, 0xff, 0xad, 0xa3, 0x91, 0xda, 0xe6, 0x61, 0x00, 0x00,
|
||||
}
|
||||
|
||||
// Reference imports to suppress errors if they are not otherwise used.
|
||||
|
@ -362,6 +364,7 @@ type ClientCommandsClient interface {
|
|||
SpaceJoin(ctx context.Context, in *pb.RpcSpaceJoinRequest, opts ...grpc.CallOption) (*pb.RpcSpaceJoinResponse, error)
|
||||
SpaceJoinCancel(ctx context.Context, in *pb.RpcSpaceJoinCancelRequest, opts ...grpc.CallOption) (*pb.RpcSpaceJoinCancelResponse, error)
|
||||
SpaceExit(ctx context.Context, in *pb.RpcSpaceExitRequest, opts ...grpc.CallOption) (*pb.RpcSpaceExitResponse, error)
|
||||
SpaceStopSharing(ctx context.Context, in *pb.RpcSpaceStopSharingRequest, opts ...grpc.CallOption) (*pb.RpcSpaceStopSharingResponse, error)
|
||||
SpaceRequestApprove(ctx context.Context, in *pb.RpcSpaceRequestApproveRequest, opts ...grpc.CallOption) (*pb.RpcSpaceRequestApproveResponse, error)
|
||||
SpaceRequestDecline(ctx context.Context, in *pb.RpcSpaceRequestDeclineRequest, opts ...grpc.CallOption) (*pb.RpcSpaceRequestDeclineResponse, error)
|
||||
SpaceParticipantRemove(ctx context.Context, in *pb.RpcSpaceParticipantRemoveRequest, opts ...grpc.CallOption) (*pb.RpcSpaceParticipantRemoveResponse, error)
|
||||
|
@ -566,6 +569,7 @@ type ClientCommandsClient interface {
|
|||
BlockLatexSetText(ctx context.Context, in *pb.RpcBlockLatexSetTextRequest, opts ...grpc.CallOption) (*pb.RpcBlockLatexSetTextResponse, error)
|
||||
ProcessCancel(ctx context.Context, in *pb.RpcProcessCancelRequest, opts ...grpc.CallOption) (*pb.RpcProcessCancelResponse, error)
|
||||
LogSend(ctx context.Context, in *pb.RpcLogSendRequest, opts ...grpc.CallOption) (*pb.RpcLogSendResponse, error)
|
||||
DebugStat(ctx context.Context, in *pb.RpcDebugStatRequest, opts ...grpc.CallOption) (*pb.RpcDebugStatResponse, error)
|
||||
DebugTree(ctx context.Context, in *pb.RpcDebugTreeRequest, opts ...grpc.CallOption) (*pb.RpcDebugTreeResponse, error)
|
||||
DebugTreeHeads(ctx context.Context, in *pb.RpcDebugTreeHeadsRequest, opts ...grpc.CallOption) (*pb.RpcDebugTreeHeadsResponse, error)
|
||||
DebugSpaceSummary(ctx context.Context, in *pb.RpcDebugSpaceSummaryRequest, opts ...grpc.CallOption) (*pb.RpcDebugSpaceSummaryResponse, error)
|
||||
|
@ -942,6 +946,15 @@ func (c *clientCommandsClient) SpaceExit(ctx context.Context, in *pb.RpcSpaceExi
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) SpaceStopSharing(ctx context.Context, in *pb.RpcSpaceStopSharingRequest, opts ...grpc.CallOption) (*pb.RpcSpaceStopSharingResponse, error) {
|
||||
out := new(pb.RpcSpaceStopSharingResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/SpaceStopSharing", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) SpaceRequestApprove(ctx context.Context, in *pb.RpcSpaceRequestApproveRequest, opts ...grpc.CallOption) (*pb.RpcSpaceRequestApproveResponse, error) {
|
||||
out := new(pb.RpcSpaceRequestApproveResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/SpaceRequestApprove", in, out, opts...)
|
||||
|
@ -2490,6 +2503,15 @@ func (c *clientCommandsClient) LogSend(ctx context.Context, in *pb.RpcLogSendReq
|
|||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) DebugStat(ctx context.Context, in *pb.RpcDebugStatRequest, opts ...grpc.CallOption) (*pb.RpcDebugStatResponse, error) {
|
||||
out := new(pb.RpcDebugStatResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/DebugStat", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *clientCommandsClient) DebugTree(ctx context.Context, in *pb.RpcDebugTreeRequest, opts ...grpc.CallOption) (*pb.RpcDebugTreeResponse, error) {
|
||||
out := new(pb.RpcDebugTreeResponse)
|
||||
err := c.cc.Invoke(ctx, "/anytype.ClientCommands/DebugTree", in, out, opts...)
|
||||
|
@ -2688,6 +2710,7 @@ type ClientCommandsServer interface {
|
|||
SpaceJoin(context.Context, *pb.RpcSpaceJoinRequest) *pb.RpcSpaceJoinResponse
|
||||
SpaceJoinCancel(context.Context, *pb.RpcSpaceJoinCancelRequest) *pb.RpcSpaceJoinCancelResponse
|
||||
SpaceExit(context.Context, *pb.RpcSpaceExitRequest) *pb.RpcSpaceExitResponse
|
||||
SpaceStopSharing(context.Context, *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse
|
||||
SpaceRequestApprove(context.Context, *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse
|
||||
SpaceRequestDecline(context.Context, *pb.RpcSpaceRequestDeclineRequest) *pb.RpcSpaceRequestDeclineResponse
|
||||
SpaceParticipantRemove(context.Context, *pb.RpcSpaceParticipantRemoveRequest) *pb.RpcSpaceParticipantRemoveResponse
|
||||
|
@ -2892,6 +2915,7 @@ type ClientCommandsServer interface {
|
|||
BlockLatexSetText(context.Context, *pb.RpcBlockLatexSetTextRequest) *pb.RpcBlockLatexSetTextResponse
|
||||
ProcessCancel(context.Context, *pb.RpcProcessCancelRequest) *pb.RpcProcessCancelResponse
|
||||
LogSend(context.Context, *pb.RpcLogSendRequest) *pb.RpcLogSendResponse
|
||||
DebugStat(context.Context, *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse
|
||||
DebugTree(context.Context, *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse
|
||||
DebugTreeHeads(context.Context, *pb.RpcDebugTreeHeadsRequest) *pb.RpcDebugTreeHeadsResponse
|
||||
DebugSpaceSummary(context.Context, *pb.RpcDebugSpaceSummaryRequest) *pb.RpcDebugSpaceSummaryResponse
|
||||
|
@ -3030,6 +3054,9 @@ func (*UnimplementedClientCommandsServer) SpaceJoinCancel(ctx context.Context, r
|
|||
func (*UnimplementedClientCommandsServer) SpaceExit(ctx context.Context, req *pb.RpcSpaceExitRequest) *pb.RpcSpaceExitResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) SpaceStopSharing(ctx context.Context, req *pb.RpcSpaceStopSharingRequest) *pb.RpcSpaceStopSharingResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) SpaceRequestApprove(ctx context.Context, req *pb.RpcSpaceRequestApproveRequest) *pb.RpcSpaceRequestApproveResponse {
|
||||
return nil
|
||||
}
|
||||
|
@ -3546,6 +3573,9 @@ func (*UnimplementedClientCommandsServer) ProcessCancel(ctx context.Context, req
|
|||
func (*UnimplementedClientCommandsServer) LogSend(ctx context.Context, req *pb.RpcLogSendRequest) *pb.RpcLogSendResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) DebugStat(ctx context.Context, req *pb.RpcDebugStatRequest) *pb.RpcDebugStatResponse {
|
||||
return nil
|
||||
}
|
||||
func (*UnimplementedClientCommandsServer) DebugTree(ctx context.Context, req *pb.RpcDebugTreeRequest) *pb.RpcDebugTreeResponse {
|
||||
return nil
|
||||
}
|
||||
|
@ -4295,6 +4325,24 @@ func _ClientCommands_SpaceExit_Handler(srv interface{}, ctx context.Context, dec
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_SpaceStopSharing_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcSpaceStopSharingRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(ClientCommandsServer).SpaceStopSharing(ctx, in), nil
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/anytype.ClientCommands/SpaceStopSharing",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(ClientCommandsServer).SpaceStopSharing(ctx, req.(*pb.RpcSpaceStopSharingRequest)), nil
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_SpaceRequestApprove_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcSpaceRequestApproveRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -7391,6 +7439,24 @@ func _ClientCommands_LogSend_Handler(srv interface{}, ctx context.Context, dec f
|
|||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_DebugStat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcDebugStatRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(ClientCommandsServer).DebugStat(ctx, in), nil
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/anytype.ClientCommands/DebugStat",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(ClientCommandsServer).DebugStat(ctx, req.(*pb.RpcDebugStatRequest)), nil
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _ClientCommands_DebugTree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(pb.RpcDebugTreeRequest)
|
||||
if err := dec(in); err != nil {
|
||||
|
@ -7807,6 +7873,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{
|
|||
MethodName: "SpaceExit",
|
||||
Handler: _ClientCommands_SpaceExit_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SpaceStopSharing",
|
||||
Handler: _ClientCommands_SpaceStopSharing_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "SpaceRequestApprove",
|
||||
Handler: _ClientCommands_SpaceRequestApprove_Handler,
|
||||
|
@ -8495,6 +8565,10 @@ var _ClientCommands_serviceDesc = grpc.ServiceDesc{
|
|||
MethodName: "LogSend",
|
||||
Handler: _ClientCommands_LogSend_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DebugStat",
|
||||
Handler: _ClientCommands_DebugStat_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "DebugTree",
|
||||
Handler: _ClientCommands_DebugTree_Handler,
|
||||
|
|
|
@ -52,15 +52,16 @@ type Relation struct {
|
|||
}
|
||||
|
||||
type ObjectType struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Types []string `json:"types"`
|
||||
Emoji string `json:"emoji"`
|
||||
Hidden bool `json:"hidden"`
|
||||
Layout string `json:"layout"`
|
||||
Relations []string `json:"relations"`
|
||||
Description string `json:"description"`
|
||||
Revision int `json:"revision"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Types []string `json:"types"`
|
||||
Emoji string `json:"emoji"`
|
||||
Hidden bool `json:"hidden"`
|
||||
Layout string `json:"layout"`
|
||||
Relations []string `json:"relations"`
|
||||
Description string `json:"description"`
|
||||
Revision int `json:"revision"`
|
||||
RestrictObjectCreation bool `json:"restrictObjectCreation"`
|
||||
}
|
||||
|
||||
type Layout struct {
|
||||
|
@ -305,6 +306,10 @@ func generateTypes() error {
|
|||
dictS[Id("Revision")] = Lit(ot.Revision)
|
||||
}
|
||||
|
||||
if ot.RestrictObjectCreation {
|
||||
dictS[Id("RestrictObjectCreation")] = Lit(ot.RestrictObjectCreation)
|
||||
}
|
||||
|
||||
dict[Id(typeConst(ot.ID))] = Block(dictS)
|
||||
}
|
||||
g.Id("types").Op("=").Map(Qual(domainPkg, "TypeKey")).Op("*").Qual(relPbPkg, "ObjectType").Values(Dict(dict))
|
||||
|
|
|
@ -67,6 +67,7 @@ func HasObjectTypeID(id string) bool {
|
|||
return exists
|
||||
}
|
||||
|
||||
// GetTypeByUrl is deprecated, use GetType instead
|
||||
func GetTypeByUrl(u string) (*model.ObjectType, error) {
|
||||
if !strings.HasPrefix(u, TypePrefix) {
|
||||
return nil, fmt.Errorf("invalid url with no bundled type prefix")
|
||||
|
@ -81,6 +82,16 @@ func GetTypeByUrl(u string) (*model.ObjectType, error) {
|
|||
return nil, ErrNotFound
|
||||
}
|
||||
|
||||
func GetType(tk domain.TypeKey) (*model.ObjectType, error) {
|
||||
if v, exists := types[tk]; exists {
|
||||
t := pbtypes.CopyObjectType(v)
|
||||
t.Key = tk.String()
|
||||
return t, nil
|
||||
}
|
||||
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
|
||||
// MustGetType returns built-in object type by predefined TypeKey constant
|
||||
// PANICS IN CASE RELATION KEY IS NOT EXISTS – DO NOT USE WITH ARBITRARY STRING
|
||||
func MustGetType(tk domain.TypeKey) *model.ObjectType {
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
)
|
||||
|
||||
const RelationChecksum = "56d2e69285cd7e22d75e27e8538a9f8d0d542816b9ad97568436543afa724447"
|
||||
const RelationChecksum = "15ce7e760c03abd6582ca7d20c4a04cc31f315cd6067149b32a9966e4f07b3fa"
|
||||
const (
|
||||
RelationKeyTag domain.RelationKey = "tag"
|
||||
RelationKeyCamera domain.RelationKey = "camera"
|
||||
|
@ -19,6 +19,7 @@ const (
|
|||
RelationKeyRelationFormatObjectTypes domain.RelationKey = "relationFormatObjectTypes"
|
||||
RelationKeyRelationKey domain.RelationKey = "relationKey"
|
||||
RelationKeyRelationOptionColor domain.RelationKey = "relationOptionColor"
|
||||
RelationKeyLatestAclHeadId domain.RelationKey = "latestAclHeadId"
|
||||
RelationKeyInstructions domain.RelationKey = "instructions"
|
||||
RelationKeyDone domain.RelationKey = "done"
|
||||
RelationKeyMediaArtistURL domain.RelationKey = "mediaArtistURL"
|
||||
|
@ -253,9 +254,10 @@ var (
|
|||
Id: "_brassignee",
|
||||
Key: "assignee",
|
||||
Name: "Assignee",
|
||||
ObjectTypes: []string{TypePrefix + "profile", TypePrefix + "contact"},
|
||||
ObjectTypes: []string{TypePrefix + "profile", TypePrefix + "contact", TypePrefix + "participant"},
|
||||
ReadOnly: false,
|
||||
ReadOnlyRelation: true,
|
||||
Revision: 1,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyAttachments: {
|
||||
|
@ -344,9 +346,10 @@ var (
|
|||
Id: "_brauthor",
|
||||
Key: "author",
|
||||
Name: "Author",
|
||||
ObjectTypes: []string{TypePrefix + "profile", TypePrefix + "contact"},
|
||||
ObjectTypes: []string{TypePrefix + "profile", TypePrefix + "contact", TypePrefix + "participant"},
|
||||
ReadOnly: false,
|
||||
ReadOnlyRelation: true,
|
||||
Revision: 1,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyBacklinks: {
|
||||
|
@ -356,10 +359,10 @@ var (
|
|||
Format: model.RelationFormat_object,
|
||||
Id: "_brbacklinks",
|
||||
Key: "backlinks",
|
||||
Name: "Links to this object",
|
||||
Name: "Backlinks",
|
||||
ReadOnly: true,
|
||||
ReadOnlyRelation: true,
|
||||
Revision: 2,
|
||||
Revision: 3,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyBudget: {
|
||||
|
@ -1200,9 +1203,10 @@ var (
|
|||
Key: "lastModifiedBy",
|
||||
MaxCount: 1,
|
||||
Name: "Last modified by",
|
||||
ObjectTypes: []string{TypePrefix + "profile"},
|
||||
ObjectTypes: []string{TypePrefix + "participant"},
|
||||
ReadOnly: true,
|
||||
ReadOnlyRelation: true,
|
||||
Revision: 1,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyLastModifiedDate: {
|
||||
|
@ -1245,6 +1249,20 @@ var (
|
|||
ReadOnlyRelation: true,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyLatestAclHeadId: {
|
||||
|
||||
DataSource: model.Relation_details,
|
||||
Description: "Latest Acl head id",
|
||||
Format: model.RelationFormat_longtext,
|
||||
Hidden: true,
|
||||
Id: "_brlatestAclHeadId",
|
||||
Key: "latestAclHeadId",
|
||||
MaxCount: 1,
|
||||
Name: "Latest acl head id",
|
||||
ReadOnly: true,
|
||||
ReadOnlyRelation: true,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyLayout: {
|
||||
|
||||
DataSource: model.Relation_details,
|
||||
|
@ -1305,10 +1323,10 @@ var (
|
|||
Format: model.RelationFormat_object,
|
||||
Id: "_brlinks",
|
||||
Key: "links",
|
||||
Name: "Links from this object",
|
||||
Name: "Links",
|
||||
ReadOnly: true,
|
||||
ReadOnlyRelation: true,
|
||||
Revision: 2,
|
||||
Revision: 3,
|
||||
Scope: model.Relation_type,
|
||||
},
|
||||
RelationKeyLogic: {
|
||||
|
|
|
@ -78,6 +78,16 @@
|
|||
"readonly": true,
|
||||
"source": "details"
|
||||
},
|
||||
{
|
||||
"description": "Latest Acl head id",
|
||||
"format": "longtext",
|
||||
"hidden": true,
|
||||
"key": "latestAclHeadId",
|
||||
"maxCount": 1,
|
||||
"name": "Latest acl head id",
|
||||
"readonly": true,
|
||||
"source": "details"
|
||||
},
|
||||
{
|
||||
"format": "longtext",
|
||||
"hidden": false,
|
||||
|
@ -609,8 +619,10 @@
|
|||
"source": "details",
|
||||
"objectTypes": [
|
||||
"profile",
|
||||
"contact"
|
||||
]
|
||||
"contact",
|
||||
"participant"
|
||||
],
|
||||
"revision": 1
|
||||
},
|
||||
{
|
||||
"description": "Name of artist",
|
||||
|
@ -751,8 +763,10 @@
|
|||
"source": "details",
|
||||
"objectTypes": [
|
||||
"profile",
|
||||
"contact"
|
||||
]
|
||||
"contact",
|
||||
"participant"
|
||||
],
|
||||
"revision": 1
|
||||
},
|
||||
{
|
||||
"format": "longtext",
|
||||
|
@ -1123,10 +1137,10 @@
|
|||
"hidden": false,
|
||||
"key": "links",
|
||||
"maxCount": 0,
|
||||
"name": "Links from this object",
|
||||
"name": "Links",
|
||||
"readonly": true,
|
||||
"source": "derived",
|
||||
"revision": 2
|
||||
"revision": 3
|
||||
},
|
||||
{
|
||||
"format": "number",
|
||||
|
@ -1164,10 +1178,11 @@
|
|||
"maxCount": 1,
|
||||
"name": "Last modified by",
|
||||
"objectTypes": [
|
||||
"profile"
|
||||
"participant"
|
||||
],
|
||||
"readonly": true,
|
||||
"source": "derived"
|
||||
"source": "derived",
|
||||
"revision": 1
|
||||
},
|
||||
{
|
||||
"description": "Relation allows multi values",
|
||||
|
@ -1459,10 +1474,10 @@
|
|||
"key": "backlinks",
|
||||
"maxCount": 0,
|
||||
"hidden": false,
|
||||
"name": "Links to this object",
|
||||
"name": "Backlinks",
|
||||
"readonly": true,
|
||||
"source": "local",
|
||||
"revision": 2
|
||||
"revision": 3
|
||||
},
|
||||
{
|
||||
"description": "Relation that indicates document has been uninstalled",
|
||||
|
|
|
@ -6,7 +6,7 @@ package bundle
|
|||
|
||||
import domain "github.com/anyproto/anytype-heart/core/domain"
|
||||
|
||||
const SystemRelationsChecksum = "a0137f269c40c20710815c254a9ee8b0f452221df5e4fa40cd00617bdf4dd499"
|
||||
const SystemRelationsChecksum = "f005078664bd162ec27289eeb2024aaddb83d3e9128bb25ee589ef914f4e055b"
|
||||
|
||||
// SystemRelations contains relations that have some special biz logic depends on them in some objects
|
||||
// in case EVERY object depend on the relation please add it to RequiredInternalRelations
|
||||
|
@ -61,5 +61,6 @@ var SystemRelations = append(RequiredInternalRelations, []domain.RelationKey{
|
|||
RelationKeySpaceInviteFileKey,
|
||||
RelationKeyParticipantPermissions,
|
||||
RelationKeyParticipantStatus,
|
||||
RelationKeyLatestAclHeadId,
|
||||
RelationKeyIdentity,
|
||||
}...)
|
||||
|
|
|
@ -75,5 +75,6 @@
|
|||
"spaceInviteFileKey",
|
||||
"participantPermissions",
|
||||
"participantStatus",
|
||||
"latestAclHeadId",
|
||||
"identity"
|
||||
]
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/pkg/lib/pb/model"
|
||||
)
|
||||
|
||||
const TypeChecksum = "d793d61e0b07300056e692cfe82dee8f23a436a70c36e066067b837b24b09ee1"
|
||||
const TypeChecksum = "fea3b06c998f4c974f06b3b0714b26dd2c5a7fa35ce9dc8b8f17d7c619215f7b"
|
||||
const (
|
||||
TypePrefix = "_ot"
|
||||
)
|
||||
|
@ -54,14 +54,15 @@ var (
|
|||
types = map[domain.TypeKey]*model.ObjectType{
|
||||
TypeKeyAudio: {
|
||||
|
||||
Description: "Auto-generated object from .wav, .mp3, .ogg files added to Anytype. Sound when recorded, with ability to reproduce",
|
||||
IconEmoji: "🎵",
|
||||
Layout: model.ObjectType_file,
|
||||
Name: "Audio",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyArtist), MustGetRelationLink(RelationKeyAudioAlbum), MustGetRelationLink(RelationKeyAudioAlbumTrackNumber), MustGetRelationLink(RelationKeyAudioGenre), MustGetRelationLink(RelationKeyReleasedYear), MustGetRelationLink(RelationKeyThumbnailImage), MustGetRelationLink(RelationKeyComposer), MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFileExt), MustGetRelationLink(RelationKeyAudioArtist), MustGetRelationLink(RelationKeyAudioLyrics)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "audio",
|
||||
Description: "Sound when recorded, with ability to reproduce",
|
||||
IconEmoji: "🎵",
|
||||
Layout: model.ObjectType_file,
|
||||
Name: "Audio",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyArtist), MustGetRelationLink(RelationKeyAudioAlbum), MustGetRelationLink(RelationKeyAudioAlbumTrackNumber), MustGetRelationLink(RelationKeyAudioGenre), MustGetRelationLink(RelationKeyReleasedYear), MustGetRelationLink(RelationKeyThumbnailImage), MustGetRelationLink(RelationKeyComposer), MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFileExt), MustGetRelationLink(RelationKeyAudioArtist), MustGetRelationLink(RelationKeyAudioLyrics)},
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "audio",
|
||||
},
|
||||
TypeKeyBook: {
|
||||
|
||||
|
@ -142,13 +143,14 @@ var (
|
|||
},
|
||||
TypeKeyDashboard: {
|
||||
|
||||
Description: "Internal home dashboard with favourite objects",
|
||||
Hidden: true,
|
||||
Layout: model.ObjectType_dashboard,
|
||||
Name: "Dashboard",
|
||||
Readonly: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_Home},
|
||||
Url: TypePrefix + "dashboard",
|
||||
Description: "Internal home dashboard with favourite objects",
|
||||
Hidden: true,
|
||||
Layout: model.ObjectType_dashboard,
|
||||
Name: "Dashboard",
|
||||
Readonly: true,
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_Home},
|
||||
Url: TypePrefix + "dashboard",
|
||||
},
|
||||
TypeKeyDate: {
|
||||
|
||||
|
@ -197,14 +199,15 @@ var (
|
|||
},
|
||||
TypeKeyFile: {
|
||||
|
||||
Description: "Auto-generated object from files added to Anytype. Computer resource for recording data in a computer storage device",
|
||||
IconEmoji: "📎",
|
||||
Layout: model.ObjectType_file,
|
||||
Name: "File",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFileExt)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "file",
|
||||
Description: "Computer resource for recording data in a computer storage device",
|
||||
IconEmoji: "📎",
|
||||
Layout: model.ObjectType_file,
|
||||
Name: "File",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFileExt)},
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "file",
|
||||
},
|
||||
TypeKeyGoal: {
|
||||
|
||||
|
@ -230,14 +233,15 @@ var (
|
|||
},
|
||||
TypeKeyImage: {
|
||||
|
||||
Description: "Auto-generated object from .jpg & .png files added to Anytype. A representation of the external form of a person or thing in art",
|
||||
IconEmoji: "🏞",
|
||||
Layout: model.ObjectType_image,
|
||||
Name: "Image",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeyWidthInPixels), MustGetRelationLink(RelationKeyCamera), MustGetRelationLink(RelationKeyHeightInPixels), MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyCameraIso), MustGetRelationLink(RelationKeyAperture), MustGetRelationLink(RelationKeyExposure), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFocalRatio), MustGetRelationLink(RelationKeyFileExt)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "image",
|
||||
Description: "A representation of the external form of a person or thing in art",
|
||||
IconEmoji: "🏞",
|
||||
Layout: model.ObjectType_image,
|
||||
Name: "Image",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeyWidthInPixels), MustGetRelationLink(RelationKeyCamera), MustGetRelationLink(RelationKeyHeightInPixels), MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyCameraIso), MustGetRelationLink(RelationKeyAperture), MustGetRelationLink(RelationKeyExposure), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFocalRatio), MustGetRelationLink(RelationKeyFileExt)},
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "image",
|
||||
},
|
||||
TypeKeyMovie: {
|
||||
|
||||
|
@ -285,15 +289,16 @@ var (
|
|||
},
|
||||
TypeKeyParticipant: {
|
||||
|
||||
Description: "Participant",
|
||||
Hidden: true,
|
||||
IconEmoji: "🧑",
|
||||
Layout: model.ObjectType_participant,
|
||||
Name: "Participant",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_Participant},
|
||||
Url: TypePrefix + "participant",
|
||||
Description: "Anytype identity as a space participant",
|
||||
IconEmoji: "🧑",
|
||||
Layout: model.ObjectType_participant,
|
||||
Name: "Space member",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)},
|
||||
RestrictObjectCreation: true,
|
||||
Revision: 1,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_Participant},
|
||||
Url: TypePrefix + "participant",
|
||||
},
|
||||
TypeKeyProfile: {
|
||||
|
||||
|
@ -364,27 +369,29 @@ var (
|
|||
},
|
||||
TypeKeySpace: {
|
||||
|
||||
Description: "Workspace",
|
||||
Hidden: true,
|
||||
IconEmoji: "🌎",
|
||||
Layout: model.ObjectType_space,
|
||||
Name: "Space",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_Workspace},
|
||||
Url: TypePrefix + "space",
|
||||
Description: "Workspace",
|
||||
Hidden: true,
|
||||
IconEmoji: "🌎",
|
||||
Layout: model.ObjectType_space,
|
||||
Name: "Space",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)},
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_Workspace},
|
||||
Url: TypePrefix + "space",
|
||||
},
|
||||
TypeKeySpaceView: {
|
||||
|
||||
Description: "Space",
|
||||
Hidden: true,
|
||||
IconEmoji: "🌎",
|
||||
Layout: model.ObjectType_spaceView,
|
||||
Name: "Space",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_SpaceView},
|
||||
Url: TypePrefix + "spaceView",
|
||||
Description: "Space",
|
||||
Hidden: true,
|
||||
IconEmoji: "🌎",
|
||||
Layout: model.ObjectType_spaceView,
|
||||
Name: "Space",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeyTag)},
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_SpaceView},
|
||||
Url: TypePrefix + "spaceView",
|
||||
},
|
||||
TypeKeyTask: {
|
||||
|
||||
|
@ -410,14 +417,15 @@ var (
|
|||
},
|
||||
TypeKeyVideo: {
|
||||
|
||||
Description: "Auto-generated object from .mpeg-4 files added to Anytype. The recording of moving visual images",
|
||||
IconEmoji: "📽",
|
||||
Layout: model.ObjectType_file,
|
||||
Name: "Video",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeyCamera), MustGetRelationLink(RelationKeyThumbnailImage), MustGetRelationLink(RelationKeyHeightInPixels), MustGetRelationLink(RelationKeyWidthInPixels), MustGetRelationLink(RelationKeyCameraIso), MustGetRelationLink(RelationKeyAperture), MustGetRelationLink(RelationKeyExposure), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFileExt)},
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "video",
|
||||
Description: "The recording of moving visual images",
|
||||
IconEmoji: "📽",
|
||||
Layout: model.ObjectType_file,
|
||||
Name: "Video",
|
||||
Readonly: true,
|
||||
RelationLinks: []*model.RelationLink{MustGetRelationLink(RelationKeySizeInBytes), MustGetRelationLink(RelationKeyFileMimeType), MustGetRelationLink(RelationKeyCamera), MustGetRelationLink(RelationKeyThumbnailImage), MustGetRelationLink(RelationKeyHeightInPixels), MustGetRelationLink(RelationKeyWidthInPixels), MustGetRelationLink(RelationKeyCameraIso), MustGetRelationLink(RelationKeyAperture), MustGetRelationLink(RelationKeyExposure), MustGetRelationLink(RelationKeyAddedDate), MustGetRelationLink(RelationKeyFileExt)},
|
||||
RestrictObjectCreation: true,
|
||||
Types: []model.SmartBlockType{model.SmartBlockType_File},
|
||||
Url: TypePrefix + "video",
|
||||
},
|
||||
TypeKeyWeeklyPlan: {
|
||||
|
||||
|
|
|
@ -203,7 +203,8 @@
|
|||
"addedDate",
|
||||
"fileExt"
|
||||
],
|
||||
"description": "Auto-generated object from .mpeg-4 files added to Anytype. The recording of moving visual images"
|
||||
"description": "The recording of moving visual images",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "dashboard",
|
||||
|
@ -215,7 +216,8 @@
|
|||
"hidden": true,
|
||||
"layout": "dashboard",
|
||||
"relations": [],
|
||||
"description": "Internal home dashboard with favourite objects"
|
||||
"description": "Internal home dashboard with favourite objects",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "dailyPlan",
|
||||
|
@ -295,7 +297,8 @@
|
|||
"relations": [
|
||||
"tag"
|
||||
],
|
||||
"description": "Workspace"
|
||||
"description": "Workspace",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "spaceView",
|
||||
|
@ -309,21 +312,24 @@
|
|||
"relations": [
|
||||
"tag"
|
||||
],
|
||||
"description": "Space"
|
||||
"description": "Space",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "participant",
|
||||
"name": "Participant",
|
||||
"name": "Space member",
|
||||
"types": [
|
||||
"Participant"
|
||||
],
|
||||
"emoji": "\uD83E\uDDD1",
|
||||
"hidden": true,
|
||||
"hidden": false,
|
||||
"layout": "participant",
|
||||
"relations": [
|
||||
"tag"
|
||||
],
|
||||
"description": "Participant"
|
||||
"description": "Anytype identity as a space participant",
|
||||
"restrictObjectCreation": true,
|
||||
"revision": 1
|
||||
},
|
||||
{
|
||||
"id": "template",
|
||||
|
@ -441,7 +447,8 @@
|
|||
"focalRatio",
|
||||
"fileExt"
|
||||
],
|
||||
"description": "Auto-generated object from .jpg \u0026 .png files added to Anytype. A representation of the external form of a person or thing in art"
|
||||
"description": "A representation of the external form of a person or thing in art",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "bug",
|
||||
|
@ -503,7 +510,8 @@
|
|||
"audioArtist",
|
||||
"audioLyrics"
|
||||
],
|
||||
"description": "Auto-generated object from .wav, .mp3, .ogg files added to Anytype. Sound when recorded, with ability to reproduce"
|
||||
"description": "Sound when recorded, with ability to reproduce",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "goal",
|
||||
|
@ -575,7 +583,8 @@
|
|||
"addedDate",
|
||||
"fileExt"
|
||||
],
|
||||
"description": "Auto-generated object from files added to Anytype. Computer resource for recording data in a computer storage device"
|
||||
"description": "Computer resource for recording data in a computer storage device",
|
||||
"restrictObjectCreation": true
|
||||
},
|
||||
{
|
||||
"id": "project",
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/util/vcs"
|
||||
)
|
||||
|
||||
const DefaultLogLevels = "common.commonspace.headsync=INFO;*=WARN"
|
||||
const DefaultLogLevels = "common.commonspace.headsync=INFO;core.block.editor.spaceview=INFO;*=WARN"
|
||||
|
||||
var DefaultCfg = logger.Config{
|
||||
Production: false,
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -663,6 +663,8 @@ message Restrictions {
|
|||
Template = 7;
|
||||
// restricts duplicate object
|
||||
Duplicate = 8;
|
||||
// can be set only for types. Restricts creating objects of this type
|
||||
CreateObjectOfThisType = 9;
|
||||
}
|
||||
|
||||
|
||||
|
@ -705,6 +707,7 @@ message ObjectType {
|
|||
bool installedByDefault = 11;
|
||||
string key = 12; // name of objectType (can be localized for bundled types)
|
||||
int64 revision = 13; // revision of system objectType. Used to check if we should change type content or not
|
||||
bool restrictObjectCreation = 14; // restricts creating objects of this type for users
|
||||
|
||||
enum Layout {
|
||||
basic = 0;
|
||||
|
|
|
@ -13,9 +13,12 @@ import (
|
|||
"github.com/anyproto/any-sync/net/peer"
|
||||
"github.com/anyproto/any-sync/util/crypto"
|
||||
"github.com/gogo/protobuf/types"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/profilemigration"
|
||||
"github.com/anyproto/anytype-heart/core/block/editor/smartblock"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/objectcache"
|
||||
"github.com/anyproto/anytype-heart/core/block/object/payloadcreator"
|
||||
"github.com/anyproto/anytype-heart/core/domain"
|
||||
"github.com/anyproto/anytype-heart/pkg/lib/bundle"
|
||||
coresb "github.com/anyproto/anytype-heart/pkg/lib/core/smartblock"
|
||||
|
@ -142,6 +145,10 @@ func (s *space) mandatoryObjectsLoad(ctx context.Context, disableRemoteLoad bool
|
|||
if s.loadMandatoryObjectsErr != nil {
|
||||
return
|
||||
}
|
||||
err := s.migrationProfileObject(ctx)
|
||||
if err != nil {
|
||||
log.Error("failed to migrate profile object", zap.Error(err))
|
||||
}
|
||||
if !disableRemoteLoad {
|
||||
s.common.TreeSyncer().StartSync()
|
||||
}
|
||||
|
@ -248,6 +255,63 @@ func (s *space) InstallBundledObjects(ctx context.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (s *space) migrationProfileObject(ctx context.Context) error {
|
||||
if !s.IsPersonal() {
|
||||
return nil
|
||||
}
|
||||
if s.derivedIDs.Profile == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
uniqueKey, err := domain.NewUniqueKey(coresb.SmartBlockTypePage, profilemigration.InternalKeyOldProfileData)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// lets do the cheap check if we already has this extracted object
|
||||
extractedProfileId, err := s.DeriveObjectID(ctx, uniqueKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
extractedProfileExists, _ := s.Storage().HasTree(extractedProfileId)
|
||||
if extractedProfileExists {
|
||||
return nil
|
||||
}
|
||||
|
||||
return s.Do(s.derivedIDs.Profile, func(sb smartblock.SmartBlock) error {
|
||||
st := sb.NewState()
|
||||
extractedState, err := profilemigration.ExtractCustomState(st)
|
||||
if err != nil {
|
||||
if err == profilemigration.ErrNoCustomStateFound {
|
||||
log.Error("no extra state found")
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
payload, err := s.DeriveTreePayload(ctx, payloadcreator.PayloadDerivationParams{UseAccountSignature: true, Key: uniqueKey})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
newSb, err := s.CreateTreeObjectWithPayload(ctx, payload, func(id string) *smartblock.InitContext {
|
||||
extractedState.SetRootId(id)
|
||||
return &smartblock.InitContext{
|
||||
IsNewObject: true,
|
||||
ObjectTypeKeys: []domain.TypeKey{bundle.TypeKeyPage},
|
||||
State: extractedState,
|
||||
SpaceID: s.Id(),
|
||||
}
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Warn("old profile custom state migrated")
|
||||
newSb.Close()
|
||||
|
||||
return sb.Apply(st)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *space) IsReadOnly() bool {
|
||||
return !s.CommonSpace().Acl().AclState().Permissions(s.myIdentity).CanWrite()
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"sync"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/anyproto/any-sync/app/debugstat"
|
||||
"github.com/anyproto/any-sync/app/logger"
|
||||
"github.com/anyproto/any-sync/commonspace/object/acl/aclrecordproto"
|
||||
"github.com/anyproto/any-sync/commonspace/object/acl/list"
|
||||
|
@ -53,6 +54,7 @@ type aclObjectManager struct {
|
|||
identityService dependencies.IdentityService
|
||||
indexer dependencies.SpaceIndexer
|
||||
notificationService notifications.Notifications
|
||||
statService debugstat.StatService
|
||||
started bool
|
||||
|
||||
ownerMetadata []byte
|
||||
|
@ -61,6 +63,26 @@ type aclObjectManager struct {
|
|||
addedParticipants map[string]struct{}
|
||||
}
|
||||
|
||||
func (a *aclObjectManager) ProvideStat() any {
|
||||
select {
|
||||
case <-a.waitLoad:
|
||||
if a.loadErr != nil {
|
||||
return parseAcl(nil, a.status.SpaceId())
|
||||
}
|
||||
return parseAcl(a.sp.CommonSpace().Acl(), a.status.SpaceId())
|
||||
default:
|
||||
return parseAcl(nil, a.status.SpaceId())
|
||||
}
|
||||
}
|
||||
|
||||
func (a *aclObjectManager) StatId() string {
|
||||
return a.status.SpaceId()
|
||||
}
|
||||
|
||||
func (a *aclObjectManager) StatType() string {
|
||||
return CName
|
||||
}
|
||||
|
||||
func (a *aclObjectManager) UpdateAcl(aclList list.AclList) {
|
||||
err := a.processAcl()
|
||||
if err != nil {
|
||||
|
@ -75,6 +97,11 @@ func (a *aclObjectManager) Init(ap *app.App) (err error) {
|
|||
a.indexer = app.MustComponent[dependencies.SpaceIndexer](ap)
|
||||
a.status = app.MustComponent[spacestatus.SpaceStatus](ap)
|
||||
a.notificationService = app.MustComponent[notifications.Notifications](ap)
|
||||
a.statService, _ = ap.Component(debugstat.CName).(debugstat.StatService)
|
||||
if a.statService == nil {
|
||||
a.statService = debugstat.NewNoOp()
|
||||
}
|
||||
a.statService.AddProvider(a)
|
||||
a.waitLoad = make(chan struct{})
|
||||
a.wait = make(chan struct{})
|
||||
return nil
|
||||
|
@ -103,6 +130,7 @@ func (a *aclObjectManager) Close(ctx context.Context) (err error) {
|
|||
a.cancel()
|
||||
<-a.wait
|
||||
a.identityService.UnregisterIdentitiesInSpace(a.status.SpaceId())
|
||||
a.statService.RemoveProvider(a)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -199,7 +227,19 @@ func (a *aclObjectManager) processAcl() (err error) {
|
|||
}
|
||||
a.mx.Lock()
|
||||
defer a.mx.Unlock()
|
||||
err = a.processStates(states, common.Acl().AclState().Identity())
|
||||
a.status.Lock()
|
||||
aclHeadId := a.status.LatestAclHeadId()
|
||||
a.status.Unlock()
|
||||
var upToDate bool
|
||||
if aclHeadId != "" {
|
||||
_, err := common.Acl().Get(aclHeadId)
|
||||
if err == nil {
|
||||
upToDate = true
|
||||
}
|
||||
} else {
|
||||
upToDate = true
|
||||
}
|
||||
err = a.processStates(states, upToDate, common.Acl().AclState().Identity())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -207,10 +247,10 @@ func (a *aclObjectManager) processAcl() (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func (a *aclObjectManager) processStates(states []list.AccountState, myIdentity crypto.PubKey) (err error) {
|
||||
func (a *aclObjectManager) processStates(states []list.AccountState, upToDate bool, myIdentity crypto.PubKey) (err error) {
|
||||
var numActiveUsers int
|
||||
for _, state := range states {
|
||||
if state.Permissions.NoPermissions() && state.PubKey.Equals(myIdentity) {
|
||||
if state.Permissions.NoPermissions() && state.PubKey.Equals(myIdentity) && upToDate {
|
||||
a.status.Lock()
|
||||
err := a.status.SetPersistentStatus(a.ctx, spaceinfo.AccountStatusRemoving)
|
||||
if err != nil {
|
||||
|
@ -304,7 +344,7 @@ func convertPermissions(permissions list.AclPermissions) model.ParticipantPermis
|
|||
case aclrecordproto.AclUserPermissions_Owner:
|
||||
return model.ParticipantPermissions_Owner
|
||||
}
|
||||
return model.ParticipantPermissions_Reader
|
||||
return model.ParticipantPermissions_NoPermissions
|
||||
}
|
||||
|
||||
func convertStatus(status list.AclStatus) model.ParticipantStatus {
|
||||
|
@ -359,11 +399,9 @@ func buildParticipantDetails(
|
|||
status model.ParticipantStatus,
|
||||
) *types.Struct {
|
||||
return &types.Struct{Fields: map[string]*types.Value{
|
||||
bundle.RelationKeyId.String(): pbtypes.String(id),
|
||||
bundle.RelationKeyIdentity.String(): pbtypes.String(identity),
|
||||
|
||||
bundle.RelationKeySpaceId.String(): pbtypes.String(spaceId),
|
||||
|
||||
bundle.RelationKeyId.String(): pbtypes.String(id),
|
||||
bundle.RelationKeyIdentity.String(): pbtypes.String(identity),
|
||||
bundle.RelationKeySpaceId.String(): pbtypes.String(spaceId),
|
||||
bundle.RelationKeyLastModifiedBy.String(): pbtypes.String(id),
|
||||
bundle.RelationKeyParticipantPermissions.String(): pbtypes.Int64(int64(permissions)),
|
||||
bundle.RelationKeyParticipantStatus.String(): pbtypes.Int64(int64(status)),
|
||||
|
|
83
space/internal/components/aclobjectmanager/stat.go
Normal file
83
space/internal/components/aclobjectmanager/stat.go
Normal file
|
@ -0,0 +1,83 @@
|
|||
package aclobjectmanager
|
||||
|
||||
import "github.com/anyproto/any-sync/commonspace/object/acl/list"
|
||||
|
||||
type accountStatus struct {
|
||||
Permission string `json:"permission"`
|
||||
Status string `json:"status"`
|
||||
Identity string `json:"identity"`
|
||||
}
|
||||
|
||||
type aclStat struct {
|
||||
TotalRecords int `json:"totalRecords"`
|
||||
Loaded bool `json:"loaded"`
|
||||
AclHeadId string `json:"aclHeadId"`
|
||||
SpaceId string `json:"spaceId"`
|
||||
AclId string
|
||||
Statuses []accountStatus `json:"statuses"`
|
||||
}
|
||||
|
||||
func parseAcl(acl list.AclList, spaceId string) aclStat {
|
||||
if acl == nil {
|
||||
return aclStat{
|
||||
Loaded: false,
|
||||
SpaceId: spaceId,
|
||||
}
|
||||
}
|
||||
acl.RLock()
|
||||
defer acl.RUnlock()
|
||||
statuses := make([]accountStatus, 0, len(acl.AclState().CurrentAccounts()))
|
||||
for _, acc := range acl.AclState().CurrentAccounts() {
|
||||
statuses = append(statuses, accountStatus{
|
||||
Permission: convPermissionToString(acc.Permissions),
|
||||
Status: convStatusToString(acc.Status),
|
||||
Identity: acc.PubKey.Account(),
|
||||
})
|
||||
}
|
||||
totalRecs := len(acl.Records())
|
||||
headId := acl.Head().Id
|
||||
return aclStat{
|
||||
TotalRecords: totalRecs,
|
||||
Loaded: true,
|
||||
SpaceId: spaceId,
|
||||
AclHeadId: headId,
|
||||
Statuses: statuses,
|
||||
AclId: acl.Id(),
|
||||
}
|
||||
}
|
||||
|
||||
func convPermissionToString(perm list.AclPermissions) string {
|
||||
switch perm {
|
||||
case list.AclPermissionsNone:
|
||||
return "none"
|
||||
case list.AclPermissionsReader:
|
||||
return "read"
|
||||
case list.AclPermissionsWriter:
|
||||
return "write"
|
||||
case list.AclPermissionsAdmin:
|
||||
return "admin"
|
||||
case list.AclPermissionsOwner:
|
||||
return "owner"
|
||||
}
|
||||
return "unknown"
|
||||
}
|
||||
|
||||
func convStatusToString(status list.AclStatus) string {
|
||||
switch status {
|
||||
case list.StatusJoining:
|
||||
return "joining"
|
||||
case list.StatusActive:
|
||||
return "active"
|
||||
case list.StatusDeclined:
|
||||
return "declined"
|
||||
case list.StatusRemoved:
|
||||
return "removed"
|
||||
case list.StatusRemoving:
|
||||
return "removing"
|
||||
case list.StatusCanceled:
|
||||
return "canceled"
|
||||
case list.StatusNone:
|
||||
return "none"
|
||||
}
|
||||
return "unknown"
|
||||
}
|
|
@ -34,16 +34,18 @@ type loadingSpace struct {
|
|||
// results
|
||||
stopIfMandatoryFail bool
|
||||
disableRemoteLoad bool
|
||||
latestAclHeadId string
|
||||
space clientspace.Space
|
||||
loadErr error
|
||||
loadCh chan struct{}
|
||||
}
|
||||
|
||||
func (s *spaceLoader) newLoadingSpace(ctx context.Context, stopIfMandatoryFail, disableRemoteLoad bool) *loadingSpace {
|
||||
func (s *spaceLoader) newLoadingSpace(ctx context.Context, stopIfMandatoryFail, disableRemoteLoad bool, aclHeadId string) *loadingSpace {
|
||||
ls := &loadingSpace{
|
||||
stopIfMandatoryFail: stopIfMandatoryFail,
|
||||
disableRemoteLoad: disableRemoteLoad,
|
||||
retryTimeout: loadingRetryTimeout,
|
||||
latestAclHeadId: aclHeadId,
|
||||
spaceServiceProvider: s,
|
||||
loadCh: make(chan struct{}),
|
||||
}
|
||||
|
@ -103,6 +105,15 @@ func (ls *loadingSpace) load(ctx context.Context) (ok bool) {
|
|||
}
|
||||
ls.loadErr = err
|
||||
} else {
|
||||
if ls.latestAclHeadId != "" && !ls.disableRemoteLoad {
|
||||
acl := sp.CommonSpace().Acl()
|
||||
acl.RLock()
|
||||
defer acl.RUnlock()
|
||||
_, err := acl.Get(ls.latestAclHeadId)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
}
|
||||
ls.space = sp
|
||||
}
|
||||
return true
|
||||
|
|
|
@ -104,7 +104,7 @@ func (s *spaceLoader) startLoad(ctx context.Context) (err error) {
|
|||
if err = s.status.SetLocalInfo(ctx, info); err != nil {
|
||||
return
|
||||
}
|
||||
s.loading = s.newLoadingSpace(s.ctx, s.stopIfMandatoryFail, s.disableRemoteLoad)
|
||||
s.loading = s.newLoadingSpace(s.ctx, s.stopIfMandatoryFail, s.disableRemoteLoad, s.status.LatestAclHeadId())
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"sync"
|
||||
|
||||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/anyproto/any-sync/app/debugstat"
|
||||
|
||||
"github.com/anyproto/anytype-heart/space/internal/techspace"
|
||||
"github.com/anyproto/anytype-heart/space/spaceinfo"
|
||||
|
@ -13,15 +14,18 @@ import (
|
|||
const CName = "client.components.spacestatus"
|
||||
|
||||
type SpaceStatus interface {
|
||||
app.Component
|
||||
app.ComponentRunnable
|
||||
sync.Locker
|
||||
SpaceId() string
|
||||
GetLocalStatus() spaceinfo.LocalStatus
|
||||
GetRemoteStatus() spaceinfo.RemoteStatus
|
||||
GetPersistentStatus() spaceinfo.AccountStatus
|
||||
LatestAclHeadId() string
|
||||
UpdatePersistentStatus(ctx context.Context, status spaceinfo.AccountStatus)
|
||||
UpdatePersistentInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo)
|
||||
SetRemoteStatus(ctx context.Context, status spaceinfo.RemoteStatus) error
|
||||
SetPersistentStatus(ctx context.Context, status spaceinfo.AccountStatus) (err error)
|
||||
SetPersistentInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) (err error)
|
||||
SetLocalStatus(ctx context.Context, status spaceinfo.LocalStatus) error
|
||||
SetLocalInfo(ctx context.Context, info spaceinfo.SpaceLocalInfo) (err error)
|
||||
SetAccessType(ctx context.Context, status spaceinfo.AccessType) (err error)
|
||||
|
@ -29,22 +33,57 @@ type SpaceStatus interface {
|
|||
|
||||
type spaceStatus struct {
|
||||
sync.Mutex
|
||||
spaceId string
|
||||
accountStatus spaceinfo.AccountStatus
|
||||
localStatus spaceinfo.LocalStatus
|
||||
remoteStatus spaceinfo.RemoteStatus
|
||||
techSpace techspace.TechSpace
|
||||
spaceId string
|
||||
accountStatus spaceinfo.AccountStatus
|
||||
localStatus spaceinfo.LocalStatus
|
||||
remoteStatus spaceinfo.RemoteStatus
|
||||
latestAclHeadId string
|
||||
techSpace techspace.TechSpace
|
||||
statService debugstat.StatService
|
||||
}
|
||||
|
||||
func New(spaceId string, accountStatus spaceinfo.AccountStatus) SpaceStatus {
|
||||
func (s *spaceStatus) ProvideStat() any {
|
||||
return spaceStatusStat{
|
||||
SpaceId: s.spaceId,
|
||||
AccountStatus: s.accountStatus.String(),
|
||||
LocalStatus: s.localStatus.String(),
|
||||
RemoteStatus: s.remoteStatus.String(),
|
||||
AclHeadId: s.latestAclHeadId,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *spaceStatus) StatId() string {
|
||||
return s.spaceId
|
||||
}
|
||||
|
||||
func (s *spaceStatus) StatType() string {
|
||||
return CName
|
||||
}
|
||||
|
||||
func New(spaceId string, accountStatus spaceinfo.AccountStatus, aclHeadId string) SpaceStatus {
|
||||
return &spaceStatus{
|
||||
accountStatus: accountStatus,
|
||||
spaceId: spaceId,
|
||||
accountStatus: accountStatus,
|
||||
spaceId: spaceId,
|
||||
latestAclHeadId: aclHeadId,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *spaceStatus) Init(a *app.App) (err error) {
|
||||
s.techSpace = a.MustComponent(techspace.CName).(techspace.TechSpace)
|
||||
s.statService, _ = a.Component(debugstat.CName).(debugstat.StatService)
|
||||
if s.statService == nil {
|
||||
s.statService = debugstat.NewNoOp()
|
||||
}
|
||||
s.statService.AddProvider(s)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *spaceStatus) Run(ctx context.Context) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *spaceStatus) Close(ctx context.Context) (err error) {
|
||||
s.statService.RemoveProvider(s)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -72,6 +111,15 @@ func (s *spaceStatus) UpdatePersistentStatus(ctx context.Context, status spacein
|
|||
s.accountStatus = status
|
||||
}
|
||||
|
||||
func (s *spaceStatus) UpdatePersistentInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) {
|
||||
s.accountStatus = info.AccountStatus
|
||||
s.latestAclHeadId = info.AclHeadId
|
||||
}
|
||||
|
||||
func (s *spaceStatus) LatestAclHeadId() string {
|
||||
return s.latestAclHeadId
|
||||
}
|
||||
|
||||
func (s *spaceStatus) SetRemoteStatus(ctx context.Context, status spaceinfo.RemoteStatus) error {
|
||||
s.remoteStatus = status
|
||||
return s.setCurrentLocalInfo(ctx)
|
||||
|
@ -91,6 +139,20 @@ func (s *spaceStatus) SetLocalInfo(ctx context.Context, info spaceinfo.SpaceLoca
|
|||
return s.setCurrentLocalInfo(ctx)
|
||||
}
|
||||
|
||||
func (s *spaceStatus) SetPersistentInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) (err error) {
|
||||
if s.GetPersistentStatus() == info.AccountStatus {
|
||||
return nil
|
||||
}
|
||||
if err = s.techSpace.SetPersistentInfo(ctx, info); err != nil {
|
||||
return err
|
||||
}
|
||||
s.accountStatus = info.AccountStatus
|
||||
if info.AclHeadId != "" {
|
||||
s.latestAclHeadId = info.AclHeadId
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *spaceStatus) SetPersistentStatus(ctx context.Context, status spaceinfo.AccountStatus) (err error) {
|
||||
if s.GetPersistentStatus() == status {
|
||||
return nil
|
||||
|
@ -116,3 +178,11 @@ func (s *spaceStatus) setCurrentLocalInfo(ctx context.Context) (err error) {
|
|||
func (s *spaceStatus) SetAccessType(ctx context.Context, acc spaceinfo.AccessType) (err error) {
|
||||
return s.techSpace.SetAccessType(ctx, s.spaceId, acc)
|
||||
}
|
||||
|
||||
type spaceStatusStat struct {
|
||||
SpaceId string `json:"spaceId"`
|
||||
AccountStatus string `json:"accountStatus"`
|
||||
LocalStatus string `json:"localStatus"`
|
||||
RemoteStatus string `json:"remoteStatus"`
|
||||
AclHeadId string `json:"aclHeadId"`
|
||||
}
|
||||
|
|
|
@ -76,11 +76,11 @@ func (s *spaceController) SpaceId() string {
|
|||
return addr.AnytypeMarketplaceWorkspace
|
||||
}
|
||||
|
||||
func (s *spaceController) UpdateStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
func (s *spaceController) UpdateInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *spaceController) SetStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
func (s *spaceController) SetInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ func (s *spaceController) Start(ctx context.Context) (err error) {
|
|||
err = s.loader.Start(ctx)
|
||||
// This could happen for old accounts
|
||||
if errors.Is(err, spaceloader.ErrSpaceNotExists) {
|
||||
err = s.techSpace.SpaceViewCreate(ctx, s.spaceId, false, spaceinfo.AccountStatusUnknown)
|
||||
err = s.techSpace.SpaceViewCreate(ctx, s.spaceId, false, spaceinfo.SpacePersistentInfo{AccountStatus: spaceinfo.AccountStatusUnknown})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -89,17 +89,17 @@ func (s *spaceController) SpaceId() string {
|
|||
func (s *spaceController) newLoader() loader.Loader {
|
||||
return loader.New(s.app, loader.Params{
|
||||
SpaceId: s.spaceId,
|
||||
Status: spacestatus.New(s.spaceId, spaceinfo.AccountStatusUnknown),
|
||||
Status: spacestatus.New(s.spaceId, spaceinfo.AccountStatusUnknown, ""),
|
||||
StopIfMandatoryFail: true,
|
||||
OwnerMetadata: s.metadata,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *spaceController) UpdateStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
func (s *spaceController) UpdateInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *spaceController) SetStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
func (s *spaceController) SetInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -31,12 +31,12 @@ type spaceController struct {
|
|||
|
||||
func NewSpaceController(
|
||||
spaceId string,
|
||||
status spaceinfo.AccountStatus,
|
||||
info spaceinfo.SpacePersistentInfo,
|
||||
a *app.App) (spacecontroller.SpaceController, error) {
|
||||
s := &spaceController{
|
||||
spaceId: spaceId,
|
||||
status: spacestatus.New(spaceId, status),
|
||||
lastUpdatedStatus: status,
|
||||
status: spacestatus.New(spaceId, info.AccountStatus, info.AclHeadId),
|
||||
lastUpdatedStatus: info.AccountStatus,
|
||||
app: a,
|
||||
}
|
||||
sm, err := mode.NewStateMachine(s, log.With(zap.String("spaceId", spaceId)))
|
||||
|
@ -76,33 +76,33 @@ func (s *spaceController) Current() any {
|
|||
return s.sm.GetProcess()
|
||||
}
|
||||
|
||||
func (s *spaceController) SetStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
func (s *spaceController) SetInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
s.status.Lock()
|
||||
err := s.status.SetPersistentStatus(ctx, status)
|
||||
err := s.status.SetPersistentInfo(ctx, info)
|
||||
if err != nil {
|
||||
s.status.Unlock()
|
||||
return err
|
||||
}
|
||||
s.status.Unlock()
|
||||
return s.UpdateStatus(ctx, status)
|
||||
return s.UpdateInfo(ctx, info)
|
||||
}
|
||||
|
||||
func (s *spaceController) UpdateStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
func (s *spaceController) UpdateInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
s.status.Lock()
|
||||
if s.lastUpdatedStatus == status || (s.lastUpdatedStatus == spaceinfo.AccountStatusDeleted && status == spaceinfo.AccountStatusRemoving) {
|
||||
if s.lastUpdatedStatus == info.AccountStatus || (s.lastUpdatedStatus == spaceinfo.AccountStatusDeleted && info.AccountStatus == spaceinfo.AccountStatusRemoving) {
|
||||
s.status.Unlock()
|
||||
return nil
|
||||
}
|
||||
s.lastUpdatedStatus = status
|
||||
s.lastUpdatedStatus = info.AccountStatus
|
||||
s.status.Unlock()
|
||||
updateStatus := func(mode mode.Mode) error {
|
||||
s.status.Lock()
|
||||
s.status.UpdatePersistentStatus(ctx, status)
|
||||
s.status.UpdatePersistentInfo(ctx, info)
|
||||
s.status.Unlock()
|
||||
_, err := s.sm.ChangeMode(mode)
|
||||
return err
|
||||
}
|
||||
switch status {
|
||||
switch info.AccountStatus {
|
||||
case spaceinfo.AccountStatusDeleted:
|
||||
return updateStatus(mode.ModeOffloading)
|
||||
case spaceinfo.AccountStatusJoining:
|
||||
|
|
|
@ -36,6 +36,26 @@ type spaceStatusMock struct {
|
|||
persistentUpdater func(status spaceinfo.AccountStatus)
|
||||
}
|
||||
|
||||
func (s *spaceStatusMock) Run(ctx context.Context) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *spaceStatusMock) Close(ctx context.Context) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *spaceStatusMock) LatestAclHeadId() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (s *spaceStatusMock) UpdatePersistentInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) {
|
||||
s.UpdatePersistentStatus(ctx, info.AccountStatus)
|
||||
}
|
||||
|
||||
func (s *spaceStatusMock) SetPersistentInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) (err error) {
|
||||
return s.SetPersistentStatus(ctx, info.AccountStatus)
|
||||
}
|
||||
|
||||
var _ spacestatus.SpaceStatus = (*spaceStatusMock)(nil)
|
||||
|
||||
func (s *spaceStatusMock) Init(a *app.App) (err error) {
|
||||
|
@ -236,7 +256,9 @@ func newFixture(t *testing.T, startStatus spaceinfo.AccountStatus) *fixture {
|
|||
}
|
||||
s.persistentUpdater = func(status spaceinfo.AccountStatus) {
|
||||
go func() {
|
||||
err := controller.UpdateStatus(context.Background(), status)
|
||||
err := controller.UpdateInfo(context.Background(), spaceinfo.SpacePersistentInfo{
|
||||
AccountStatus: status,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
}()
|
||||
}
|
||||
|
@ -272,7 +294,9 @@ func TestSpaceController_LoadingDeleting(t *testing.T) {
|
|||
err := fx.ctrl.Start(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, mode.ModeLoading, fx.ctrl.Mode())
|
||||
err = fx.ctrl.UpdateStatus(context.Background(), spaceinfo.AccountStatusDeleted)
|
||||
err = fx.ctrl.UpdateInfo(context.Background(), spaceinfo.SpacePersistentInfo{
|
||||
AccountStatus: spaceinfo.AccountStatusDeleted,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
fx.reg.Lock()
|
||||
defer fx.reg.Unlock()
|
||||
|
@ -289,7 +313,9 @@ func TestSpaceController_LoadingDeletingMultipleWaiters(t *testing.T) {
|
|||
for i := 0; i < 10; i++ {
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
err := fx.ctrl.UpdateStatus(context.Background(), spaceinfo.AccountStatusDeleted)
|
||||
err := fx.ctrl.UpdateInfo(context.Background(), spaceinfo.SpacePersistentInfo{
|
||||
AccountStatus: spaceinfo.AccountStatusDeleted,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
wg.Done()
|
||||
}()
|
||||
|
@ -318,7 +344,9 @@ func TestSpaceController_DeletingInvalid(t *testing.T) {
|
|||
err := fx.ctrl.Start(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, mode.ModeOffloading, fx.ctrl.Mode())
|
||||
err = fx.ctrl.UpdateStatus(context.Background(), spaceinfo.AccountStatusActive)
|
||||
err = fx.ctrl.UpdateInfo(context.Background(), spaceinfo.SpacePersistentInfo{
|
||||
AccountStatus: spaceinfo.AccountStatusActive,
|
||||
})
|
||||
require.Error(t, err)
|
||||
fx.reg.Lock()
|
||||
defer fx.reg.Unlock()
|
||||
|
|
|
@ -162,17 +162,17 @@ func (_c *MockSpaceController_Mode_Call) RunAndReturn(run func() mode.Mode) *Moc
|
|||
return _c
|
||||
}
|
||||
|
||||
// SetStatus provides a mock function with given fields: ctx, status
|
||||
func (_m *MockSpaceController) SetStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
ret := _m.Called(ctx, status)
|
||||
// SetInfo provides a mock function with given fields: ctx, info
|
||||
func (_m *MockSpaceController) SetInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
ret := _m.Called(ctx, info)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for SetStatus")
|
||||
panic("no return value specified for SetInfo")
|
||||
}
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, spaceinfo.AccountStatus) error); ok {
|
||||
r0 = rf(ctx, status)
|
||||
if rf, ok := ret.Get(0).(func(context.Context, spaceinfo.SpacePersistentInfo) error); ok {
|
||||
r0 = rf(ctx, info)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
@ -180,31 +180,31 @@ func (_m *MockSpaceController) SetStatus(ctx context.Context, status spaceinfo.A
|
|||
return r0
|
||||
}
|
||||
|
||||
// MockSpaceController_SetStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetStatus'
|
||||
type MockSpaceController_SetStatus_Call struct {
|
||||
// MockSpaceController_SetInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SetInfo'
|
||||
type MockSpaceController_SetInfo_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// SetStatus is a helper method to define mock.On call
|
||||
// SetInfo is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - status spaceinfo.AccountStatus
|
||||
func (_e *MockSpaceController_Expecter) SetStatus(ctx interface{}, status interface{}) *MockSpaceController_SetStatus_Call {
|
||||
return &MockSpaceController_SetStatus_Call{Call: _e.mock.On("SetStatus", ctx, status)}
|
||||
// - info spaceinfo.SpacePersistentInfo
|
||||
func (_e *MockSpaceController_Expecter) SetInfo(ctx interface{}, info interface{}) *MockSpaceController_SetInfo_Call {
|
||||
return &MockSpaceController_SetInfo_Call{Call: _e.mock.On("SetInfo", ctx, info)}
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_SetStatus_Call) Run(run func(ctx context.Context, status spaceinfo.AccountStatus)) *MockSpaceController_SetStatus_Call {
|
||||
func (_c *MockSpaceController_SetInfo_Call) Run(run func(ctx context.Context, info spaceinfo.SpacePersistentInfo)) *MockSpaceController_SetInfo_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(spaceinfo.AccountStatus))
|
||||
run(args[0].(context.Context), args[1].(spaceinfo.SpacePersistentInfo))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_SetStatus_Call) Return(_a0 error) *MockSpaceController_SetStatus_Call {
|
||||
func (_c *MockSpaceController_SetInfo_Call) Return(_a0 error) *MockSpaceController_SetInfo_Call {
|
||||
_c.Call.Return(_a0)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_SetStatus_Call) RunAndReturn(run func(context.Context, spaceinfo.AccountStatus) error) *MockSpaceController_SetStatus_Call {
|
||||
func (_c *MockSpaceController_SetInfo_Call) RunAndReturn(run func(context.Context, spaceinfo.SpacePersistentInfo) error) *MockSpaceController_SetInfo_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
@ -300,6 +300,53 @@ func (_c *MockSpaceController_Start_Call) RunAndReturn(run func(context.Context)
|
|||
return _c
|
||||
}
|
||||
|
||||
// UpdateInfo provides a mock function with given fields: ctx, info
|
||||
func (_m *MockSpaceController) UpdateInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error {
|
||||
ret := _m.Called(ctx, info)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for UpdateInfo")
|
||||
}
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, spaceinfo.SpacePersistentInfo) error); ok {
|
||||
r0 = rf(ctx, info)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// MockSpaceController_UpdateInfo_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateInfo'
|
||||
type MockSpaceController_UpdateInfo_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// UpdateInfo is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - info spaceinfo.SpacePersistentInfo
|
||||
func (_e *MockSpaceController_Expecter) UpdateInfo(ctx interface{}, info interface{}) *MockSpaceController_UpdateInfo_Call {
|
||||
return &MockSpaceController_UpdateInfo_Call{Call: _e.mock.On("UpdateInfo", ctx, info)}
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_UpdateInfo_Call) Run(run func(ctx context.Context, info spaceinfo.SpacePersistentInfo)) *MockSpaceController_UpdateInfo_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(spaceinfo.SpacePersistentInfo))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_UpdateInfo_Call) Return(_a0 error) *MockSpaceController_UpdateInfo_Call {
|
||||
_c.Call.Return(_a0)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_UpdateInfo_Call) RunAndReturn(run func(context.Context, spaceinfo.SpacePersistentInfo) error) *MockSpaceController_UpdateInfo_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// UpdateRemoteStatus provides a mock function with given fields: ctx, status
|
||||
func (_m *MockSpaceController) UpdateRemoteStatus(ctx context.Context, status spaceinfo.RemoteStatus) error {
|
||||
ret := _m.Called(ctx, status)
|
||||
|
@ -347,53 +394,6 @@ func (_c *MockSpaceController_UpdateRemoteStatus_Call) RunAndReturn(run func(con
|
|||
return _c
|
||||
}
|
||||
|
||||
// UpdateStatus provides a mock function with given fields: ctx, status
|
||||
func (_m *MockSpaceController) UpdateStatus(ctx context.Context, status spaceinfo.AccountStatus) error {
|
||||
ret := _m.Called(ctx, status)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for UpdateStatus")
|
||||
}
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, spaceinfo.AccountStatus) error); ok {
|
||||
r0 = rf(ctx, status)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// MockSpaceController_UpdateStatus_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateStatus'
|
||||
type MockSpaceController_UpdateStatus_Call struct {
|
||||
*mock.Call
|
||||
}
|
||||
|
||||
// UpdateStatus is a helper method to define mock.On call
|
||||
// - ctx context.Context
|
||||
// - status spaceinfo.AccountStatus
|
||||
func (_e *MockSpaceController_Expecter) UpdateStatus(ctx interface{}, status interface{}) *MockSpaceController_UpdateStatus_Call {
|
||||
return &MockSpaceController_UpdateStatus_Call{Call: _e.mock.On("UpdateStatus", ctx, status)}
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_UpdateStatus_Call) Run(run func(ctx context.Context, status spaceinfo.AccountStatus)) *MockSpaceController_UpdateStatus_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(spaceinfo.AccountStatus))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_UpdateStatus_Call) Return(_a0 error) *MockSpaceController_UpdateStatus_Call {
|
||||
_c.Call.Return(_a0)
|
||||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockSpaceController_UpdateStatus_Call) RunAndReturn(run func(context.Context, spaceinfo.AccountStatus) error) *MockSpaceController_UpdateStatus_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
||||
// NewMockSpaceController creates a new instance of MockSpaceController. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
|
||||
// The first argument is typically a *testing.T value.
|
||||
func NewMockSpaceController(t interface {
|
||||
|
|
|
@ -12,8 +12,8 @@ type SpaceController interface {
|
|||
Start(ctx context.Context) error
|
||||
Mode() mode.Mode
|
||||
Current() any
|
||||
UpdateStatus(ctx context.Context, status spaceinfo.AccountStatus) error
|
||||
SetStatus(ctx context.Context, status spaceinfo.AccountStatus) error
|
||||
UpdateInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error
|
||||
SetInfo(ctx context.Context, info spaceinfo.SpacePersistentInfo) error
|
||||
UpdateRemoteStatus(ctx context.Context, status spaceinfo.RemoteStatus) error
|
||||
Close(ctx context.Context) error
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"github.com/anyproto/any-sync/app"
|
||||
"github.com/anyproto/any-sync/app/logger"
|
||||
"github.com/anyproto/any-sync/commonspace/acl/aclwaiter"
|
||||
"github.com/anyproto/any-sync/commonspace/object/acl/list"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/anyproto/anytype-heart/space/internal/components/spacestatus"
|
||||
|
@ -29,17 +30,41 @@ type Params struct {
|
|||
|
||||
func New(app *app.App, params Params) Joiner {
|
||||
child := app.ChildApp()
|
||||
params.Status.Lock()
|
||||
joinHeadId := params.Status.LatestAclHeadId()
|
||||
params.Status.Unlock()
|
||||
child.Register(params.Status).
|
||||
Register(newStatusChanger()).
|
||||
Register(aclwaiter.New(params.SpaceId, func() error {
|
||||
params.Status.Lock()
|
||||
defer params.Status.Unlock()
|
||||
err := params.Status.SetPersistentStatus(context.Background(), spaceinfo.AccountStatusActive)
|
||||
if err != nil {
|
||||
params.Log.Error("failed to set persistent status", zap.Error(err))
|
||||
}
|
||||
return err
|
||||
}))
|
||||
Register(aclwaiter.New(params.SpaceId,
|
||||
joinHeadId,
|
||||
// onFinish
|
||||
func(acl list.AclList) error {
|
||||
params.Status.Lock()
|
||||
defer params.Status.Unlock()
|
||||
err := params.Status.SetPersistentInfo(context.Background(), spaceinfo.SpacePersistentInfo{
|
||||
SpaceID: params.SpaceId,
|
||||
AccountStatus: spaceinfo.AccountStatusActive,
|
||||
AclHeadId: acl.Head().Id,
|
||||
})
|
||||
if err != nil {
|
||||
params.Log.Error("failed to set persistent status", zap.Error(err))
|
||||
}
|
||||
return err
|
||||
},
|
||||
// onReject
|
||||
func(acl list.AclList) error {
|
||||
params.Status.Lock()
|
||||
defer params.Status.Unlock()
|
||||
err := params.Status.SetPersistentInfo(context.Background(), spaceinfo.SpacePersistentInfo{
|
||||
SpaceID: params.SpaceId,
|
||||
AccountStatus: spaceinfo.AccountStatusDeleted,
|
||||
AclHeadId: acl.Head().Id,
|
||||
})
|
||||
if err != nil {
|
||||
params.Log.Error("failed to set persistent status", zap.Error(err))
|
||||
}
|
||||
return err
|
||||
}))
|
||||
return &joiner{
|
||||
app: child,
|
||||
}
|
||||
|
|
|
@ -356,17 +356,17 @@ func (_c *MockTechSpace_SetPersistentInfo_Call) RunAndReturn(run func(context.Co
|
|||
return _c
|
||||
}
|
||||
|
||||
// SpaceViewCreate provides a mock function with given fields: ctx, spaceId, force, status
|
||||
func (_m *MockTechSpace) SpaceViewCreate(ctx context.Context, spaceId string, force bool, status spaceinfo.AccountStatus) error {
|
||||
ret := _m.Called(ctx, spaceId, force, status)
|
||||
// SpaceViewCreate provides a mock function with given fields: ctx, spaceId, force, info
|
||||
func (_m *MockTechSpace) SpaceViewCreate(ctx context.Context, spaceId string, force bool, info spaceinfo.SpacePersistentInfo) error {
|
||||
ret := _m.Called(ctx, spaceId, force, info)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for SpaceViewCreate")
|
||||
}
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, bool, spaceinfo.AccountStatus) error); ok {
|
||||
r0 = rf(ctx, spaceId, force, status)
|
||||
if rf, ok := ret.Get(0).(func(context.Context, string, bool, spaceinfo.SpacePersistentInfo) error); ok {
|
||||
r0 = rf(ctx, spaceId, force, info)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
@ -383,14 +383,14 @@ type MockTechSpace_SpaceViewCreate_Call struct {
|
|||
// - ctx context.Context
|
||||
// - spaceId string
|
||||
// - force bool
|
||||
// - status spaceinfo.AccountStatus
|
||||
func (_e *MockTechSpace_Expecter) SpaceViewCreate(ctx interface{}, spaceId interface{}, force interface{}, status interface{}) *MockTechSpace_SpaceViewCreate_Call {
|
||||
return &MockTechSpace_SpaceViewCreate_Call{Call: _e.mock.On("SpaceViewCreate", ctx, spaceId, force, status)}
|
||||
// - info spaceinfo.SpacePersistentInfo
|
||||
func (_e *MockTechSpace_Expecter) SpaceViewCreate(ctx interface{}, spaceId interface{}, force interface{}, info interface{}) *MockTechSpace_SpaceViewCreate_Call {
|
||||
return &MockTechSpace_SpaceViewCreate_Call{Call: _e.mock.On("SpaceViewCreate", ctx, spaceId, force, info)}
|
||||
}
|
||||
|
||||
func (_c *MockTechSpace_SpaceViewCreate_Call) Run(run func(ctx context.Context, spaceId string, force bool, status spaceinfo.AccountStatus)) *MockTechSpace_SpaceViewCreate_Call {
|
||||
func (_c *MockTechSpace_SpaceViewCreate_Call) Run(run func(ctx context.Context, spaceId string, force bool, info spaceinfo.SpacePersistentInfo)) *MockTechSpace_SpaceViewCreate_Call {
|
||||
_c.Call.Run(func(args mock.Arguments) {
|
||||
run(args[0].(context.Context), args[1].(string), args[2].(bool), args[3].(spaceinfo.AccountStatus))
|
||||
run(args[0].(context.Context), args[1].(string), args[2].(bool), args[3].(spaceinfo.SpacePersistentInfo))
|
||||
})
|
||||
return _c
|
||||
}
|
||||
|
@ -400,7 +400,7 @@ func (_c *MockTechSpace_SpaceViewCreate_Call) Return(err error) *MockTechSpace_S
|
|||
return _c
|
||||
}
|
||||
|
||||
func (_c *MockTechSpace_SpaceViewCreate_Call) RunAndReturn(run func(context.Context, string, bool, spaceinfo.AccountStatus) error) *MockTechSpace_SpaceViewCreate_Call {
|
||||
func (_c *MockTechSpace_SpaceViewCreate_Call) RunAndReturn(run func(context.Context, string, bool, spaceinfo.SpacePersistentInfo) error) *MockTechSpace_SpaceViewCreate_Call {
|
||||
_c.Call.Return(run)
|
||||
return _c
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ type TechSpace interface {
|
|||
Close(ctx context.Context) (err error)
|
||||
|
||||
TechSpaceId() string
|
||||
SpaceViewCreate(ctx context.Context, spaceId string, force bool, status spaceinfo.AccountStatus) (err error)
|
||||
SpaceViewCreate(ctx context.Context, spaceId string, force bool, info spaceinfo.SpacePersistentInfo) (err error)
|
||||
SpaceViewExists(ctx context.Context, spaceId string) (exists bool, err error)
|
||||
SetLocalInfo(ctx context.Context, info spaceinfo.SpaceLocalInfo) (err error)
|
||||
SetAccessType(ctx context.Context, spaceId string, acc spaceinfo.AccessType) (err error)
|
||||
|
@ -136,9 +136,9 @@ func (s *techSpace) SetPersistentInfo(ctx context.Context, info spaceinfo.SpaceP
|
|||
})
|
||||
}
|
||||
|
||||
func (s *techSpace) SpaceViewCreate(ctx context.Context, spaceId string, force bool, status spaceinfo.AccountStatus) (err error) {
|
||||
func (s *techSpace) SpaceViewCreate(ctx context.Context, spaceId string, force bool, info spaceinfo.SpacePersistentInfo) (err error) {
|
||||
if force {
|
||||
return s.spaceViewCreate(ctx, spaceId, status)
|
||||
return s.spaceViewCreate(ctx, spaceId, info)
|
||||
}
|
||||
viewId, err := s.getViewIdLocked(ctx, spaceId)
|
||||
if err != nil {
|
||||
|
@ -146,7 +146,7 @@ func (s *techSpace) SpaceViewCreate(ctx context.Context, spaceId string, force b
|
|||
}
|
||||
_, err = s.objectCache.GetObject(ctx, viewId)
|
||||
if err != nil { // TODO: check specific error
|
||||
return s.spaceViewCreate(ctx, spaceId, status)
|
||||
return s.spaceViewCreate(ctx, spaceId, info)
|
||||
}
|
||||
return ErrSpaceViewExists
|
||||
}
|
||||
|
@ -173,14 +173,17 @@ func (s *techSpace) SpaceViewId(spaceId string) (string, error) {
|
|||
return s.getViewIdLocked(context.TODO(), spaceId)
|
||||
}
|
||||
|
||||
func (s *techSpace) spaceViewCreate(ctx context.Context, spaceID string, status spaceinfo.AccountStatus) (err error) {
|
||||
func (s *techSpace) spaceViewCreate(ctx context.Context, spaceID string, info spaceinfo.SpacePersistentInfo) (err error) {
|
||||
uniqueKey, err := domain.NewUniqueKey(smartblock.SmartBlockTypeSpaceView, spaceID)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
initFunc := func(id string) *editorsb.InitContext {
|
||||
st := state.NewDoc(id, nil).(*state.State)
|
||||
st.SetDetail(bundle.RelationKeySpaceAccountStatus.String(), pbtypes.Int64(int64(status)))
|
||||
st.SetDetail(bundle.RelationKeySpaceAccountStatus.String(), pbtypes.Int64(int64(info.AccountStatus)))
|
||||
if info.AclHeadId != "" {
|
||||
st.SetDetail(bundle.RelationKeyLatestAclHeadId.String(), pbtypes.String(info.AclHeadId))
|
||||
}
|
||||
return &editorsb.InitContext{Ctx: ctx, SpaceID: s.techCore.Id(), State: st}
|
||||
}
|
||||
_, err = s.objectCache.DeriveTreeObject(ctx, objectcache.TreeDerivationParams{
|
||||
|
|
|
@ -78,7 +78,7 @@ func TestTechSpace_SpaceViewCreate(t *testing.T) {
|
|||
fx.objectCache.EXPECT().GetObject(ctx, viewId).Return(nil, fmt.Errorf("not found"))
|
||||
fx.objectCache.EXPECT().DeriveTreeObject(ctx, mock.Anything).Return(view, nil)
|
||||
|
||||
require.NoError(t, fx.SpaceViewCreate(ctx, spaceId, false, spaceinfo.AccountStatusUnknown))
|
||||
require.NoError(t, fx.SpaceViewCreate(ctx, spaceId, false, spaceinfo.SpacePersistentInfo{AccountStatus: spaceinfo.AccountStatusUnknown}))
|
||||
})
|
||||
|
||||
t.Run("err spaceView exists", func(t *testing.T) {
|
||||
|
@ -88,7 +88,7 @@ func TestTechSpace_SpaceViewCreate(t *testing.T) {
|
|||
fx.expectDeriveTreePayload(viewId)
|
||||
fx.objectCache.EXPECT().GetObject(ctx, viewId).Return(view, nil)
|
||||
|
||||
assert.EqualError(t, fx.SpaceViewCreate(ctx, spaceId, false, spaceinfo.AccountStatusUnknown), ErrSpaceViewExists.Error())
|
||||
assert.EqualError(t, fx.SpaceViewCreate(ctx, spaceId, false, spaceinfo.SpacePersistentInfo{AccountStatus: spaceinfo.AccountStatusUnknown}), ErrSpaceViewExists.Error())
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"github.com/anyproto/anytype-heart/space/spaceinfo"
|
||||
)
|
||||
|
||||
func (s *service) Join(ctx context.Context, id string) error {
|
||||
func (s *service) Join(ctx context.Context, id, aclHeadId string) error {
|
||||
s.mu.Lock()
|
||||
waiter, exists := s.waiting[id]
|
||||
if exists {
|
||||
|
@ -20,7 +20,11 @@ func (s *service) Join(ctx context.Context, id string) error {
|
|||
ctrl := s.spaceControllers[id]
|
||||
s.mu.Unlock()
|
||||
if ctrl.Mode() != mode.ModeJoining {
|
||||
return ctrl.SetStatus(ctx, spaceinfo.AccountStatusJoining)
|
||||
return ctrl.SetInfo(ctx, spaceinfo.SpacePersistentInfo{
|
||||
SpaceID: id,
|
||||
AccountStatus: spaceinfo.AccountStatusJoining,
|
||||
AclHeadId: aclHeadId,
|
||||
})
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -29,7 +33,7 @@ func (s *service) Join(ctx context.Context, id string) error {
|
|||
wait: wait,
|
||||
}
|
||||
s.mu.Unlock()
|
||||
ctrl, err := s.factory.CreateInvitingSpace(ctx, id)
|
||||
ctrl, err := s.factory.CreateInvitingSpace(ctx, id, aclHeadId)
|
||||
if err != nil {
|
||||
s.mu.Lock()
|
||||
close(wait)
|
||||
|
@ -46,3 +50,10 @@ func (s *service) Join(ctx context.Context, id string) error {
|
|||
s.mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *service) CancelLeave(ctx context.Context, id string) error {
|
||||
return s.techSpace.SetPersistentInfo(ctx, spaceinfo.SpacePersistentInfo{
|
||||
SpaceID: id,
|
||||
AccountStatus: spaceinfo.AccountStatusActive,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ type controllerWaiter struct {
|
|||
err error
|
||||
}
|
||||
|
||||
func (s *service) startStatus(ctx context.Context, spaceId string, status spaceinfo.AccountStatus) (ctrl spacecontroller.SpaceController, err error) {
|
||||
func (s *service) getStatus(ctx context.Context, spaceId string) (ctrl spacecontroller.SpaceController, err error) {
|
||||
s.mu.Lock()
|
||||
if ctrl, ok := s.spaceControllers[spaceId]; ok {
|
||||
s.mu.Unlock()
|
||||
|
@ -38,23 +38,50 @@ func (s *service) startStatus(ctx context.Context, spaceId string, status spacei
|
|||
s.mu.Unlock()
|
||||
return ctrl, nil
|
||||
}
|
||||
s.mu.Unlock()
|
||||
return nil, ErrSpaceNotExists
|
||||
}
|
||||
|
||||
func (s *service) startStatus(ctx context.Context, info spaceinfo.SpacePersistentInfo) (ctrl spacecontroller.SpaceController, err error) {
|
||||
s.mu.Lock()
|
||||
if ctrl, ok := s.spaceControllers[info.SpaceID]; ok {
|
||||
s.mu.Unlock()
|
||||
return ctrl, nil
|
||||
}
|
||||
if w, ok := s.waiting[info.SpaceID]; ok {
|
||||
s.mu.Unlock()
|
||||
select {
|
||||
case <-w.wait:
|
||||
case <-ctx.Done():
|
||||
return nil, ctx.Err()
|
||||
}
|
||||
s.mu.Lock()
|
||||
err := s.waiting[info.SpaceID].err
|
||||
if err != nil {
|
||||
s.mu.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
ctrl := s.spaceControllers[info.SpaceID]
|
||||
s.mu.Unlock()
|
||||
return ctrl, nil
|
||||
}
|
||||
wait := make(chan struct{})
|
||||
s.waiting[spaceId] = controllerWaiter{
|
||||
s.waiting[info.SpaceID] = controllerWaiter{
|
||||
wait: wait,
|
||||
}
|
||||
s.mu.Unlock()
|
||||
ctrl, err = s.factory.NewShareableSpace(ctx, spaceId, status)
|
||||
ctrl, err = s.factory.NewShareableSpace(ctx, info.SpaceID, info)
|
||||
s.mu.Lock()
|
||||
close(wait)
|
||||
if err != nil {
|
||||
s.waiting[spaceId] = controllerWaiter{
|
||||
s.waiting[info.SpaceID] = controllerWaiter{
|
||||
wait: wait,
|
||||
err: err,
|
||||
}
|
||||
s.mu.Unlock()
|
||||
return nil, err
|
||||
}
|
||||
s.spaceControllers[spaceId] = ctrl
|
||||
s.spaceControllers[info.SpaceID] = ctrl
|
||||
s.mu.Unlock()
|
||||
return ctrl, nil
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue