Merge pull request #4485 from thaJeztah/update_engine

vendor: github.com/docker/docker 4b19b2f4babd (25.0-dev)
This commit is contained in:
Sebastiaan van Stijn 2023-08-08 17:29:41 +02:00 committed by GitHub
commit dc1359230f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 756 additions and 612 deletions

View File

@ -96,5 +96,5 @@ func (c *searchContext) IsOfficial() string {
} }
func (c *searchContext) IsAutomated() string { func (c *searchContext) IsAutomated() string {
return c.formatBool(c.s.IsAutomated) return c.formatBool(c.s.IsAutomated) //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
} }

View File

@ -37,10 +37,10 @@ func TestSearchContext(t *testing.T) {
s: registrytypes.SearchResult{IsOfficial: false}, s: registrytypes.SearchResult{IsOfficial: false},
}, "", ctx.IsOfficial}, }, "", ctx.IsOfficial},
{searchContext{ {searchContext{
s: registrytypes.SearchResult{IsAutomated: true}, s: registrytypes.SearchResult{IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
}, "[OK]", ctx.IsAutomated}, }, "[OK]", ctx.IsAutomated},
{searchContext{ {searchContext{
s: registrytypes.SearchResult{IsAutomated: false}, s: registrytypes.SearchResult{},
}, "", ctx.IsAutomated}, }, "", ctx.IsAutomated},
} }
@ -146,8 +146,8 @@ result2 5
} }
results := []registrytypes.SearchResult{ results := []registrytypes.SearchResult{
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true, IsAutomated: false}, {Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, {Name: "result2", Description: "Not official", StarCount: 5, IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
} }
for _, tc := range cases { for _, tc := range cases {
@ -168,8 +168,8 @@ result2 5
func TestSearchContextWriteJSON(t *testing.T) { func TestSearchContextWriteJSON(t *testing.T) {
results := []registrytypes.SearchResult{ results := []registrytypes.SearchResult{
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true, IsAutomated: false}, {Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, {Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
} }
expectedJSONs := []map[string]interface{}{ expectedJSONs := []map[string]interface{}{
{"Name": "result1", "Description": "Official build", "StarCount": "5000", "IsOfficial": "true", "IsAutomated": "false"}, {"Name": "result1", "Description": "Official build", "StarCount": "5000", "IsOfficial": "true", "IsAutomated": "false"},
@ -193,8 +193,8 @@ func TestSearchContextWriteJSON(t *testing.T) {
func TestSearchContextWriteJSONField(t *testing.T) { func TestSearchContextWriteJSONField(t *testing.T) {
results := []registrytypes.SearchResult{ results := []registrytypes.SearchResult{
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true, IsAutomated: false}, {Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, {Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
} }
out := bytes.NewBufferString("") out := bytes.NewBufferString("")
err := SearchWrite(formatter.Context{Format: "{{json .Name}}", Output: out}, results) err := SearchWrite(formatter.Context{Format: "{{json .Name}}", Output: out}, results)

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["foo="],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ServerErrors":["a server error occurred"],"ClientInfo":{"Debug":false,"Context":"","Plugins":[],"Warnings":null}} {"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["foo="],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ServerErrors":["a server error occurred"],"ClientInfo":{"Debug":false,"Context":"","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":["WARNING: No memory limit support","WARNING: No swap limit support","WARNING: No oom kill disable support","WARNING: No cpu cfs quota support","WARNING: No cpu cfs period support","WARNING: No cpu shares support","WARNING: No cpuset support","WARNING: IPv4 forwarding is disabled","WARNING: bridge-nf-call-iptables is disabled","WARNING: bridge-nf-call-ip6tables is disabled"],"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}} {"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":["WARNING: No memory limit support","WARNING: No swap limit support","WARNING: No oom kill disable support","WARNING: No cpu cfs quota support","WARNING: No cpu cfs period support","WARNING: No cpu shares support","WARNING: No cpuset support","WARNING: IPv4 forwarding is disabled","WARNING: bridge-nf-call-iptables is disabled","WARNING: bridge-nf-call-ip6tables is disabled"],"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":false,"SwapLimit":false,"CpuCfsPeriod":false,"CpuCfsQuota":false,"CPUShares":false,"CPUSet":false,"PidsLimit":false,"IPv4Forwarding":false,"BridgeNfIptables":false,"BridgeNfIp6tables":false,"Debug":true,"NFd":33,"OomKillDisable":false,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}} {"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":false,"SwapLimit":false,"CpuCfsPeriod":false,"CpuCfsQuota":false,"CPUShares":false,"CPUSet":false,"PidsLimit":false,"IPv4Forwarding":false,"BridgeNfIptables":false,"BridgeNfIp6tables":false,"Debug":true,"NFd":33,"OomKillDisable":false,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}} {"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","Version":"0.1.0","ShortDescription":"unit test is good","Name":"goodplugin","Path":"/path/to/docker-goodplugin"},{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","ShortDescription":"this plugin has no version","Name":"unversionedplugin","Path":"/path/to/docker-unversionedplugin"},{"Name":"badplugin","Path":"/path/to/docker-badplugin","Err":"something wrong"}],"Warnings":null}} {"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","Version":"0.1.0","ShortDescription":"unit test is good","Name":"goodplugin","Path":"/path/to/docker-goodplugin"},{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","ShortDescription":"this plugin has no version","Name":"unversionedplugin","Path":"/path/to/docker-unversionedplugin"},{"Name":"badplugin","Path":"/path/to/docker-badplugin","Err":"something wrong"}],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"qo2dfdig9mmxqkawulggepdih","NodeAddr":"165.227.107.89","LocalNodeState":"active","ControlAvailable":true,"Error":"","RemoteManagers":[{"NodeID":"qo2dfdig9mmxqkawulggepdih","Addr":"165.227.107.89:2377"}],"Nodes":1,"Managers":1,"Cluster":{"ID":"9vs5ygs0gguyyec4iqf2314c0","Version":{"Index":11},"CreatedAt":"2017-08-24T17:34:19.278062352Z","UpdatedAt":"2017-08-24T17:34:42.398815481Z","Spec":{"Name":"default","Labels":null,"Orchestration":{"TaskHistoryRetentionLimit":5},"Raft":{"SnapshotInterval":10000,"KeepOldSnapshots":0,"LogEntriesForSlowFollowers":500,"ElectionTick":3,"HeartbeatTick":1},"Dispatcher":{"HeartbeatPeriod":5000000000},"CAConfig":{"NodeCertExpiry":7776000000000000},"TaskDefaults":{},"EncryptionConfig":{"AutoLockManagers":true}},"TLSInfo":{"TrustRoot":"\n-----BEGIN CERTIFICATE-----\nMIIBajCCARCgAwIBAgIUaFCW5xsq8eyiJ+Pmcv3MCflMLnMwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwODI0MTcyOTAwWhcNMzcwODE5MTcy\nOTAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABDy7NebyUJyUjWJDBUdnZoV6GBxEGKO4TZPNDwnxDxJcUdLVaB7WGa4/DLrW\nUfsVgh1JGik2VTiLuTMA1tLlNPOjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQl16XFtaaXiUAwEuJptJlDjfKskDAKBggqhkjO\nPQQDAgNIADBFAiEAo9fTQNM5DP9bHVcTJYfl2Cay1bFu1E+lnpmN+EYJfeACIGKH\n1pCUkZ+D0IB6CiEZGWSHyLuXPM1rlP+I5KuS7sB8\n-----END CERTIFICATE-----\n","CertIssuerSubject":"MBMxETAPBgNVBAMTCHN3YXJtLWNh","CertIssuerPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPLs15vJQnJSNYkMFR2dmhXoYHEQYo7hNk80PCfEPElxR0tVoHtYZrj8MutZR+xWCHUkaKTZVOIu5MwDW0uU08w=="},"RootRotationInProgress":false,"DefaultAddrPool":null,"SubnetSize":0,"DataPathPort":0}},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[],"Warnings":null}} {"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"qo2dfdig9mmxqkawulggepdih","NodeAddr":"165.227.107.89","LocalNodeState":"active","ControlAvailable":true,"Error":"","RemoteManagers":[{"NodeID":"qo2dfdig9mmxqkawulggepdih","Addr":"165.227.107.89:2377"}],"Nodes":1,"Managers":1,"Cluster":{"ID":"9vs5ygs0gguyyec4iqf2314c0","Version":{"Index":11},"CreatedAt":"2017-08-24T17:34:19.278062352Z","UpdatedAt":"2017-08-24T17:34:42.398815481Z","Spec":{"Name":"default","Labels":null,"Orchestration":{"TaskHistoryRetentionLimit":5},"Raft":{"SnapshotInterval":10000,"KeepOldSnapshots":0,"LogEntriesForSlowFollowers":500,"ElectionTick":3,"HeartbeatTick":1},"Dispatcher":{"HeartbeatPeriod":5000000000},"CAConfig":{"NodeCertExpiry":7776000000000000},"TaskDefaults":{},"EncryptionConfig":{"AutoLockManagers":true}},"TLSInfo":{"TrustRoot":"\n-----BEGIN CERTIFICATE-----\nMIIBajCCARCgAwIBAgIUaFCW5xsq8eyiJ+Pmcv3MCflMLnMwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwODI0MTcyOTAwWhcNMzcwODE5MTcy\nOTAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABDy7NebyUJyUjWJDBUdnZoV6GBxEGKO4TZPNDwnxDxJcUdLVaB7WGa4/DLrW\nUfsVgh1JGik2VTiLuTMA1tLlNPOjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQl16XFtaaXiUAwEuJptJlDjfKskDAKBggqhkjO\nPQQDAgNIADBFAiEAo9fTQNM5DP9bHVcTJYfl2Cay1bFu1E+lnpmN+EYJfeACIGKH\n1pCUkZ+D0IB6CiEZGWSHyLuXPM1rlP+I5KuS7sB8\n-----END CERTIFICATE-----\n","CertIssuerSubject":"MBMxETAPBgNVBAMTCHN3YXJtLWNh","CertIssuerPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPLs15vJQnJSNYkMFR2dmhXoYHEQYo7hNk80PCfEPElxR0tVoHtYZrj8MutZR+xWCHUkaKTZVOIu5MwDW0uU08w=="},"RootRotationInProgress":false,"DefaultAddrPool":null,"SubnetSize":0,"DataPathPort":0}},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[],"Warnings":null}}

View File

@ -12,7 +12,7 @@ require (
github.com/containerd/containerd v1.6.22 github.com/containerd/containerd v1.6.22
github.com/creack/pty v1.1.18 github.com/creack/pty v1.1.18
github.com/docker/distribution v2.8.2+incompatible github.com/docker/distribution v2.8.2+incompatible
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible // master (v25.0.0-dev) github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible // master (v25.0.0-dev)
github.com/docker/docker-credential-helpers v0.8.0 github.com/docker/docker-credential-helpers v0.8.0
github.com/docker/go-connections v0.4.0 github.com/docker/go-connections v0.4.0
github.com/docker/go-units v0.5.0 github.com/docker/go-units v0.5.0
@ -24,13 +24,13 @@ require (
github.com/mitchellh/mapstructure v1.3.2 github.com/mitchellh/mapstructure v1.3.2
github.com/moby/buildkit v0.11.6 github.com/moby/buildkit v0.11.6
github.com/moby/patternmatcher v0.5.0 github.com/moby/patternmatcher v0.5.0
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05 github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5
github.com/moby/sys/sequential v0.5.0 github.com/moby/sys/sequential v0.5.0
github.com/moby/sys/signal v0.7.0 github.com/moby/sys/signal v0.7.0
github.com/moby/term v0.5.0 github.com/moby/term v0.5.0
github.com/morikuni/aec v1.0.0 github.com/morikuni/aec v1.0.0
github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.1.0-rc3 github.com/opencontainers/image-spec v1.1.0-rc4
github.com/pkg/errors v0.9.1 github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.9.3 github.com/sirupsen/logrus v1.9.3
github.com/spf13/cobra v1.7.0 github.com/spf13/cobra v1.7.0

View File

@ -50,8 +50,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xb
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible h1:lQ7FvH3oFGtG/ODOr0oAlRHQxJJkkbG+RyNHmiMWdI8= github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible h1:jpw4copYljr4wqeQ6nSzvBNe83BqmStvHsvZdnlnEo0=
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8=
github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40=
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0=
@ -156,8 +156,8 @@ github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs=
github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4= github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4=
github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo=
github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05 h1:lvMq6zHXnGp6i+6iYDs1Uw9Q5bqiAYd6Sz08hZoxSmY= github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5 h1:o6x+wIX1vKD0kJlEqe8M9TLIe0SK8lnGcA6XoJtaFqg=
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05/go.mod h1:XUMlwIIC+wrwBDMUjxEvk5Z8FPoIPM8LdBw7w/Zu1rg= github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5/go.mod h1:XUMlwIIC+wrwBDMUjxEvk5Z8FPoIPM8LdBw7w/Zu1rg=
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI=
@ -181,8 +181,8 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8= github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0=
github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.7 h1:y2EZDS8sNng4Ksf0GUYNhKbTShZJPJg1FiXJNH/uoCk= github.com/opencontainers/runc v1.1.7 h1:y2EZDS8sNng4Ksf0GUYNhKbTShZJPJg1FiXJNH/uoCk=
github.com/opencontainers/runc v1.1.7/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50= github.com/opencontainers/runc v1.1.7/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50=
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=

View File

@ -1147,6 +1147,7 @@ junxu <xujun@cmss.chinamobile.com>
Jussi Nummelin <jussi.nummelin@gmail.com> Jussi Nummelin <jussi.nummelin@gmail.com>
Justas Brazauskas <brazauskasjustas@gmail.com> Justas Brazauskas <brazauskasjustas@gmail.com>
Justen Martin <jmart@the-coder.com> Justen Martin <jmart@the-coder.com>
Justin Chadwell <me@jedevc.com>
Justin Cormack <justin.cormack@docker.com> Justin Cormack <justin.cormack@docker.com>
Justin Force <justin.force@gmail.com> Justin Force <justin.force@gmail.com>
Justin Keller <85903732+jk-vb@users.noreply.github.com> Justin Keller <85903732+jk-vb@users.noreply.github.com>
@ -1198,7 +1199,7 @@ Kenjiro Nakayama <nakayamakenjiro@gmail.com>
Kent Johnson <kentoj@gmail.com> Kent Johnson <kentoj@gmail.com>
Kenta Tada <Kenta.Tada@sony.com> Kenta Tada <Kenta.Tada@sony.com>
Kevin "qwazerty" Houdebert <kevin.houdebert@gmail.com> Kevin "qwazerty" Houdebert <kevin.houdebert@gmail.com>
Kevin Alvarez <crazy-max@users.noreply.github.com> Kevin Alvarez <github@crazymax.dev>
Kevin Burke <kev@inburke.com> Kevin Burke <kev@inburke.com>
Kevin Clark <kevin.clark@gmail.com> Kevin Clark <kevin.clark@gmail.com>
Kevin Feyrer <kevin.feyrer@btinternet.com> Kevin Feyrer <kevin.feyrer@btinternet.com>
@ -1519,7 +1520,7 @@ Mike Snitzer <snitzer@redhat.com>
mikelinjie <294893458@qq.com> mikelinjie <294893458@qq.com>
Mikhail Sobolev <mss@mawhrin.net> Mikhail Sobolev <mss@mawhrin.net>
Miklos Szegedi <miklos.szegedi@cloudera.com> Miklos Szegedi <miklos.szegedi@cloudera.com>
Milas Bowman <milasb@gmail.com> Milas Bowman <devnull@milas.dev>
Milind Chawre <milindchawre@gmail.com> Milind Chawre <milindchawre@gmail.com>
Miloslav Trmač <mitr@redhat.com> Miloslav Trmač <mitr@redhat.com>
mingqing <limingqing@cyou-inc.com> mingqing <limingqing@cyou-inc.com>
@ -1712,6 +1713,7 @@ Phil Estes <estesp@gmail.com>
Phil Sphicas <phil.sphicas@att.com> Phil Sphicas <phil.sphicas@att.com>
Phil Spitler <pspitler@gmail.com> Phil Spitler <pspitler@gmail.com>
Philip Alexander Etling <paetling@gmail.com> Philip Alexander Etling <paetling@gmail.com>
Philip K. Warren <pkwarren@gmail.com>
Philip Monroe <phil@philmonroe.com> Philip Monroe <phil@philmonroe.com>
Philipp Gillé <philipp.gille@gmail.com> Philipp Gillé <philipp.gille@gmail.com>
Philipp Wahala <philipp.wahala@gmail.com> Philipp Wahala <philipp.wahala@gmail.com>

View File

@ -5301,7 +5301,25 @@ definitions:
- "WARNING: No memory limit support" - "WARNING: No memory limit support"
- "WARNING: bridge-nf-call-iptables is disabled" - "WARNING: bridge-nf-call-iptables is disabled"
- "WARNING: bridge-nf-call-ip6tables is disabled" - "WARNING: bridge-nf-call-ip6tables is disabled"
CDISpecDirs:
description: |
List of directories where (Container Device Interface) CDI
specifications are located.
These specifications define vendor-specific modifications to an OCI
runtime specification for a container being created.
An empty list indicates that CDI device injection is disabled.
Note that since using CDI device injection requires the daemon to have
experimental enabled. For non-experimental daemons an empty list will
always be returned.
type: "array"
items:
type: "string"
example:
- "/etc/cdi"
- "/var/run/cdi"
# PluginsInfo is a temp struct holding Plugins name # PluginsInfo is a temp struct holding Plugins name
# registered with docker daemon. It is used by Info struct # registered with docker daemon. It is used by Info struct
@ -8601,28 +8619,36 @@ paths:
is_official: is_official:
type: "boolean" type: "boolean"
is_automated: is_automated:
description: |
Whether this repository has automated builds enabled.
<p><br /></p>
> **Deprecated**: This field is deprecated and will always
> be "false" in future.
type: "boolean" type: "boolean"
example: false
name: name:
type: "string" type: "string"
star_count: star_count:
type: "integer" type: "integer"
examples: examples:
application/json: application/json:
- description: "" - description: "A minimal Docker image based on Alpine Linux with a complete package index and only 5 MB in size!"
is_official: false is_official: true
is_automated: false is_automated: false
name: "wma55/u1210sshd" name: "alpine"
star_count: 0 star_count: 10093
- description: "" - description: "Busybox base image."
is_official: false is_official: true
is_automated: false is_automated: false
name: "jdswinbank/sshd" name: "Busybox base image."
star_count: 0 star_count: 3037
- description: "" - description: "The PostgreSQL object-relational database system provides reliability and data integrity."
is_official: false is_official: true
is_automated: false is_automated: false
name: "vgauthier/sshd" name: "postgres"
star_count: 0 star_count: 12408
500: 500:
description: "Server error" description: "Server error"
schema: schema:
@ -8642,9 +8668,13 @@ paths:
description: | description: |
A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters: A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters:
- `is-automated=(true|false)` - `is-automated=(true|false)` (deprecated, see below)
- `is-official=(true|false)` - `is-official=(true|false)`
- `stars=<number>` Matches images that has at least 'number' stars. - `stars=<number>` Matches images that has at least 'number' stars.
The `is-automated` filter is deprecated. The `is_automated` field has
been deprecated by Docker Hub's search API. Consequently, searching
for `is-automated=true` will yield no results.
type: "string" type: "string"
tags: ["Image"] tags: ["Image"]
/images/prune: /images/prune:

View File

@ -98,7 +98,7 @@ func FromJSON(p string) (Args, error) {
// Fallback to parsing arguments in the legacy slice format // Fallback to parsing arguments in the legacy slice format
deprecated := map[string][]string{} deprecated := map[string][]string{}
if legacyErr := json.Unmarshal(raw, &deprecated); legacyErr != nil { if legacyErr := json.Unmarshal(raw, &deprecated); legacyErr != nil {
return args, invalidFilter{} return args, &invalidFilter{}
} }
args.fields = deprecatedArgs(deprecated) args.fields = deprecatedArgs(deprecated)
@ -206,7 +206,7 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
} }
if len(fieldValues) == 0 { if len(fieldValues) == 0 {
return defaultValue, invalidFilter{key, nil} return defaultValue, &invalidFilter{key, nil}
} }
isFalse := fieldValues["0"] || fieldValues["false"] isFalse := fieldValues["0"] || fieldValues["false"]
@ -216,7 +216,7 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
invalid := !isFalse && !isTrue invalid := !isFalse && !isTrue
if conflicting || invalid { if conflicting || invalid {
return defaultValue, invalidFilter{key, args.Get(key)} return defaultValue, &invalidFilter{key, args.Get(key)}
} else if isFalse { } else if isFalse {
return false, nil return false, nil
} else if isTrue { } else if isTrue {
@ -224,7 +224,7 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
} }
// This code shouldn't be reached. // This code shouldn't be reached.
return defaultValue, unreachableCode{Filter: key, Value: args.Get(key)} return defaultValue, &unreachableCode{Filter: key, Value: args.Get(key)}
} }
// ExactMatch returns true if the source matches exactly one of the values. // ExactMatch returns true if the source matches exactly one of the values.
@ -282,7 +282,7 @@ func (args Args) Contains(field string) bool {
func (args Args) Validate(accepted map[string]bool) error { func (args Args) Validate(accepted map[string]bool) error {
for name := range args.fields { for name := range args.fields {
if !accepted[name] { if !accepted[name] {
return invalidFilter{name, nil} return &invalidFilter{name, nil}
} }
} }
return nil return nil

View File

@ -92,7 +92,9 @@ type SearchResult struct {
IsOfficial bool `json:"is_official"` IsOfficial bool `json:"is_official"`
// Name is the name of the repository // Name is the name of the repository
Name string `json:"name"` Name string `json:"name"`
// IsAutomated indicates whether the result is automated // IsAutomated indicates whether the result is automated.
//
// Deprecated: the "is_automated" field is deprecated and will always be "false" in the future.
IsAutomated bool `json:"is_automated"` IsAutomated bool `json:"is_automated"`
// Description is a textual description of the repository // Description is a textual description of the repository
Description string `json:"description"` Description string `json:"description"`

View File

@ -73,6 +73,7 @@ type Info struct {
SecurityOptions []string SecurityOptions []string
ProductLicense string `json:",omitempty"` ProductLicense string `json:",omitempty"`
DefaultAddressPools []NetworkAddressPool `json:",omitempty"` DefaultAddressPools []NetworkAddressPool `json:",omitempty"`
CDISpecDirs []string
// Legacy API fields for older API versions. // Legacy API fields for older API versions.
legacyFields legacyFields

View File

@ -43,11 +43,13 @@ package client // import "github.com/docker/docker/client"
import ( import (
"context" "context"
"crypto/tls"
"net" "net"
"net/http" "net/http"
"net/url" "net/url"
"path" "path"
"strings" "strings"
"time"
"github.com/docker/docker/api" "github.com/docker/docker/api"
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
@ -86,9 +88,6 @@ import (
// [Go stdlib]: https://github.com/golang/go/blob/6244b1946bc2101b01955468f1be502dbadd6807/src/net/http/transport.go#L558-L569 // [Go stdlib]: https://github.com/golang/go/blob/6244b1946bc2101b01955468f1be502dbadd6807/src/net/http/transport.go#L558-L569
const DummyHost = "api.moby.localhost" const DummyHost = "api.moby.localhost"
// ErrRedirect is the error returned by checkRedirect when the request is non-GET.
var ErrRedirect = errors.New("unexpected redirect in response")
// Client is the API client that performs all operations // Client is the API client that performs all operations
// against a docker server. // against a docker server.
type Client struct { type Client struct {
@ -111,7 +110,7 @@ type Client struct {
// header variables. When set to an empty string, the User-Agent header // header variables. When set to an empty string, the User-Agent header
// is removed, and no header is sent. // is removed, and no header is sent.
userAgent *string userAgent *string
// custom http headers configured by users. // custom HTTP headers configured by users.
customHTTPHeaders map[string]string customHTTPHeaders map[string]string
// manualOverride is set to true when the version was set by users. // manualOverride is set to true when the version was set by users.
manualOverride bool manualOverride bool
@ -126,20 +125,25 @@ type Client struct {
negotiated bool negotiated bool
} }
// CheckRedirect specifies the policy for dealing with redirect responses: // ErrRedirect is the error returned by checkRedirect when the request is non-GET.
// If the request is non-GET return ErrRedirect, otherwise use the last response. var ErrRedirect = errors.New("unexpected redirect in response")
// CheckRedirect specifies the policy for dealing with redirect responses. It
// can be set on [http.Client.CheckRedirect] to prevent HTTP redirects for
// non-GET requests. It returns an [ErrRedirect] for non-GET request, otherwise
// returns a [http.ErrUseLastResponse], which is special-cased by http.Client
// to use the last response.
// //
// Go 1.8 changes behavior for HTTP redirects (specifically 301, 307, and 308) // Go 1.8 changed behavior for HTTP redirects (specifically 301, 307, and 308)
// in the client. The Docker client (and by extension docker API client) can be // in the client. The client (and by extension API client) can be made to send
// made to send a request like POST /containers//start where what would normally // a request like "POST /containers//start" where what would normally be in the
// be in the name section of the URL is empty. This triggers an HTTP 301 from // name section of the URL is empty. This triggers an HTTP 301 from the daemon.
// the daemon.
// //
// In go 1.8 this 301 will be converted to a GET request, and ends up getting // In go 1.8 this 301 is converted to a GET request, and ends up getting
// a 404 from the daemon. This behavior change manifests in the client in that // a 404 from the daemon. This behavior change manifests in the client in that
// before, the 301 was not followed and the client did not generate an error, // before, the 301 was not followed and the client did not generate an error,
// but now results in a message like Error response from daemon: page not found. // but now results in a message like "Error response from daemon: page not found".
func CheckRedirect(req *http.Request, via []*http.Request) error { func CheckRedirect(_ *http.Request, via []*http.Request) error {
if via[0].Method == http.MethodGet { if via[0].Method == http.MethodGet {
return http.ErrUseLastResponse return http.ErrUseLastResponse
} }
@ -150,11 +154,11 @@ func CheckRedirect(req *http.Request, via []*http.Request) error {
// default API host and version. It also initializes the custom HTTP headers to // default API host and version. It also initializes the custom HTTP headers to
// add to each request. // add to each request.
// //
// It takes an optional list of Opt functional arguments, which are applied in // It takes an optional list of [Opt] functional arguments, which are applied in
// the order they're provided, which allows modifying the defaults when creating // the order they're provided, which allows modifying the defaults when creating
// the client. For example, the following initializes a client that configures // the client. For example, the following initializes a client that configures
// itself with values from environment variables (client.FromEnv), and has // itself with values from environment variables ([FromEnv]), and has automatic
// automatic API version negotiation enabled (client.WithAPIVersionNegotiation()). // API version negotiation enabled ([WithAPIVersionNegotiation]).
// //
// cli, err := client.NewClientWithOpts( // cli, err := client.NewClientWithOpts(
// client.FromEnv, // client.FromEnv,
@ -185,16 +189,15 @@ func NewClientWithOpts(ops ...Opt) (*Client, error) {
} }
if c.scheme == "" { if c.scheme == "" {
c.scheme = "http" // TODO(stevvooe): This isn't really the right way to write clients in Go.
// `NewClient` should probably only take an `*http.Client` and work from there.
tlsConfig := resolveTLSConfig(c.client.Transport) // Unfortunately, the model of having a host-ish/url-thingy as the connection
if tlsConfig != nil { // string has us confusing protocol and transport layers. We continue doing
// TODO(stevvooe): This isn't really the right way to write clients in Go. // this to avoid breaking existing clients but this should be addressed.
// `NewClient` should probably only take an `*http.Client` and work from there. if c.tlsConfig() != nil {
// Unfortunately, the model of having a host-ish/url-thingy as the connection
// string has us confusing protocol and transport layers. We continue doing
// this to avoid breaking existing clients but this should be addressed.
c.scheme = "https" c.scheme = "https"
} else {
c.scheme = "http"
} }
} }
@ -213,6 +216,16 @@ func defaultHTTPClient(hostURL *url.URL) (*http.Client, error) {
}, nil }, nil
} }
// tlsConfig returns the TLS configuration from the client's transport.
// It returns nil if the transport is not a [http.Transport], or if no
// TLSClientConfig is set.
func (cli *Client) tlsConfig() *tls.Config {
if tr, ok := cli.client.Transport.(*http.Transport); ok {
return tr.TLSClientConfig
}
return nil
}
// Close the transport used by the client // Close the transport used by the client
func (cli *Client) Close() error { func (cli *Client) Close() error {
if t, ok := cli.client.Transport.(*http.Transport); ok { if t, ok := cli.client.Transport.(*http.Transport); ok {
@ -221,7 +234,7 @@ func (cli *Client) Close() error {
return nil return nil
} }
// getAPIPath returns the versioned request path to call the api. // getAPIPath returns the versioned request path to call the API.
// It appends the query parameters to the path if they are not empty. // It appends the query parameters to the path if they are not empty.
func (cli *Client) getAPIPath(ctx context.Context, p string, query url.Values) string { func (cli *Client) getAPIPath(ctx context.Context, p string, query url.Values) string {
var apiPath string var apiPath string
@ -249,8 +262,8 @@ func (cli *Client) ClientVersion() string {
// by the client, it uses the client's maximum version. // by the client, it uses the client's maximum version.
// //
// If a manual override is in place, either through the "DOCKER_API_VERSION" // If a manual override is in place, either through the "DOCKER_API_VERSION"
// (EnvOverrideAPIVersion) environment variable, or if the client is initialized // ([EnvOverrideAPIVersion]) environment variable, or if the client is initialized
// with a fixed version (WithVersion(xx)), no negotiation is performed. // with a fixed version ([WithVersion]), no negotiation is performed.
// //
// If the API server's ping response does not contain an API version, or if the // If the API server's ping response does not contain an API version, or if the
// client did not get a successful ping response, it assumes it is connected with // client did not get a successful ping response, it assumes it is connected with
@ -270,8 +283,8 @@ func (cli *Client) NegotiateAPIVersion(ctx context.Context) {
// version. // version.
// //
// If a manual override is in place, either through the "DOCKER_API_VERSION" // If a manual override is in place, either through the "DOCKER_API_VERSION"
// (EnvOverrideAPIVersion) environment variable, or if the client is initialized // ([EnvOverrideAPIVersion]) environment variable, or if the client is initialized
// with a fixed version (WithVersion(xx)), no negotiation is performed. // with a fixed version ([WithVersion]), no negotiation is performed.
// //
// If the API server's ping response does not contain an API version, we assume // If the API server's ping response does not contain an API version, we assume
// we are connected with an old daemon without API version negotiation support, // we are connected with an old daemon without API version negotiation support,
@ -344,9 +357,10 @@ func ParseHostURL(host string) (*url.URL, error) {
} }
// Dialer returns a dialer for a raw stream connection, with an HTTP/1.1 header, // Dialer returns a dialer for a raw stream connection, with an HTTP/1.1 header,
// that can be used for proxying the daemon connection. // that can be used for proxying the daemon connection. It is used by
// ["docker dial-stdio"].
// //
// Used by `docker dial-stdio` (docker/cli#889). // ["docker dial-stdio"]: https://github.com/docker/cli/pull/1014
func (cli *Client) Dialer() func(context.Context) (net.Conn, error) { func (cli *Client) Dialer() func(context.Context) (net.Conn, error) {
return func(ctx context.Context) (net.Conn, error) { return func(ctx context.Context) (net.Conn, error) {
if transport, ok := cli.client.Transport.(*http.Transport); ok { if transport, ok := cli.client.Transport.(*http.Transport); ok {
@ -354,6 +368,16 @@ func (cli *Client) Dialer() func(context.Context) (net.Conn, error) {
return transport.DialContext(ctx, cli.proto, cli.addr) return transport.DialContext(ctx, cli.proto, cli.addr)
} }
} }
return fallbackDial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) switch cli.proto {
case "unix":
return net.Dial(cli.proto, cli.addr)
case "npipe":
return sockets.DialPipe(cli.addr, 32*time.Second)
default:
if tlsConfig := cli.tlsConfig(); tlsConfig != nil {
return tls.Dial(cli.proto, cli.addr, tlsConfig)
}
return net.Dial(cli.proto, cli.addr)
}
} }
} }

View File

@ -21,8 +21,10 @@ func (cli *Client) ContainerStats(ctx context.Context, containerID string, strea
return types.ContainerStats{}, err return types.ContainerStats{}, err
} }
osType := getDockerOS(resp.header.Get("Server")) return types.ContainerStats{
return types.ContainerStats{Body: resp.body, OSType: osType}, err Body: resp.body,
OSType: getDockerOS(resp.header.Get("Server")),
}, nil
} }
// ContainerStatsOneShot gets a single stat entry from a container. // ContainerStatsOneShot gets a single stat entry from a container.
@ -37,6 +39,8 @@ func (cli *Client) ContainerStatsOneShot(ctx context.Context, containerID string
return types.ContainerStats{}, err return types.ContainerStats{}, err
} }
osType := getDockerOS(resp.header.Get("Server")) return types.ContainerStats{
return types.ContainerStats{Body: resp.body, OSType: osType}, err Body: resp.body,
OSType: getDockerOS(resp.header.Get("Server")),
}, nil
} }

View File

@ -3,7 +3,6 @@ package client // import "github.com/docker/docker/client"
import ( import (
"bufio" "bufio"
"context" "context"
"crypto/tls"
"fmt" "fmt"
"net" "net"
"net/http" "net/http"
@ -13,7 +12,6 @@ import (
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/versions" "github.com/docker/docker/api/types/versions"
"github.com/docker/go-connections/sockets"
"github.com/pkg/errors" "github.com/pkg/errors"
) )
@ -23,14 +21,10 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu
if err != nil { if err != nil {
return types.HijackedResponse{}, err return types.HijackedResponse{}, err
} }
req, err := cli.buildRequest(http.MethodPost, cli.getAPIPath(ctx, path, query), bodyEncoded, headers)
apiPath := cli.getAPIPath(ctx, path, query)
req, err := http.NewRequest(http.MethodPost, apiPath, bodyEncoded)
if err != nil { if err != nil {
return types.HijackedResponse{}, err return types.HijackedResponse{}, err
} }
req = cli.addHeaders(req, headers)
conn, mediaType, err := cli.setupHijackConn(ctx, req, "tcp") conn, mediaType, err := cli.setupHijackConn(ctx, req, "tcp")
if err != nil { if err != nil {
return types.HijackedResponse{}, err return types.HijackedResponse{}, err
@ -51,24 +45,7 @@ func (cli *Client) DialHijack(ctx context.Context, url, proto string, meta map[s
return conn, err return conn, err
} }
// fallbackDial is used when WithDialer() was not called.
// See cli.Dialer().
func fallbackDial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) {
if tlsConfig != nil && proto != "unix" && proto != "npipe" {
return tls.Dial(proto, addr, tlsConfig)
}
if proto == "npipe" {
return sockets.DialPipe(addr, 32*time.Second)
}
return net.Dial(proto, addr)
}
func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto string) (net.Conn, string, error) { func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto string) (net.Conn, string, error) {
req.URL.Host = cli.addr
if cli.proto == "unix" || cli.proto == "npipe" {
// Override host header for non-tcp connections.
req.Host = DummyHost
}
req.Header.Set("Connection", "Upgrade") req.Header.Set("Connection", "Upgrade")
req.Header.Set("Upgrade", proto) req.Header.Set("Upgrade", proto)
@ -84,8 +61,8 @@ func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto
// state. Setting TCP KeepAlive on the socket connection will prohibit // state. Setting TCP KeepAlive on the socket connection will prohibit
// ECONNTIMEOUT unless the socket connection truly is broken // ECONNTIMEOUT unless the socket connection truly is broken
if tcpConn, ok := conn.(*net.TCPConn); ok { if tcpConn, ok := conn.(*net.TCPConn); ok {
tcpConn.SetKeepAlive(true) _ = tcpConn.SetKeepAlive(true)
tcpConn.SetKeepAlivePeriod(30 * time.Second) _ = tcpConn.SetKeepAlivePeriod(30 * time.Second)
} }
clientconn := httputil.NewClientConn(conn, nil) clientconn := httputil.NewClientConn(conn, nil)
@ -100,7 +77,7 @@ func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto
return nil, "", err return nil, "", err
} }
if resp.StatusCode != http.StatusSwitchingProtocols { if resp.StatusCode != http.StatusSwitchingProtocols {
resp.Body.Close() _ = resp.Body.Close()
return nil, "", fmt.Errorf("unable to upgrade to %s, received %d", proto, resp.StatusCode) return nil, "", fmt.Errorf("unable to upgrade to %s, received %d", proto, resp.StatusCode)
} }
} }

View File

@ -13,23 +13,22 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
) )
// Opt is a configuration option to initialize a client // Opt is a configuration option to initialize a [Client].
type Opt func(*Client) error type Opt func(*Client) error
// FromEnv configures the client with values from environment variables. // FromEnv configures the client with values from environment variables. It
// is the equivalent of using the [WithTLSClientConfigFromEnv], [WithHostFromEnv],
// and [WithVersionFromEnv] options.
// //
// FromEnv uses the following environment variables: // FromEnv uses the following environment variables:
// //
// DOCKER_HOST (EnvOverrideHost) to set the URL to the docker server. // - DOCKER_HOST ([EnvOverrideHost]) to set the URL to the docker server.
// // - DOCKER_API_VERSION ([EnvOverrideAPIVersion]) to set the version of the
// DOCKER_API_VERSION (EnvOverrideAPIVersion) to set the version of the API to // API to use, leave empty for latest.
// use, leave empty for latest. // - DOCKER_CERT_PATH ([EnvOverrideCertPath]) to specify the directory from
// // which to load the TLS certificates ("ca.pem", "cert.pem", "key.pem').
// DOCKER_CERT_PATH (EnvOverrideCertPath) to specify the directory from which to // - DOCKER_TLS_VERIFY ([EnvTLSVerify]) to enable or disable TLS verification
// load the TLS certificates (ca.pem, cert.pem, key.pem). // (off by default).
//
// DOCKER_TLS_VERIFY (EnvTLSVerify) to enable or disable TLS verification (off by
// default).
func FromEnv(c *Client) error { func FromEnv(c *Client) error {
ops := []Opt{ ops := []Opt{
WithTLSClientConfigFromEnv(), WithTLSClientConfigFromEnv(),
@ -45,7 +44,8 @@ func FromEnv(c *Client) error {
} }
// WithDialContext applies the dialer to the client transport. This can be // WithDialContext applies the dialer to the client transport. This can be
// used to set the Timeout and KeepAlive settings of the client. // used to set the Timeout and KeepAlive settings of the client. It returns
// an error if the client does not have a [http.Transport] configured.
func WithDialContext(dialContext func(ctx context.Context, network, addr string) (net.Conn, error)) Opt { func WithDialContext(dialContext func(ctx context.Context, network, addr string) (net.Conn, error)) Opt {
return func(c *Client) error { return func(c *Client) error {
if transport, ok := c.client.Transport.(*http.Transport); ok { if transport, ok := c.client.Transport.(*http.Transport); ok {
@ -75,7 +75,7 @@ func WithHost(host string) Opt {
} }
// WithHostFromEnv overrides the client host with the host specified in the // WithHostFromEnv overrides the client host with the host specified in the
// DOCKER_HOST (EnvOverrideHost) environment variable. If DOCKER_HOST is not set, // DOCKER_HOST ([EnvOverrideHost]) environment variable. If DOCKER_HOST is not set,
// or set to an empty value, the host is not modified. // or set to an empty value, the host is not modified.
func WithHostFromEnv() Opt { func WithHostFromEnv() Opt {
return func(c *Client) error { return func(c *Client) error {
@ -86,7 +86,7 @@ func WithHostFromEnv() Opt {
} }
} }
// WithHTTPClient overrides the client http client with the specified one // WithHTTPClient overrides the client's HTTP client with the specified one.
func WithHTTPClient(client *http.Client) Opt { func WithHTTPClient(client *http.Client) Opt {
return func(c *Client) error { return func(c *Client) error {
if client != nil { if client != nil {
@ -96,7 +96,7 @@ func WithHTTPClient(client *http.Client) Opt {
} }
} }
// WithTimeout configures the time limit for requests made by the HTTP client // WithTimeout configures the time limit for requests made by the HTTP client.
func WithTimeout(timeout time.Duration) Opt { func WithTimeout(timeout time.Duration) Opt {
return func(c *Client) error { return func(c *Client) error {
c.client.Timeout = timeout c.client.Timeout = timeout
@ -114,7 +114,9 @@ func WithUserAgent(ua string) Opt {
} }
} }
// WithHTTPHeaders overrides the client default http headers // WithHTTPHeaders appends custom HTTP headers to the client's default headers.
// It does not allow for built-in headers (such as "User-Agent", if set) to
// be overridden. Also see [WithUserAgent].
func WithHTTPHeaders(headers map[string]string) Opt { func WithHTTPHeaders(headers map[string]string) Opt {
return func(c *Client) error { return func(c *Client) error {
c.customHTTPHeaders = headers c.customHTTPHeaders = headers
@ -122,7 +124,7 @@ func WithHTTPHeaders(headers map[string]string) Opt {
} }
} }
// WithScheme overrides the client scheme with the specified one // WithScheme overrides the client scheme with the specified one.
func WithScheme(scheme string) Opt { func WithScheme(scheme string) Opt {
return func(c *Client) error { return func(c *Client) error {
c.scheme = scheme c.scheme = scheme
@ -130,51 +132,50 @@ func WithScheme(scheme string) Opt {
} }
} }
// WithTLSClientConfig applies a tls config to the client transport. // WithTLSClientConfig applies a TLS config to the client transport.
func WithTLSClientConfig(cacertPath, certPath, keyPath string) Opt { func WithTLSClientConfig(cacertPath, certPath, keyPath string) Opt {
return func(c *Client) error { return func(c *Client) error {
opts := tlsconfig.Options{ transport, ok := c.client.Transport.(*http.Transport)
if !ok {
return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport)
}
config, err := tlsconfig.Client(tlsconfig.Options{
CAFile: cacertPath, CAFile: cacertPath,
CertFile: certPath, CertFile: certPath,
KeyFile: keyPath, KeyFile: keyPath,
ExclusiveRootPools: true, ExclusiveRootPools: true,
} })
config, err := tlsconfig.Client(opts)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to create tls config") return errors.Wrap(err, "failed to create tls config")
} }
if transport, ok := c.client.Transport.(*http.Transport); ok { transport.TLSClientConfig = config
transport.TLSClientConfig = config return nil
return nil
}
return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport)
} }
} }
// WithTLSClientConfigFromEnv configures the client's TLS settings with the // WithTLSClientConfigFromEnv configures the client's TLS settings with the
// settings in the DOCKER_CERT_PATH and DOCKER_TLS_VERIFY environment variables. // settings in the DOCKER_CERT_PATH ([EnvOverrideCertPath]) and DOCKER_TLS_VERIFY
// If DOCKER_CERT_PATH is not set or empty, TLS configuration is not modified. // ([EnvTLSVerify]) environment variables. If DOCKER_CERT_PATH is not set or empty,
// TLS configuration is not modified.
// //
// WithTLSClientConfigFromEnv uses the following environment variables: // WithTLSClientConfigFromEnv uses the following environment variables:
// //
// DOCKER_CERT_PATH (EnvOverrideCertPath) to specify the directory from which to // - DOCKER_CERT_PATH ([EnvOverrideCertPath]) to specify the directory from
// load the TLS certificates (ca.pem, cert.pem, key.pem). // which to load the TLS certificates ("ca.pem", "cert.pem", "key.pem").
// // - DOCKER_TLS_VERIFY ([EnvTLSVerify]) to enable or disable TLS verification
// DOCKER_TLS_VERIFY (EnvTLSVerify) to enable or disable TLS verification (off by // (off by default).
// default).
func WithTLSClientConfigFromEnv() Opt { func WithTLSClientConfigFromEnv() Opt {
return func(c *Client) error { return func(c *Client) error {
dockerCertPath := os.Getenv(EnvOverrideCertPath) dockerCertPath := os.Getenv(EnvOverrideCertPath)
if dockerCertPath == "" { if dockerCertPath == "" {
return nil return nil
} }
options := tlsconfig.Options{ tlsc, err := tlsconfig.Client(tlsconfig.Options{
CAFile: filepath.Join(dockerCertPath, "ca.pem"), CAFile: filepath.Join(dockerCertPath, "ca.pem"),
CertFile: filepath.Join(dockerCertPath, "cert.pem"), CertFile: filepath.Join(dockerCertPath, "cert.pem"),
KeyFile: filepath.Join(dockerCertPath, "key.pem"), KeyFile: filepath.Join(dockerCertPath, "key.pem"),
InsecureSkipVerify: os.Getenv(EnvTLSVerify) == "", InsecureSkipVerify: os.Getenv(EnvTLSVerify) == "",
} })
tlsc, err := tlsconfig.Client(options)
if err != nil { if err != nil {
return err return err
} }
@ -188,7 +189,8 @@ func WithTLSClientConfigFromEnv() Opt {
} }
// WithVersion overrides the client version with the specified one. If an empty // WithVersion overrides the client version with the specified one. If an empty
// version is specified, the value will be ignored to allow version negotiation. // version is provided, the value is ignored to allow version negotiation
// (see [WithAPIVersionNegotiation]).
func WithVersion(version string) Opt { func WithVersion(version string) Opt {
return func(c *Client) error { return func(c *Client) error {
if version != "" { if version != "" {
@ -200,8 +202,9 @@ func WithVersion(version string) Opt {
} }
// WithVersionFromEnv overrides the client version with the version specified in // WithVersionFromEnv overrides the client version with the version specified in
// the DOCKER_API_VERSION environment variable. If DOCKER_API_VERSION is not set, // the DOCKER_API_VERSION ([EnvOverrideAPIVersion]) environment variable.
// the version is not modified. // If DOCKER_API_VERSION is not set, or set to an empty value, the version
// is not modified.
func WithVersionFromEnv() Opt { func WithVersionFromEnv() Opt {
return func(c *Client) error { return func(c *Client) error {
return WithVersion(os.Getenv(EnvOverrideAPIVersion))(c) return WithVersion(os.Getenv(EnvOverrideAPIVersion))(c)
@ -211,7 +214,7 @@ func WithVersionFromEnv() Opt {
// WithAPIVersionNegotiation enables automatic API version negotiation for the client. // WithAPIVersionNegotiation enables automatic API version negotiation for the client.
// With this option enabled, the client automatically negotiates the API version // With this option enabled, the client automatically negotiates the API version
// to use when making requests. API version negotiation is performed on the first // to use when making requests. API version negotiation is performed on the first
// request; subsequent requests will not re-negotiate. // request; subsequent requests do not re-negotiate.
func WithAPIVersionNegotiation() Opt { func WithAPIVersionNegotiation() Opt {
return func(c *Client) error { return func(c *Client) error {
c.negotiateVersion = true c.negotiateVersion = true

View File

@ -227,13 +227,8 @@ func (cli *Client) checkResponseErr(serverResp serverResponse) error {
return fmt.Errorf("request returned %s for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), serverResp.reqURL) return fmt.Errorf("request returned %s for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), serverResp.reqURL)
} }
var ct string
if serverResp.header != nil {
ct = serverResp.header.Get("Content-Type")
}
var errorMessage string var errorMessage string
if (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) && ct == "application/json" { if serverResp.header.Get("Content-Type") == "application/json" && (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) {
var errorResponse types.ErrorResponse var errorResponse types.ErrorResponse
if err := json.Unmarshal(body, &errorResponse); err != nil { if err := json.Unmarshal(body, &errorResponse); err != nil {
return errors.Wrap(err, "Error reading JSON") return errors.Wrap(err, "Error reading JSON")

View File

@ -1,17 +0,0 @@
package client // import "github.com/docker/docker/client"
import (
"crypto/tls"
"net/http"
)
// resolveTLSConfig attempts to resolve the TLS configuration from the
// RoundTripper.
func resolveTLSConfig(transport http.RoundTripper) *tls.Config {
switch tr := transport.(type) {
case *http.Transport:
return tr.TLSClientConfig
default:
return nil
}
}

View File

@ -30,7 +30,6 @@ import (
"github.com/moby/patternmatcher" "github.com/moby/patternmatcher"
"github.com/moby/sys/sequential" "github.com/moby/sys/sequential"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus"
) )
// ImpliedDirectoryMode represents the mode (Unix permissions) applied to directories that are implied by files in a // ImpliedDirectoryMode represents the mode (Unix permissions) applied to directories that are implied by files in a
@ -790,7 +789,7 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, o
} }
if len(xattrErrs) > 0 { if len(xattrErrs) > 0 {
log.G(context.TODO()).WithFields(logrus.Fields{ log.G(context.TODO()).WithFields(log.Fields{
"errors": xattrErrs, "errors": xattrErrs,
}).Warn("ignored xattrs in archive: underlying filesystem doesn't support them") }).Warn("ignored xattrs in archive: underlying filesystem doesn't support them")
} }

View File

@ -7,6 +7,7 @@ import (
"errors" "errors"
"os" "os"
"path/filepath" "path/filepath"
"runtime"
"strings" "strings"
"syscall" "syscall"
@ -43,6 +44,20 @@ func chmodTarEntry(perm os.FileMode) os.FileMode {
// statUnix populates hdr from system-dependent fields of fi without performing // statUnix populates hdr from system-dependent fields of fi without performing
// any OS lookups. // any OS lookups.
func statUnix(fi os.FileInfo, hdr *tar.Header) error { func statUnix(fi os.FileInfo, hdr *tar.Header) error {
// Devmajor and Devminor are only needed for special devices.
// In FreeBSD, RDev for regular files is -1 (unless overridden by FS):
// https://cgit.freebsd.org/src/tree/sys/kern/vfs_default.c?h=stable/13#n1531
// (NODEV is -1: https://cgit.freebsd.org/src/tree/sys/sys/param.h?h=stable/13#n241).
// ZFS in particular does not override the default:
// https://cgit.freebsd.org/src/tree/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c?h=stable/13#n2027
// Since `Stat_t.Rdev` is uint64, the cast turns -1 into (2^64 - 1).
// Such large values cannot be encoded in a tar header.
if runtime.GOOS == "freebsd" && hdr.Typeflag != tar.TypeBlock && hdr.Typeflag != tar.TypeChar {
return nil
}
s, ok := fi.Sys().(*syscall.Stat_t) s, ok := fi.Sys().(*syscall.Stat_t)
if !ok { if !ok {
return nil return nil

View File

@ -1,15 +1,16 @@
package registry // import "github.com/docker/docker/registry" package registry // import "github.com/docker/docker/registry"
import ( import (
"context"
"net" "net"
"net/url" "net/url"
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
"github.com/containerd/containerd/log"
"github.com/docker/distribution/reference" "github.com/docker/distribution/reference"
"github.com/docker/docker/api/types/registry" "github.com/docker/docker/api/types/registry"
"github.com/sirupsen/logrus"
) )
// ServiceOptions holds command line options. // ServiceOptions holds command line options.
@ -197,10 +198,10 @@ skip:
return err return err
} }
if strings.HasPrefix(strings.ToLower(r), "http://") { if strings.HasPrefix(strings.ToLower(r), "http://") {
logrus.Warnf("insecure registry %s should not contain 'http://' and 'http://' has been removed from the insecure registry config", r) log.G(context.TODO()).Warnf("insecure registry %s should not contain 'http://' and 'http://' has been removed from the insecure registry config", r)
r = r[7:] r = r[7:]
} else if strings.HasPrefix(strings.ToLower(r), "https://") { } else if strings.HasPrefix(strings.ToLower(r), "https://") {
logrus.Warnf("insecure registry %s should not contain 'https://' and 'https://' has been removed from the insecure registry config", r) log.G(context.TODO()).Warnf("insecure registry %s should not contain 'https://' and 'https://' has been removed from the insecure registry config", r)
r = r[8:] r = r[8:]
} else if hasScheme(r) { } else if hasScheme(r) {
return invalidParamf("insecure registry %s should not contain '://'", r) return invalidParamf("insecure registry %s should not contain '://'", r)

View File

@ -16,7 +16,7 @@ import (
) )
var acceptedSearchFilterTags = map[string]bool{ var acceptedSearchFilterTags = map[string]bool{
"is-automated": true, "is-automated": true, // Deprecated: the "is_automated" field is deprecated and will always be false in the future.
"is-official": true, "is-official": true,
"stars": true, "stars": true,
} }
@ -28,6 +28,7 @@ func (s *Service) Search(ctx context.Context, searchFilters filters.Args, term s
return nil, err return nil, err
} }
// TODO(thaJeztah): the "is-automated" field is deprecated; reset the field for the next release (v26.0.0). Return early when using "is-automated=true", and ignore "is-automated=false".
isAutomated, err := searchFilters.GetBoolOrDefault("is-automated", false) isAutomated, err := searchFilters.GetBoolOrDefault("is-automated", false)
if err != nil { if err != nil {
return nil, err return nil, err
@ -51,6 +52,7 @@ func (s *Service) Search(ctx context.Context, searchFilters filters.Args, term s
} }
} }
// TODO(thaJeztah): the "is-automated" field is deprecated. Reset the field for the next release (v26.0.0) if any "true" values are present.
unfilteredResult, err := s.searchUnfiltered(ctx, term, limit, authConfig, headers) unfilteredResult, err := s.searchUnfiltered(ctx, term, limit, authConfig, headers)
if err != nil { if err != nil {
return nil, err return nil, err
@ -59,7 +61,7 @@ func (s *Service) Search(ctx context.Context, searchFilters filters.Args, term s
filteredResults := []registry.SearchResult{} filteredResults := []registry.SearchResult{}
for _, result := range unfilteredResult.Results { for _, result := range unfilteredResult.Results {
if searchFilters.Contains("is-automated") { if searchFilters.Contains("is-automated") {
if isAutomated != result.IsAutomated { if isAutomated != result.IsAutomated { //nolint:staticcheck // ignore SA1019 for old API versions.
continue continue
} }
} }

View File

@ -2621,6 +2621,36 @@ file {
} }
json_name: "nonrecursive" json_name: "nonrecursive"
} }
field {
name: "createmountpoint"
number: 3
label: LABEL_OPTIONAL
type: TYPE_BOOL
options {
65004: "CreateMountpoint"
}
json_name: "createmountpoint"
}
field {
name: "readonlynonrecursive"
number: 4
label: LABEL_OPTIONAL
type: TYPE_BOOL
options {
65004: "ReadOnlyNonRecursive"
}
json_name: "readonlynonrecursive"
}
field {
name: "readonlyforcerecursive"
number: 5
label: LABEL_OPTIONAL
type: TYPE_BOOL
options {
65004: "ReadOnlyForceRecursive"
}
json_name: "readonlyforcerecursive"
}
enum_type { enum_type {
name: "Propagation" name: "Propagation"
value { value {
@ -2735,8 +2765,8 @@ file {
label: LABEL_OPTIONAL label: LABEL_OPTIONAL
type: TYPE_UINT32 type: TYPE_UINT32
options { options {
65001: 0
65003: "os.FileMode" 65003: "os.FileMode"
65001: 0
} }
json_name: "mode" json_name: "mode"
} }
@ -2904,8 +2934,8 @@ file {
type: TYPE_MESSAGE type: TYPE_MESSAGE
type_name: ".google.protobuf.Duration" type_name: ".google.protobuf.Duration"
options { options {
65001: 0
65011: 1 65011: 1
65001: 0
} }
json_name: "delay" json_name: "delay"
} }
@ -3348,8 +3378,8 @@ file {
} }
} }
options { options {
62001: 0
62023: "PublishMode" 62023: "PublishMode"
62001: 0
} }
} }
} }
@ -4055,8 +4085,8 @@ file {
label: LABEL_OPTIONAL label: LABEL_OPTIONAL
type: TYPE_UINT32 type: TYPE_UINT32
options { options {
65001: 0
65003: "os.FileMode" 65003: "os.FileMode"
65001: 0
} }
json_name: "mode" json_name: "mode"
} }
@ -4182,6 +4212,14 @@ file {
type_name: ".google.protobuf.Duration" type_name: ".google.protobuf.Duration"
json_name: "startPeriod" json_name: "startPeriod"
} }
field {
name: "start_interval"
number: 6
label: LABEL_OPTIONAL
type: TYPE_MESSAGE
type_name: ".google.protobuf.Duration"
json_name: "startInterval"
}
} }
message_type { message_type {
name: "MaybeEncryptedRecord" name: "MaybeEncryptedRecord"
@ -5052,8 +5090,8 @@ file {
} }
} }
options { options {
62001: 0
62023: "NodeRole" 62023: "NodeRole"
62001: 0
} }
} }
syntax: "proto3" syntax: "proto3"
@ -9739,8 +9777,8 @@ file {
type: TYPE_MESSAGE type: TYPE_MESSAGE
type_name: ".google.protobuf.Duration" type_name: ".google.protobuf.Duration"
options { options {
65001: 0
65011: 1 65011: 1
65001: 0
} }
json_name: "period" json_name: "period"
} }
@ -10958,14 +10996,14 @@ file {
} }
} }
options { options {
63017: 1
63020: 1
63018: 1
63001: 0 63001: 0
63002: 0 63002: 0
63017: 1 63035: 0
63018: 1
63020: 1
63026: 0 63026: 0
63034: 0 63034: 0
63035: 0
} }
} }
file { file {

View File

@ -3609,6 +3609,10 @@ type HealthConfig struct {
// which health check failures will note count towards the maximum // which health check failures will note count towards the maximum
// number of retries. // number of retries.
StartPeriod *types.Duration `protobuf:"bytes,5,opt,name=start_period,json=startPeriod,proto3" json:"start_period,omitempty"` StartPeriod *types.Duration `protobuf:"bytes,5,opt,name=start_period,json=startPeriod,proto3" json:"start_period,omitempty"`
// StartInterval is the time to wait between checks during the start period.
// Zero means inherit.
// Note: can't use stdduration because this field needs to be nullable.
StartInterval *types.Duration `protobuf:"bytes,6,opt,name=start_interval,json=startInterval,proto3" json:"start_interval,omitempty"`
} }
func (m *HealthConfig) Reset() { *m = HealthConfig{} } func (m *HealthConfig) Reset() { *m = HealthConfig{} }
@ -5011,407 +5015,408 @@ func init() {
} }
var fileDescriptor_0b5eafd0404ded3d = []byte{ var fileDescriptor_0b5eafd0404ded3d = []byte{
// 6395 bytes of a gzipped FileDescriptorProto // 6412 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x7b, 0x4d, 0x6c, 0x24, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x7b, 0x4d, 0x6c, 0x24, 0x49,
0x56, 0xb0, 0xeb, 0xd7, 0x55, 0xaf, 0xca, 0x76, 0x76, 0xd8, 0xe3, 0x71, 0xd7, 0xf4, 0xd8, 0x9e, 0x56, 0xb0, 0xeb, 0xd7, 0x55, 0xaf, 0xaa, 0xec, 0xec, 0xb0, 0xc7, 0xe3, 0xae, 0xe9, 0xb1, 0x3d,
0x9c, 0xe9, 0x9d, 0x9e, 0xde, 0x59, 0x77, 0x4f, 0xcf, 0xec, 0x7c, 0x3d, 0x33, 0x3b, 0x3b, 0x5d, 0x39, 0xd3, 0x3b, 0x3d, 0xbd, 0xb3, 0xee, 0x9e, 0x9e, 0xd9, 0xf9, 0x7a, 0x66, 0x76, 0x76, 0xba,
0x7f, 0x6e, 0xd7, 0xb6, 0x5d, 0x55, 0x8a, 0x2a, 0x77, 0xef, 0xac, 0xf4, 0x6d, 0x92, 0xce, 0x0c, 0xfe, 0xdc, 0xae, 0x6d, 0xbb, 0xaa, 0x14, 0x55, 0xee, 0xde, 0x59, 0xe9, 0xdb, 0x24, 0x9d, 0x19,
0x97, 0x73, 0x9c, 0x95, 0x59, 0x64, 0x66, 0xd9, 0x6d, 0x16, 0xc4, 0x9c, 0x00, 0x59, 0x42, 0x80, 0x2e, 0xe7, 0x38, 0x2b, 0xb3, 0xc8, 0xcc, 0xb2, 0xdb, 0x2c, 0x88, 0x39, 0x01, 0xb2, 0x84, 0x00,
0x90, 0x96, 0x45, 0x60, 0x81, 0x60, 0x39, 0x71, 0xe0, 0xc0, 0x81, 0x1f, 0x71, 0x18, 0x24, 0x84, 0x21, 0x2d, 0x8b, 0xc0, 0x02, 0xc1, 0x22, 0x21, 0x71, 0xe0, 0xc0, 0x81, 0x1f, 0x71, 0x18, 0x24,
0x96, 0x13, 0xbb, 0x2c, 0x82, 0xd5, 0x82, 0x0c, 0xeb, 0x95, 0x10, 0x17, 0x04, 0x17, 0x04, 0x07, 0x84, 0x96, 0x13, 0xbb, 0x2c, 0x82, 0xd5, 0x82, 0x0c, 0xeb, 0xbd, 0x70, 0x41, 0x70, 0x41, 0x70,
0x0e, 0x28, 0xfe, 0x32, 0xb3, 0xaa, 0xcb, 0x76, 0xf7, 0xce, 0x72, 0xb1, 0x33, 0xde, 0x5f, 0x44, 0xe0, 0x80, 0xe2, 0x2f, 0x33, 0xcb, 0x5d, 0xb6, 0xbb, 0x77, 0x96, 0x8b, 0x9d, 0xf1, 0xfe, 0x22,
0xbc, 0x88, 0x78, 0xf1, 0xde, 0x8b, 0x57, 0x70, 0xb3, 0x67, 0x05, 0x7b, 0xc3, 0x9d, 0x35, 0xc3, 0xe2, 0x45, 0xc4, 0x8b, 0xf7, 0x5e, 0xbc, 0x82, 0x9b, 0x7d, 0x2b, 0xd8, 0x1d, 0x6d, 0xaf, 0x1a,
0xed, 0xdf, 0x32, 0x5d, 0x63, 0x9f, 0x78, 0xb7, 0xfc, 0x43, 0xdd, 0xeb, 0xef, 0x5b, 0xc1, 0x2d, 0xee, 0xe0, 0x96, 0xe9, 0x1a, 0x7b, 0xc4, 0xbb, 0xe5, 0x1f, 0xe8, 0xde, 0x60, 0xcf, 0x0a, 0x6e,
0x7d, 0x60, 0xdd, 0x0a, 0x8e, 0x06, 0xc4, 0x5f, 0x1b, 0x78, 0x6e, 0xe0, 0x22, 0xc4, 0x09, 0xd6, 0xe9, 0x43, 0xeb, 0x56, 0x70, 0x38, 0x24, 0xfe, 0xea, 0xd0, 0x73, 0x03, 0x17, 0x21, 0x4e, 0xb0,
0x24, 0xc1, 0xda, 0xc1, 0x1b, 0xa5, 0x95, 0x9e, 0xeb, 0xf6, 0x6c, 0x72, 0x8b, 0x51, 0xec, 0x0c, 0x2a, 0x09, 0x56, 0xf7, 0xdf, 0x28, 0x2f, 0xf7, 0x5d, 0xb7, 0x6f, 0x93, 0x5b, 0x8c, 0x62, 0x7b,
0x77, 0x6f, 0x05, 0x56, 0x9f, 0xf8, 0x81, 0xde, 0x1f, 0x70, 0xa6, 0xd2, 0xf2, 0x38, 0x81, 0x39, 0xb4, 0x73, 0x2b, 0xb0, 0x06, 0xc4, 0x0f, 0xf4, 0xc1, 0x90, 0x33, 0x95, 0x97, 0xce, 0x12, 0x98,
0xf4, 0xf4, 0xc0, 0x72, 0x9d, 0xf3, 0xf0, 0x87, 0x9e, 0x3e, 0x18, 0x10, 0x4f, 0x74, 0x5a, 0x5a, 0x23, 0x4f, 0x0f, 0x2c, 0xd7, 0x39, 0x0f, 0x7f, 0xe0, 0xe9, 0xc3, 0x21, 0xf1, 0x44, 0xa7, 0xe5,
0xe8, 0xb9, 0x3d, 0x97, 0x7d, 0xde, 0xa2, 0x5f, 0x1c, 0xaa, 0xae, 0xc0, 0xf4, 0x43, 0xe2, 0xf9, 0xf9, 0xbe, 0xdb, 0x77, 0xd9, 0xe7, 0x2d, 0xfa, 0xc5, 0xa1, 0xea, 0x32, 0x4c, 0x3f, 0x24, 0x9e,
0x96, 0xeb, 0xa0, 0x05, 0xc8, 0x58, 0x8e, 0x49, 0x1e, 0x2f, 0x25, 0x56, 0x13, 0x37, 0xd2, 0x98, 0x6f, 0xb9, 0x0e, 0x9a, 0x87, 0x8c, 0xe5, 0x98, 0xe4, 0xf1, 0x62, 0x62, 0x25, 0x71, 0x23, 0x8d,
0x37, 0xd4, 0xdb, 0x00, 0x0d, 0xfa, 0x51, 0x77, 0x02, 0xef, 0x08, 0x29, 0x90, 0xda, 0x27, 0x47, 0x79, 0x43, 0xbd, 0x0d, 0xd0, 0xa4, 0x1f, 0x0d, 0x27, 0xf0, 0x0e, 0x91, 0x02, 0xa9, 0x3d, 0x72,
0x8c, 0x22, 0x8f, 0xe9, 0x27, 0x85, 0x1c, 0xe8, 0xf6, 0x52, 0x92, 0x43, 0x0e, 0x74, 0x5b, 0xfd, 0xc8, 0x28, 0xf2, 0x98, 0x7e, 0x52, 0xc8, 0xbe, 0x6e, 0x2f, 0x26, 0x39, 0x64, 0x5f, 0xb7, 0xd5,
0x41, 0x02, 0x0a, 0x65, 0xc7, 0x71, 0x03, 0x36, 0x3a, 0x1f, 0x21, 0x48, 0x3b, 0x7a, 0x9f, 0x08, 0x1f, 0x24, 0xa0, 0x50, 0x71, 0x1c, 0x37, 0x60, 0xa3, 0xf3, 0x11, 0x82, 0xb4, 0xa3, 0x0f, 0x88,
0x26, 0xf6, 0x8d, 0xaa, 0x90, 0xb5, 0xf5, 0x1d, 0x62, 0xfb, 0x4b, 0xc9, 0xd5, 0xd4, 0x8d, 0xc2, 0x60, 0x62, 0xdf, 0xa8, 0x06, 0x59, 0x5b, 0xdf, 0x26, 0xb6, 0xbf, 0x98, 0x5c, 0x49, 0xdd, 0x28,
0x9d, 0xcf, 0xae, 0x3d, 0xa9, 0x92, 0xb5, 0x98, 0x90, 0xb5, 0x4d, 0x46, 0xcd, 0x06, 0x81, 0x05, 0xdc, 0xf9, 0xec, 0xea, 0x93, 0x2a, 0x59, 0x8d, 0x09, 0x59, 0xdd, 0x60, 0xd4, 0x6c, 0x10, 0x58,
0x2b, 0xfa, 0x22, 0x4c, 0x5b, 0x8e, 0x69, 0x19, 0xc4, 0x5f, 0x4a, 0x33, 0x29, 0xcb, 0x93, 0xa4, 0xb0, 0xa2, 0x2f, 0xc2, 0xb4, 0xe5, 0x98, 0x96, 0x41, 0xfc, 0xc5, 0x34, 0x93, 0xb2, 0x34, 0x49,
0x44, 0xa3, 0xaf, 0xa4, 0xbf, 0x75, 0xba, 0x32, 0x85, 0x25, 0x53, 0xe9, 0x1d, 0x28, 0xc4, 0xc4, 0x4a, 0x34, 0xfa, 0x6a, 0xfa, 0x5b, 0x27, 0xcb, 0x53, 0x58, 0x32, 0x95, 0xdf, 0x81, 0x42, 0x4c,
0x4e, 0x98, 0xdb, 0x02, 0x64, 0x0e, 0x74, 0x7b, 0x48, 0xc4, 0xec, 0x78, 0xe3, 0xdd, 0xe4, 0xdd, 0xec, 0x84, 0xb9, 0xcd, 0x43, 0x66, 0x5f, 0xb7, 0x47, 0x44, 0xcc, 0x8e, 0x37, 0xde, 0x4d, 0xde,
0x84, 0x7a, 0x0f, 0x16, 0x9a, 0x7a, 0x9f, 0x98, 0xf7, 0x89, 0x43, 0x3c, 0xcb, 0xc0, 0xc4, 0x77, 0x4d, 0xa8, 0xf7, 0x60, 0xbe, 0xa5, 0x0f, 0x88, 0x79, 0x9f, 0x38, 0xc4, 0xb3, 0x0c, 0x4c, 0x7c,
0x87, 0x9e, 0x41, 0xe8, 0x5c, 0xf7, 0x2d, 0xc7, 0x94, 0x73, 0xa5, 0xdf, 0x93, 0xa5, 0xa8, 0x55, 0x77, 0xe4, 0x19, 0x84, 0xce, 0x75, 0xcf, 0x72, 0x4c, 0x39, 0x57, 0xfa, 0x3d, 0x59, 0x8a, 0x5a,
0x78, 0xbe, 0x66, 0xf9, 0x86, 0x47, 0x02, 0xf2, 0xcc, 0x42, 0x52, 0x52, 0xc8, 0x69, 0x02, 0xe6, 0x83, 0xe7, 0xeb, 0x96, 0x6f, 0x78, 0x24, 0x20, 0xcf, 0x2c, 0x24, 0x25, 0x85, 0x9c, 0x24, 0x60,
0xc6, 0xb9, 0xbf, 0x02, 0xf3, 0x54, 0xc5, 0xa6, 0xe6, 0x09, 0x88, 0xe6, 0x0f, 0x88, 0xc1, 0x84, 0xf6, 0x2c, 0xf7, 0x57, 0x60, 0x8e, 0xaa, 0xd8, 0xd4, 0x3c, 0x01, 0xd1, 0xfc, 0x21, 0x31, 0x98,
0x15, 0xee, 0xdc, 0x98, 0xa4, 0xa1, 0x49, 0x33, 0xd9, 0x98, 0xc2, 0x57, 0x98, 0x18, 0x09, 0xe8, 0xb0, 0xc2, 0x9d, 0x1b, 0x93, 0x34, 0x34, 0x69, 0x26, 0xeb, 0x53, 0xf8, 0x0a, 0x13, 0x23, 0x01,
0x0c, 0x88, 0x81, 0x0c, 0x58, 0x34, 0xc5, 0xa0, 0xc7, 0xc4, 0x27, 0x99, 0xf8, 0x89, 0xcb, 0x78, 0xdd, 0x21, 0x31, 0x90, 0x01, 0x0b, 0xa6, 0x18, 0xf4, 0x19, 0xf1, 0x49, 0x26, 0x7e, 0xe2, 0x32,
0xce, 0x34, 0x37, 0xa6, 0xf0, 0x82, 0x14, 0x16, 0xef, 0xa4, 0x02, 0x90, 0x93, 0xb2, 0xd5, 0x6f, 0x9e, 0x33, 0xcd, 0xf5, 0x29, 0x3c, 0x2f, 0x85, 0xc5, 0x3b, 0xa9, 0x02, 0xe4, 0xa4, 0x6c, 0xf5,
0x24, 0x20, 0x2f, 0x91, 0x3e, 0x7a, 0x0d, 0xf2, 0x8e, 0xee, 0xb8, 0x9a, 0x31, 0x18, 0xfa, 0x6c, 0x1b, 0x09, 0xc8, 0x4b, 0xa4, 0x8f, 0x5e, 0x83, 0xbc, 0xa3, 0x3b, 0xae, 0x66, 0x0c, 0x47, 0x3e,
0x42, 0xa9, 0x4a, 0xf1, 0xec, 0x74, 0x25, 0xd7, 0xd4, 0x1d, 0xb7, 0xda, 0xde, 0xf6, 0x71, 0x8e, 0x9b, 0x50, 0xaa, 0x5a, 0x3c, 0x3d, 0x59, 0xce, 0xb5, 0x74, 0xc7, 0xad, 0x75, 0xb6, 0x7c, 0x9c,
0xa2, 0xab, 0x83, 0xa1, 0x8f, 0x5e, 0x82, 0x62, 0x9f, 0xf4, 0x5d, 0xef, 0x48, 0xdb, 0x39, 0x0a, 0xa3, 0xe8, 0xda, 0x70, 0xe4, 0xa3, 0x97, 0xa0, 0x38, 0x20, 0x03, 0xd7, 0x3b, 0xd4, 0xb6, 0x0f,
0x88, 0x2f, 0xd4, 0x56, 0xe0, 0xb0, 0x0a, 0x05, 0xa1, 0xf7, 0x61, 0xba, 0xc7, 0x87, 0xb4, 0x94, 0x03, 0xe2, 0x0b, 0xb5, 0x15, 0x38, 0xac, 0x4a, 0x41, 0xe8, 0x7d, 0x98, 0xee, 0xf3, 0x21, 0x2d,
0x62, 0xdb, 0xe7, 0xe5, 0x49, 0xa3, 0x1f, 0x1b, 0x35, 0x96, 0x3c, 0xea, 0xd7, 0x93, 0xb0, 0x10, 0xa6, 0xd8, 0xf6, 0x79, 0x79, 0xd2, 0xe8, 0xcf, 0x8c, 0x1a, 0x4b, 0x1e, 0xf5, 0xeb, 0x49, 0x98,
0x42, 0xc9, 0x4f, 0x0e, 0x2d, 0x8f, 0xf4, 0x89, 0x13, 0xf8, 0xe8, 0xf3, 0x90, 0xb5, 0xad, 0xbe, 0x0f, 0xa1, 0xe4, 0x27, 0x47, 0x96, 0x47, 0x06, 0xc4, 0x09, 0x7c, 0xf4, 0x79, 0xc8, 0xda, 0xd6,
0x15, 0xf8, 0x42, 0xe7, 0x2f, 0x4e, 0x12, 0x1b, 0x4e, 0x0a, 0x0b, 0x62, 0x54, 0x86, 0xa2, 0x47, 0xc0, 0x0a, 0x7c, 0xa1, 0xf3, 0x17, 0x27, 0x89, 0x0d, 0x27, 0x85, 0x05, 0x31, 0xaa, 0x40, 0xd1,
0x7c, 0xe2, 0x1d, 0xf0, 0x1d, 0x2f, 0x34, 0x7a, 0x09, 0xf3, 0x08, 0x0b, 0x7a, 0x17, 0xc0, 0x3f, 0x23, 0x3e, 0xf1, 0xf6, 0xf9, 0x8e, 0x17, 0x1a, 0xbd, 0x84, 0x79, 0x8c, 0x05, 0xbd, 0x0b, 0xe0,
0xd4, 0x07, 0x62, 0xca, 0x29, 0x26, 0xe0, 0x85, 0x35, 0x6e, 0x17, 0xd6, 0xa4, 0x5d, 0x58, 0x6b, 0x1f, 0xe8, 0x43, 0x31, 0xe5, 0x14, 0x13, 0xf0, 0xc2, 0x2a, 0xb7, 0x0b, 0xab, 0xd2, 0x2e, 0xac,
0x38, 0xc1, 0xdb, 0x6f, 0x3d, 0xa4, 0xfb, 0x07, 0xe7, 0x29, 0x39, 0xd7, 0xc6, 0x06, 0x5c, 0x11, 0x36, 0x9d, 0xe0, 0xed, 0xb7, 0x1e, 0xd2, 0xfd, 0x83, 0xf3, 0x94, 0x9c, 0x6b, 0x63, 0x1d, 0xae,
0x0a, 0xa3, 0xb0, 0x81, 0xe5, 0x10, 0x9f, 0x1e, 0xab, 0x4b, 0x45, 0x28, 0x9c, 0xab, 0x13, 0x32, 0x08, 0x85, 0x51, 0xd8, 0xd0, 0x72, 0x88, 0x4f, 0x8f, 0xd5, 0xa5, 0x22, 0x14, 0xce, 0xd5, 0x0d,
0xa9, 0xeb, 0x90, 0x6b, 0xdb, 0x7a, 0xb0, 0xeb, 0x7a, 0x7d, 0xa4, 0x42, 0x51, 0xf7, 0x8c, 0x3d, 0x99, 0xd4, 0x35, 0xc8, 0x75, 0x6c, 0x3d, 0xd8, 0x71, 0xbd, 0x01, 0x52, 0xa1, 0xa8, 0x7b, 0xc6,
0x2b, 0x20, 0x46, 0x30, 0xf4, 0xa4, 0x0d, 0x18, 0x81, 0xa1, 0x45, 0x48, 0xba, 0x7c, 0xba, 0xf9, 0xae, 0x15, 0x10, 0x23, 0x18, 0x79, 0xd2, 0x06, 0x8c, 0xc1, 0xd0, 0x02, 0x24, 0x5d, 0x3e, 0xdd,
0x4a, 0xf6, 0xec, 0x74, 0x25, 0xd9, 0xea, 0xe0, 0xa4, 0xeb, 0xab, 0xef, 0xc1, 0x95, 0xb6, 0x3d, 0x7c, 0x35, 0x7b, 0x7a, 0xb2, 0x9c, 0x6c, 0x77, 0x71, 0xd2, 0xf5, 0xd5, 0xf7, 0xe0, 0x4a, 0xc7,
0xec, 0x59, 0x4e, 0x8d, 0xf8, 0x86, 0x67, 0x0d, 0xe8, 0x1c, 0xe9, 0xd9, 0xa0, 0x96, 0x54, 0x9e, 0x1e, 0xf5, 0x2d, 0xa7, 0x4e, 0x7c, 0xc3, 0xb3, 0x86, 0x74, 0x8e, 0xf4, 0x6c, 0x50, 0x4b, 0x2a,
0x0d, 0xfa, 0x1d, 0x1a, 0x98, 0x64, 0x64, 0x60, 0xd4, 0x9f, 0x4f, 0xc2, 0x95, 0xba, 0xd3, 0xb3, 0xcf, 0x06, 0xfd, 0x0e, 0x0d, 0x4c, 0x32, 0x32, 0x30, 0xea, 0xcf, 0x27, 0xe1, 0x4a, 0xc3, 0xe9,
0x1c, 0x12, 0xe7, 0xbe, 0x0e, 0xb3, 0x84, 0x01, 0xb5, 0x03, 0x6e, 0xf4, 0x84, 0x9c, 0x19, 0x0e, 0x5b, 0x0e, 0x89, 0x73, 0x5f, 0x87, 0x19, 0xc2, 0x80, 0xda, 0x3e, 0x37, 0x7a, 0x42, 0x4e, 0x89,
0x95, 0x96, 0xb0, 0x31, 0x66, 0x9d, 0xde, 0x98, 0xb4, 0x08, 0x4f, 0x48, 0x9f, 0x68, 0xa3, 0xea, 0x43, 0xa5, 0x25, 0x6c, 0x9e, 0xb1, 0x4e, 0x6f, 0x4c, 0x5a, 0x84, 0x27, 0xa4, 0x4f, 0xb4, 0x51,
0x30, 0x3d, 0x60, 0x93, 0xf0, 0xc5, 0x26, 0xbb, 0x3e, 0x49, 0xd6, 0x13, 0xf3, 0x94, 0xa6, 0x4a, 0x0d, 0x98, 0x1e, 0xb2, 0x49, 0xf8, 0x62, 0x93, 0x5d, 0x9f, 0x24, 0xeb, 0x89, 0x79, 0x4a, 0x53,
0xf0, 0x7e, 0x1a, 0x53, 0xf5, 0xab, 0x29, 0x98, 0x6b, 0xba, 0xe6, 0x88, 0x1e, 0x4a, 0x90, 0xdb, 0x25, 0x78, 0x3f, 0x8d, 0xa9, 0xfa, 0xd5, 0x14, 0xcc, 0xb6, 0x5c, 0x73, 0x4c, 0x0f, 0x65, 0xc8,
0x73, 0xfd, 0x20, 0x66, 0x96, 0xc3, 0x36, 0xba, 0x0b, 0xb9, 0x81, 0x58, 0x3e, 0xb1, 0x07, 0xaf, 0xed, 0xba, 0x7e, 0x10, 0x33, 0xcb, 0x61, 0x1b, 0xdd, 0x85, 0xdc, 0x50, 0x2c, 0x9f, 0xd8, 0x83,
0x4d, 0x1e, 0x32, 0xa7, 0xc1, 0x21, 0x35, 0x7a, 0x0f, 0xf2, 0xf2, 0xe0, 0xca, 0xdd, 0x77, 0xc9, 0xd7, 0x26, 0x0f, 0x99, 0xd3, 0xe0, 0x90, 0x1a, 0xbd, 0x07, 0x79, 0x79, 0x70, 0xe5, 0xee, 0xbb,
0xf6, 0x8d, 0xe8, 0xd1, 0xfb, 0x90, 0xe5, 0x8b, 0x20, 0x36, 0xdd, 0xf5, 0xa7, 0xd2, 0x39, 0x16, 0x64, 0xfb, 0x46, 0xf4, 0xe8, 0x7d, 0xc8, 0xf2, 0x45, 0x10, 0x9b, 0xee, 0xfa, 0x53, 0xe9, 0x1c,
0x4c, 0xe8, 0x3e, 0xe4, 0x02, 0xdb, 0xd7, 0x2c, 0x67, 0xd7, 0x5d, 0xca, 0x30, 0x01, 0x2b, 0x13, 0x0b, 0x26, 0x74, 0x1f, 0x72, 0x81, 0xed, 0x6b, 0x96, 0xb3, 0xe3, 0x2e, 0x66, 0x98, 0x80, 0xe5,
0x4d, 0x9d, 0x6b, 0x92, 0xee, 0x66, 0xa7, 0xe1, 0xec, 0xba, 0x95, 0xc2, 0xd9, 0xe9, 0xca, 0xb4, 0x89, 0xa6, 0xce, 0x35, 0x49, 0x6f, 0xa3, 0xdb, 0x74, 0x76, 0xdc, 0x6a, 0xe1, 0xf4, 0x64, 0x79,
0x68, 0xe0, 0xe9, 0xc0, 0xf6, 0xe9, 0x07, 0xba, 0x06, 0xe9, 0x5d, 0x6b, 0xe0, 0x2f, 0x65, 0x57, 0x5a, 0x34, 0xf0, 0x74, 0x60, 0xfb, 0xf4, 0x03, 0x5d, 0x83, 0xf4, 0x8e, 0x35, 0xf4, 0x17, 0xb3,
0x13, 0x37, 0x72, 0x95, 0xdc, 0xd9, 0xe9, 0x4a, 0x7a, 0xbd, 0xd1, 0xee, 0x60, 0x06, 0xa5, 0xdd, 0x2b, 0x89, 0x1b, 0xb9, 0x6a, 0xee, 0xf4, 0x64, 0x39, 0xbd, 0xd6, 0xec, 0x74, 0x31, 0x83, 0xd2,
0x18, 0xbe, 0xc5, 0xbb, 0x99, 0x66, 0xeb, 0x79, 0x6e, 0x37, 0xd5, 0x4e, 0x23, 0xea, 0x46, 0x34, 0x6e, 0x0c, 0xdf, 0xe2, 0xdd, 0x4c, 0xb3, 0xf5, 0x3c, 0xb7, 0x9b, 0x5a, 0xb7, 0x19, 0x75, 0x23,
0xf0, 0xb4, 0xe1, 0x5b, 0xf4, 0x43, 0xfd, 0x95, 0x04, 0x14, 0x62, 0x83, 0x41, 0x2f, 0x02, 0x04, 0x1a, 0x78, 0xda, 0xf0, 0x2d, 0xfa, 0xa1, 0xfe, 0x4a, 0x02, 0x0a, 0xb1, 0xc1, 0xa0, 0x17, 0x01,
0xde, 0xd0, 0x0f, 0x34, 0xcf, 0x75, 0x03, 0xb6, 0x26, 0x45, 0x9c, 0x67, 0x10, 0xec, 0xba, 0x01, 0x02, 0x6f, 0xe4, 0x07, 0x9a, 0xe7, 0xba, 0x01, 0x5b, 0x93, 0x22, 0xce, 0x33, 0x08, 0x76, 0xdd,
0x5a, 0x83, 0x79, 0x83, 0x78, 0x81, 0x66, 0xf9, 0xfe, 0x90, 0x78, 0x9a, 0x3f, 0xdc, 0xf9, 0x88, 0x00, 0xad, 0xc2, 0x9c, 0x41, 0xbc, 0x40, 0xb3, 0x7c, 0x7f, 0x44, 0x3c, 0xcd, 0x1f, 0x6d, 0x7f,
0x18, 0x01, 0x5b, 0x9f, 0x22, 0xbe, 0x42, 0x51, 0x0d, 0x86, 0xe9, 0x70, 0x04, 0x7a, 0x13, 0x16, 0x44, 0x8c, 0x80, 0xad, 0x4f, 0x11, 0x5f, 0xa1, 0xa8, 0x26, 0xc3, 0x74, 0x39, 0x02, 0xbd, 0x09,
0xe3, 0xf4, 0x83, 0xe1, 0x8e, 0x6d, 0x19, 0x1a, 0xdd, 0x33, 0x29, 0xc6, 0x32, 0x1f, 0xb1, 0xb4, 0x0b, 0x71, 0xfa, 0xe1, 0x68, 0xdb, 0xb6, 0x0c, 0x8d, 0xee, 0x99, 0x14, 0x63, 0x99, 0x8b, 0x58,
0x19, 0xee, 0x01, 0x39, 0x52, 0xbf, 0x2b, 0xc6, 0x24, 0x06, 0x8b, 0x56, 0xa0, 0xc0, 0xf7, 0x9f, 0x3a, 0x0c, 0xf7, 0x80, 0x1c, 0xaa, 0xdf, 0x15, 0x63, 0x12, 0x83, 0x45, 0xcb, 0x50, 0xe0, 0xfb,
0x16, 0xdb, 0x28, 0xc0, 0x41, 0xf4, 0xce, 0x40, 0x2f, 0xc3, 0xb4, 0xe3, 0x9a, 0x44, 0xb3, 0x4c, 0x4f, 0x8b, 0x6d, 0x14, 0xe0, 0x20, 0x7a, 0x67, 0xa0, 0x97, 0x61, 0xda, 0x71, 0x4d, 0xa2, 0x59,
0x71, 0x7c, 0xe1, 0xec, 0x74, 0x25, 0x4b, 0x45, 0x34, 0x6a, 0x38, 0x4b, 0x51, 0x0d, 0x13, 0xdd, 0xa6, 0x38, 0xbe, 0x70, 0x7a, 0xb2, 0x9c, 0xa5, 0x22, 0x9a, 0x75, 0x9c, 0xa5, 0xa8, 0xa6, 0x89,
0x82, 0x85, 0xbe, 0xfe, 0x58, 0x3b, 0x70, 0xed, 0x61, 0x9f, 0xf8, 0xda, 0x80, 0x78, 0x1a, 0xc5, 0x6e, 0xc1, 0xfc, 0x40, 0x7f, 0xac, 0xed, 0xbb, 0xf6, 0x68, 0x40, 0x7c, 0x6d, 0x48, 0x3c, 0x8d,
0xb0, 0x81, 0xa4, 0xf0, 0x95, 0xbe, 0xfe, 0xf8, 0x21, 0x47, 0xb5, 0x89, 0x47, 0x59, 0xd1, 0x16, 0x62, 0xd8, 0x40, 0x52, 0xf8, 0xca, 0x40, 0x7f, 0xfc, 0x90, 0xa3, 0x3a, 0xc4, 0xa3, 0xac, 0x68,
0xcc, 0xeb, 0x86, 0x41, 0x7c, 0xdf, 0xda, 0xb1, 0x89, 0x16, 0xb8, 0x03, 0xd7, 0x76, 0x7b, 0x47, 0x13, 0xe6, 0x74, 0xc3, 0x20, 0xbe, 0x6f, 0x6d, 0xdb, 0x44, 0x0b, 0xdc, 0xa1, 0x6b, 0xbb, 0xfd,
0x62, 0x5b, 0x4c, 0xdc, 0x8b, 0x5d, 0x41, 0x83, 0x51, 0xc4, 0x28, 0x61, 0xea, 0xf7, 0x12, 0xa0, 0x43, 0xb1, 0x2d, 0x26, 0xee, 0xc5, 0x9e, 0xa0, 0xc1, 0x28, 0x62, 0x94, 0x30, 0xf5, 0x7b, 0x09,
0x60, 0x7d, 0x37, 0xd8, 0x22, 0xfd, 0x1d, 0xe2, 0x75, 0x02, 0x3d, 0x18, 0xfa, 0x68, 0x11, 0xb2, 0x50, 0xb0, 0xbe, 0x13, 0x6c, 0x92, 0xc1, 0x36, 0xf1, 0xba, 0x81, 0x1e, 0x8c, 0x7c, 0xb4, 0x00,
0x36, 0xd1, 0x4d, 0xe2, 0xb1, 0x59, 0xe5, 0xb0, 0x68, 0xa1, 0x6d, 0x6a, 0x84, 0x75, 0x63, 0x4f, 0x59, 0x9b, 0xe8, 0x26, 0xf1, 0xd8, 0xac, 0x72, 0x58, 0xb4, 0xd0, 0x16, 0x35, 0xc2, 0xba, 0xb1,
0xdf, 0xb1, 0x6c, 0x2b, 0x38, 0x62, 0xd3, 0x9a, 0x9d, 0x7c, 0xfe, 0xc7, 0x65, 0xae, 0xe1, 0x18, 0xab, 0x6f, 0x5b, 0xb6, 0x15, 0x1c, 0xb2, 0x69, 0xcd, 0x4c, 0x3e, 0xff, 0x67, 0x65, 0xae, 0xe2,
0x23, 0x1e, 0x11, 0x83, 0x96, 0x60, 0xba, 0x4f, 0x7c, 0x5f, 0xef, 0xf1, 0x69, 0xe7, 0xb1, 0x6c, 0x18, 0x23, 0x1e, 0x13, 0x83, 0x16, 0x61, 0x7a, 0x40, 0x7c, 0x5f, 0xef, 0xf3, 0x69, 0xe7, 0xb1,
0xaa, 0xef, 0x41, 0x31, 0xce, 0x87, 0x0a, 0x30, 0xbd, 0xdd, 0x7c, 0xd0, 0x6c, 0x3d, 0x6a, 0x2a, 0x6c, 0xaa, 0xef, 0x41, 0x31, 0xce, 0x87, 0x0a, 0x30, 0xbd, 0xd5, 0x7a, 0xd0, 0x6a, 0x3f, 0x6a,
0x53, 0x68, 0x0e, 0x0a, 0xdb, 0x4d, 0x5c, 0x2f, 0x57, 0x37, 0xca, 0x95, 0xcd, 0xba, 0x92, 0x40, 0x29, 0x53, 0x68, 0x16, 0x0a, 0x5b, 0x2d, 0xdc, 0xa8, 0xd4, 0xd6, 0x2b, 0xd5, 0x8d, 0x86, 0x92,
0x33, 0x90, 0x8f, 0x9a, 0x49, 0xf5, 0x0f, 0x13, 0x00, 0x54, 0x65, 0x62, 0x52, 0xef, 0x42, 0xc6, 0x40, 0x25, 0xc8, 0x47, 0xcd, 0xa4, 0xfa, 0x47, 0x09, 0x00, 0xaa, 0x32, 0x31, 0xa9, 0x77, 0x21,
0x0f, 0xf4, 0x80, 0xaf, 0xd4, 0xec, 0x9d, 0x57, 0xce, 0xdb, 0x99, 0x62, 0xbc, 0xf4, 0x1f, 0xc1, 0xe3, 0x07, 0x7a, 0xc0, 0x57, 0x6a, 0xe6, 0xce, 0x2b, 0xe7, 0xed, 0x4c, 0x31, 0x5e, 0xfa, 0x8f,
0x9c, 0x25, 0x3e, 0xc2, 0xe4, 0xc8, 0x08, 0xa9, 0x75, 0xd5, 0x4d, 0xd3, 0x13, 0x03, 0x67, 0xdf, 0x60, 0xce, 0x12, 0x1f, 0x61, 0x72, 0x6c, 0x84, 0xd4, 0xba, 0xea, 0xa6, 0xe9, 0x89, 0x81, 0xb3,
0xea, 0x7b, 0x90, 0x61, 0xdc, 0xa3, 0xc3, 0xcd, 0x41, 0xba, 0x46, 0xbf, 0x12, 0x28, 0x0f, 0x19, 0x6f, 0xf5, 0x3d, 0xc8, 0x30, 0xee, 0xf1, 0xe1, 0xe6, 0x20, 0x5d, 0xa7, 0x5f, 0x09, 0x94, 0x87,
0x5c, 0x2f, 0xd7, 0x3e, 0x54, 0x92, 0x48, 0x81, 0x62, 0xad, 0xd1, 0xa9, 0xb6, 0x9a, 0xcd, 0x7a, 0x0c, 0x6e, 0x54, 0xea, 0x1f, 0x2a, 0x49, 0xa4, 0x40, 0xb1, 0xde, 0xec, 0xd6, 0xda, 0xad, 0x56,
0xb5, 0x5b, 0xaf, 0x29, 0x29, 0xf5, 0x3a, 0x64, 0x1a, 0x7d, 0x2a, 0xf9, 0x1a, 0xb5, 0x17, 0xbb, 0xa3, 0xd6, 0x6b, 0xd4, 0x95, 0x94, 0x7a, 0x1d, 0x32, 0xcd, 0x01, 0x95, 0x7c, 0x8d, 0xda, 0x8b,
0xc4, 0x23, 0x8e, 0x21, 0x77, 0x57, 0x04, 0x50, 0xff, 0x75, 0x16, 0x32, 0x5b, 0xee, 0xd0, 0x09, 0x1d, 0xe2, 0x11, 0xc7, 0x90, 0xbb, 0x2b, 0x02, 0xa8, 0xff, 0x3a, 0x03, 0x99, 0x4d, 0x77, 0xe4,
0xd0, 0x9d, 0x98, 0xcd, 0x9f, 0x9d, 0xec, 0xe4, 0x31, 0xc2, 0xb5, 0xee, 0xd1, 0x80, 0x88, 0x3b, 0x04, 0xe8, 0x4e, 0xcc, 0xe6, 0xcf, 0x4c, 0x76, 0xf2, 0x18, 0xe1, 0x6a, 0xef, 0x70, 0x48, 0xc4,
0x61, 0x11, 0xb2, 0xdc, 0xb2, 0x88, 0xe9, 0x88, 0x16, 0x85, 0x07, 0xba, 0xd7, 0x23, 0x81, 0x98, 0x9d, 0xb0, 0x00, 0x59, 0x6e, 0x59, 0xc4, 0x74, 0x44, 0x8b, 0xc2, 0x03, 0xdd, 0xeb, 0x93, 0x40,
0x8f, 0x68, 0xa1, 0x1b, 0xd4, 0xe9, 0xd0, 0x4d, 0xd7, 0xb1, 0xf9, 0x4e, 0xcb, 0x71, 0xcf, 0x02, 0xcc, 0x47, 0xb4, 0xd0, 0x0d, 0xea, 0x74, 0xe8, 0xa6, 0xeb, 0xd8, 0x7c, 0xa7, 0xe5, 0xb8, 0x67,
0x13, 0xdd, 0x6c, 0x39, 0xf6, 0x11, 0x0e, 0xb1, 0xe8, 0x3e, 0x14, 0x0c, 0xd7, 0xf1, 0x2d, 0x3f, 0x81, 0x89, 0x6e, 0xb6, 0x1d, 0xfb, 0x10, 0x87, 0x58, 0x74, 0x1f, 0x0a, 0x86, 0xeb, 0xf8, 0x96,
0x20, 0x8e, 0x71, 0xb4, 0x94, 0x63, 0x83, 0xba, 0x7e, 0xfe, 0xa0, 0xaa, 0x11, 0x31, 0x8e, 0x73, 0x1f, 0x10, 0xc7, 0x38, 0x5c, 0xcc, 0xb1, 0x41, 0x5d, 0x3f, 0x7f, 0x50, 0xb5, 0x88, 0x18, 0xc7,
0xa2, 0x0d, 0x28, 0xee, 0x58, 0x8e, 0xa9, 0xb9, 0x03, 0x7e, 0xe1, 0x67, 0xce, 0xb7, 0x7b, 0x5c, 0x39, 0xd1, 0x3a, 0x14, 0xb7, 0x2d, 0xc7, 0xd4, 0xdc, 0x21, 0xbf, 0xf0, 0x33, 0xe7, 0xdb, 0x3d,
0x52, 0xc5, 0x72, 0xcc, 0x16, 0x27, 0xc6, 0x85, 0x9d, 0xa8, 0x81, 0x9a, 0x30, 0xcb, 0x8f, 0x57, 0x2e, 0xa9, 0x6a, 0x39, 0x66, 0x9b, 0x13, 0xe3, 0xc2, 0x76, 0xd4, 0x40, 0x2d, 0x98, 0xe1, 0xc7,
0x28, 0x2b, 0xcb, 0x64, 0xbd, 0x7a, 0xbe, 0x2c, 0x7e, 0xe6, 0xa4, 0xb4, 0x99, 0x83, 0x78, 0x13, 0x2b, 0x94, 0x95, 0x65, 0xb2, 0x5e, 0x3d, 0x5f, 0x16, 0x3f, 0x73, 0x52, 0x5a, 0x69, 0x3f, 0xde,
0x3d, 0x80, 0x99, 0xa0, 0x3f, 0xd8, 0xf5, 0x43, 0x71, 0xd3, 0x4c, 0xdc, 0x67, 0x2e, 0xd0, 0x3c, 0x44, 0x0f, 0xa0, 0x14, 0x0c, 0x86, 0x3b, 0x7e, 0x28, 0x6e, 0x9a, 0x89, 0xfb, 0xcc, 0x05, 0x9a,
0x25, 0x97, 0xd2, 0x8a, 0x41, 0xac, 0x55, 0xfa, 0xcd, 0x0c, 0x14, 0x62, 0x23, 0x47, 0x1d, 0x28, 0xa7, 0xe4, 0x52, 0x5a, 0x31, 0x88, 0xb5, 0xca, 0xbf, 0x99, 0x81, 0x42, 0x6c, 0xe4, 0xa8, 0x0b,
0x0c, 0x3c, 0x77, 0xa0, 0xf7, 0x98, 0xd3, 0x22, 0x16, 0xf5, 0x8d, 0xa7, 0x9a, 0xf5, 0x5a, 0x3b, 0x85, 0xa1, 0xe7, 0x0e, 0xf5, 0x3e, 0x73, 0x5a, 0xc4, 0xa2, 0xbe, 0xf1, 0x54, 0xb3, 0x5e, 0xed,
0x62, 0xc4, 0x71, 0x29, 0xe8, 0x2d, 0x28, 0x3a, 0xae, 0xe3, 0x11, 0x63, 0xe8, 0xf9, 0xd6, 0x01, 0x44, 0x8c, 0x38, 0x2e, 0x05, 0xbd, 0x05, 0x45, 0xc7, 0x75, 0x3c, 0x62, 0x8c, 0x3c, 0xdf, 0xda,
0x5f, 0xf4, 0x5c, 0x45, 0x39, 0x3b, 0x5d, 0x29, 0x36, 0x5d, 0x07, 0x4b, 0x38, 0x1e, 0xa1, 0x42, 0xe7, 0x8b, 0x9e, 0xab, 0x2a, 0xa7, 0x27, 0xcb, 0xc5, 0x96, 0xeb, 0x60, 0x09, 0xc7, 0x63, 0x54,
0xf7, 0x40, 0x31, 0x3c, 0xa2, 0x07, 0xa4, 0x4f, 0x7b, 0x1a, 0xb8, 0x96, 0xc3, 0xb7, 0x45, 0xae, 0xe8, 0x1e, 0x28, 0x86, 0x47, 0xf4, 0x80, 0x0c, 0x68, 0x4f, 0x43, 0xd7, 0x72, 0xf8, 0xb6, 0xc8,
0xb2, 0x70, 0x76, 0xba, 0xa2, 0x54, 0x19, 0x6e, 0x2b, 0xc4, 0xe1, 0x27, 0xa8, 0xd1, 0x26, 0x2c, 0x55, 0xe7, 0x4f, 0x4f, 0x96, 0x95, 0x1a, 0xc3, 0x6d, 0x86, 0x38, 0xfc, 0x04, 0x35, 0xda, 0x80,
0xc8, 0x8d, 0x31, 0xd2, 0x3f, 0xdf, 0x42, 0x4b, 0x67, 0xa7, 0x2b, 0x0b, 0x72, 0x0b, 0x8d, 0x8c, 0x79, 0xb9, 0x31, 0xc6, 0xfa, 0xe7, 0x5b, 0x68, 0xf1, 0xf4, 0x64, 0x79, 0x5e, 0x6e, 0xa1, 0xb1,
0x63, 0x22, 0x17, 0xc2, 0xb0, 0x28, 0xe1, 0xbb, 0xae, 0x67, 0x90, 0x48, 0x5e, 0x86, 0xc9, 0x2b, 0x71, 0x4c, 0xe4, 0x42, 0x18, 0x16, 0x24, 0x7c, 0xc7, 0xf5, 0x0c, 0x12, 0xc9, 0xcb, 0x30, 0x79,
0x9d, 0x9d, 0xae, 0x2c, 0x4a, 0x79, 0xeb, 0x2e, 0x73, 0x3c, 0xa5, 0xc4, 0x73, 0x38, 0xd5, 0x93, 0xe5, 0xd3, 0x93, 0xe5, 0x05, 0x29, 0x6f, 0xcd, 0x65, 0x8e, 0xa7, 0x94, 0x78, 0x0e, 0xa7, 0x7a,
0x24, 0x14, 0x62, 0x6a, 0x43, 0x37, 0x21, 0x87, 0xdb, 0xb8, 0xf1, 0xb0, 0xdc, 0xad, 0x2b, 0x53, 0x9c, 0x84, 0x42, 0x4c, 0x6d, 0xe8, 0x26, 0xe4, 0x70, 0x07, 0x37, 0x1f, 0x56, 0x7a, 0x0d, 0x65,
0xa5, 0x6b, 0xc7, 0x27, 0xab, 0x4b, 0x6c, 0x86, 0x71, 0xd5, 0xb6, 0x3d, 0xeb, 0x80, 0x9e, 0xee, 0xaa, 0x7c, 0xed, 0xe8, 0x78, 0x65, 0x91, 0xcd, 0x30, 0xae, 0xda, 0x8e, 0x67, 0xed, 0xd3, 0xd3,
0x1b, 0x30, 0x2d, 0x49, 0x13, 0xa5, 0x17, 0x8e, 0x4f, 0x56, 0x9f, 0x1f, 0x27, 0x8d, 0x51, 0xe2, 0x7d, 0x03, 0xa6, 0x25, 0x69, 0xa2, 0xfc, 0xc2, 0xd1, 0xf1, 0xca, 0xf3, 0x67, 0x49, 0x63, 0x94,
0xce, 0x46, 0x19, 0xd7, 0x6b, 0x4a, 0x72, 0x32, 0x25, 0xee, 0xec, 0xe9, 0x1e, 0x31, 0xd1, 0x67, 0xb8, 0xbb, 0x5e, 0xc1, 0x8d, 0xba, 0x92, 0x9c, 0x4c, 0x89, 0xbb, 0xbb, 0xba, 0x47, 0x4c, 0xf4,
0x20, 0x2b, 0x08, 0x53, 0xa5, 0xd2, 0xf1, 0xc9, 0xea, 0xe2, 0x38, 0x61, 0x44, 0x87, 0x3b, 0x9b, 0x19, 0xc8, 0x0a, 0xc2, 0x54, 0xb9, 0x7c, 0x74, 0xbc, 0xb2, 0x70, 0x96, 0x30, 0xa2, 0xc3, 0xdd,
0xe5, 0x87, 0x75, 0x25, 0x3d, 0x99, 0x0e, 0x77, 0x6c, 0xfd, 0x80, 0xa0, 0x57, 0x20, 0xc3, 0xc9, 0x8d, 0xca, 0xc3, 0x86, 0x92, 0x9e, 0x4c, 0x87, 0xbb, 0xb6, 0xbe, 0x4f, 0xd0, 0x2b, 0x90, 0xe1,
0x32, 0xa5, 0xab, 0xc7, 0x27, 0xab, 0xcf, 0x3d, 0x21, 0x8e, 0x52, 0x95, 0x96, 0x7e, 0xe1, 0x77, 0x64, 0x99, 0xf2, 0xd5, 0xa3, 0xe3, 0x95, 0xe7, 0x9e, 0x10, 0x47, 0xa9, 0xca, 0x8b, 0xbf, 0xf0,
0x97, 0xa7, 0xfe, 0xf4, 0x9b, 0xcb, 0xca, 0x38, 0xba, 0xf4, 0x3f, 0x09, 0x98, 0x19, 0x39, 0x0c, 0xbb, 0x4b, 0x53, 0x7f, 0xf6, 0xcd, 0x25, 0xe5, 0x2c, 0xba, 0xfc, 0x3f, 0x09, 0x28, 0x8d, 0x1d,
0x48, 0x85, 0xac, 0xe3, 0x1a, 0xee, 0x80, 0xfb, 0x57, 0x39, 0x79, 0xa9, 0x55, 0xdd, 0xc1, 0x11, 0x06, 0xa4, 0x42, 0xd6, 0x71, 0x0d, 0x77, 0xc8, 0xfd, 0xab, 0x9c, 0xbc, 0xd4, 0x6a, 0xee, 0xf0,
0x16, 0x18, 0xf4, 0x60, 0xcc, 0x43, 0x7c, 0xf3, 0x29, 0x4f, 0xda, 0x44, 0x1f, 0xf1, 0x03, 0x98, 0x10, 0x0b, 0x0c, 0x7a, 0x70, 0xc6, 0x43, 0x7c, 0xf3, 0x29, 0x4f, 0xda, 0x44, 0x1f, 0xf1, 0x03,
0x31, 0x3d, 0xeb, 0x80, 0x78, 0x9a, 0xe1, 0x3a, 0xbb, 0x56, 0x4f, 0xf8, 0x4e, 0xa5, 0x89, 0xc1, 0x28, 0x99, 0x9e, 0xb5, 0x4f, 0x3c, 0xcd, 0x70, 0x9d, 0x1d, 0xab, 0x2f, 0x7c, 0xa7, 0xf2, 0xc4,
0x14, 0x23, 0xc4, 0x45, 0xce, 0x50, 0x65, 0xf4, 0x9f, 0xc2, 0x3b, 0x2c, 0x0d, 0xa0, 0x18, 0x3f, 0x60, 0x8a, 0x11, 0xe2, 0x22, 0x67, 0xa8, 0x31, 0xfa, 0x4f, 0xe1, 0x1d, 0x96, 0x87, 0x50, 0x8c,
0xbb, 0xd4, 0x0f, 0xf1, 0xad, 0x9f, 0x22, 0x22, 0x84, 0x60, 0x31, 0x16, 0xce, 0x53, 0x08, 0x8f, 0x9f, 0x5d, 0xea, 0x87, 0xf8, 0xd6, 0x4f, 0x11, 0x11, 0x42, 0xb0, 0x18, 0x0b, 0xe7, 0x29, 0x84,
0x12, 0x5e, 0x85, 0x74, 0x9f, 0x5e, 0xde, 0x54, 0xce, 0x4c, 0x65, 0x9e, 0x3a, 0xa9, 0xdf, 0x3f, 0x47, 0x09, 0xaf, 0x42, 0x7a, 0x40, 0x2f, 0x6f, 0x2a, 0xa7, 0x54, 0x9d, 0xa3, 0x4e, 0xea, 0xf7,
0x5d, 0x29, 0xb8, 0xfe, 0xda, 0xba, 0x65, 0x93, 0x2d, 0xd7, 0x24, 0x98, 0x11, 0xd0, 0xfb, 0x44, 0x4f, 0x96, 0x0b, 0xae, 0xbf, 0xba, 0x66, 0xd9, 0x64, 0xd3, 0x35, 0x09, 0x66, 0x04, 0xf4, 0x3e,
0x1a, 0x0f, 0x71, 0xe3, 0x89, 0xa6, 0xfa, 0x67, 0x09, 0x48, 0x53, 0x43, 0x8d, 0x5e, 0x80, 0x74, 0x91, 0xc6, 0x43, 0xdc, 0x78, 0xa2, 0xa9, 0xfe, 0x79, 0x02, 0xd2, 0xd4, 0x50, 0xa3, 0x17, 0x20,
0xa5, 0xd1, 0xac, 0x29, 0x53, 0xa5, 0x2b, 0xc7, 0x27, 0xab, 0x33, 0x4c, 0x5b, 0x14, 0x41, 0x0f, 0x5d, 0x6d, 0xb6, 0xea, 0xca, 0x54, 0xf9, 0xca, 0xd1, 0xf1, 0x4a, 0x89, 0x69, 0x8b, 0x22, 0xe8,
0x3c, 0x5a, 0x81, 0xec, 0xc3, 0xd6, 0xe6, 0xf6, 0x16, 0xdd, 0x79, 0xf3, 0xc7, 0x27, 0xab, 0x73, 0x81, 0x47, 0xcb, 0x90, 0x7d, 0xd8, 0xde, 0xd8, 0xda, 0xa4, 0x3b, 0x6f, 0xee, 0xe8, 0x78, 0x65,
0x21, 0x9a, 0xeb, 0x13, 0xbd, 0x08, 0x99, 0xee, 0x56, 0x7b, 0xbd, 0xa3, 0x24, 0x4b, 0xe8, 0xf8, 0x36, 0x44, 0x73, 0x7d, 0xa2, 0x17, 0x21, 0xd3, 0xdb, 0xec, 0xac, 0x75, 0x95, 0x64, 0x19, 0x1d,
0x64, 0x75, 0x36, 0xc4, 0xb3, 0xe9, 0xa0, 0x97, 0x20, 0xd3, 0x6c, 0x37, 0xda, 0x75, 0x25, 0x55, 0x1d, 0xaf, 0xcc, 0x84, 0x78, 0x36, 0x1d, 0xf4, 0x12, 0x64, 0x5a, 0x9d, 0x66, 0xa7, 0xa1, 0xa4,
0x5a, 0x3c, 0x3e, 0x59, 0x45, 0x21, 0x9a, 0x05, 0xbb, 0x6d, 0x6b, 0x40, 0xd0, 0x4b, 0x30, 0x5d, 0xca, 0x0b, 0x47, 0xc7, 0x2b, 0x28, 0x44, 0xb3, 0x60, 0xb7, 0x63, 0x0d, 0x09, 0x7a, 0x09, 0xa6,
0xdd, 0xdc, 0xee, 0x74, 0xeb, 0x58, 0x49, 0x97, 0x16, 0x8e, 0x4f, 0x56, 0x95, 0x90, 0xa8, 0x6a, 0x6b, 0x1b, 0x5b, 0xdd, 0x5e, 0x03, 0x2b, 0xe9, 0xf2, 0xfc, 0xd1, 0xf1, 0x8a, 0x12, 0x12, 0xd5,
0x0f, 0xfd, 0x80, 0x78, 0xa5, 0x2b, 0x62, 0xdb, 0xe4, 0x43, 0x8c, 0xfa, 0x9d, 0x04, 0x14, 0x62, 0xec, 0x91, 0x1f, 0x10, 0xaf, 0x7c, 0x45, 0x6c, 0x9b, 0x7c, 0x88, 0x51, 0xbf, 0x93, 0x80, 0x42,
0x26, 0x9d, 0xee, 0xfc, 0x5a, 0x7d, 0xbd, 0xbc, 0xbd, 0xd9, 0x55, 0xa6, 0x62, 0x3b, 0x3f, 0x46, 0xcc, 0xa4, 0xd3, 0x9d, 0x5f, 0x6f, 0xac, 0x55, 0xb6, 0x36, 0x7a, 0xca, 0x54, 0x6c, 0xe7, 0xc7,
0x52, 0x23, 0xbb, 0xfa, 0xd0, 0xa6, 0x57, 0x0c, 0x54, 0x5b, 0xcd, 0x4e, 0xa3, 0xd3, 0xad, 0x37, 0x48, 0xea, 0x64, 0x47, 0x1f, 0xd9, 0xf4, 0x8a, 0x81, 0x5a, 0xbb, 0xd5, 0x6d, 0x76, 0x7b, 0x8d,
0xbb, 0x4a, 0xa2, 0xb4, 0x74, 0x7c, 0xb2, 0xba, 0x30, 0x4e, 0xbc, 0x3e, 0xb4, 0x6d, 0xba, 0xf7, 0x56, 0x4f, 0x49, 0x94, 0x17, 0x8f, 0x8e, 0x57, 0xe6, 0xcf, 0x12, 0xaf, 0x8d, 0x6c, 0x9b, 0xee,
0xab, 0xe5, 0xea, 0x06, 0x3b, 0x4c, 0xd1, 0xde, 0x8f, 0x51, 0x55, 0x75, 0x63, 0x8f, 0x98, 0xe8, 0xfd, 0x5a, 0xa5, 0xb6, 0xce, 0x0e, 0x53, 0xb4, 0xf7, 0x63, 0x54, 0x35, 0xdd, 0xd8, 0x25, 0x26,
0x75, 0xc8, 0xd7, 0xea, 0x9b, 0xf5, 0xfb, 0x65, 0x76, 0xb1, 0x96, 0x5e, 0x3c, 0x3e, 0x59, 0xbd, 0x7a, 0x1d, 0xf2, 0xf5, 0xc6, 0x46, 0xe3, 0x7e, 0x85, 0x5d, 0xac, 0xe5, 0x17, 0x8f, 0x8e, 0x57,
0xfa, 0x64, 0xef, 0x36, 0xe9, 0xe9, 0x01, 0x31, 0xc7, 0xce, 0x40, 0x8c, 0x44, 0xfd, 0xcf, 0x24, 0xae, 0x3e, 0xd9, 0xbb, 0x4d, 0xfa, 0x7a, 0x40, 0xcc, 0x33, 0x67, 0x20, 0x46, 0xa2, 0xfe, 0x67,
0xcc, 0x60, 0xe2, 0x07, 0xba, 0x17, 0xb4, 0x5d, 0xdb, 0x32, 0x8e, 0x50, 0x1b, 0xf2, 0x86, 0xeb, 0x12, 0x4a, 0x98, 0xf8, 0x81, 0xee, 0x05, 0x1d, 0xd7, 0xb6, 0x8c, 0x43, 0xd4, 0x81, 0xbc, 0xe1,
0x98, 0x56, 0xcc, 0x44, 0xdf, 0x39, 0xc7, 0x95, 0x8f, 0xb8, 0x64, 0xab, 0x2a, 0x39, 0x71, 0x24, 0x3a, 0xa6, 0x15, 0x33, 0xd1, 0x77, 0xce, 0x71, 0xe5, 0x23, 0x2e, 0xd9, 0xaa, 0x49, 0x4e, 0x1c,
0x04, 0xdd, 0x82, 0x8c, 0x49, 0x6c, 0xfd, 0x48, 0xc4, 0x14, 0x57, 0x9f, 0x88, 0x29, 0x6b, 0x22, 0x09, 0x41, 0xb7, 0x20, 0x63, 0x12, 0x5b, 0x3f, 0x14, 0x31, 0xc5, 0xd5, 0x27, 0x62, 0xca, 0xba,
0x9d, 0x85, 0x39, 0x1d, 0x8b, 0xe0, 0xf5, 0xc7, 0x9a, 0x1e, 0x04, 0xa4, 0x3f, 0x08, 0xf8, 0x36, 0x48, 0x67, 0x61, 0x4e, 0xc7, 0x22, 0x78, 0xfd, 0xb1, 0xa6, 0x07, 0x01, 0x19, 0x0c, 0x03, 0xbe,
0x4a, 0xe3, 0x42, 0x5f, 0x7f, 0x5c, 0x16, 0x20, 0xf4, 0x06, 0x64, 0x0f, 0x2d, 0xc7, 0x74, 0x0f, 0x8d, 0xd2, 0xb8, 0x30, 0xd0, 0x1f, 0x57, 0x04, 0x08, 0xbd, 0x01, 0xd9, 0x03, 0xcb, 0x31, 0xdd,
0x85, 0x73, 0x78, 0x81, 0x50, 0x41, 0xa8, 0x1e, 0x53, 0x6f, 0x70, 0x6c, 0x98, 0x74, 0x27, 0x36, 0x03, 0xe1, 0x1c, 0x5e, 0x20, 0x54, 0x10, 0xaa, 0x47, 0xd4, 0x1b, 0x3c, 0x33, 0x4c, 0xba, 0x13,
0x5b, 0xcd, 0xba, 0xdc, 0x89, 0x02, 0xdf, 0x72, 0x9a, 0xae, 0x43, 0x0d, 0x0c, 0xb4, 0x9a, 0xda, 0x5b, 0xed, 0x56, 0x43, 0xee, 0x44, 0x81, 0x6f, 0x3b, 0x2d, 0xd7, 0xa1, 0x06, 0x06, 0xda, 0x2d,
0x7a, 0xb9, 0xb1, 0xb9, 0x8d, 0xe9, 0x6e, 0x64, 0x3b, 0x25, 0x24, 0x59, 0xd7, 0x2d, 0x9b, 0x06, 0x6d, 0xad, 0xd2, 0xdc, 0xd8, 0xc2, 0x74, 0x37, 0xb2, 0x9d, 0x12, 0x92, 0xac, 0xe9, 0x96, 0x4d,
0xb1, 0x57, 0x21, 0x55, 0x6e, 0x7e, 0xa8, 0x24, 0x4b, 0xca, 0xf1, 0xc9, 0x6a, 0x31, 0x44, 0x97, 0x83, 0xd8, 0xab, 0x90, 0xaa, 0xb4, 0x3e, 0x54, 0x92, 0x65, 0xe5, 0xe8, 0x78, 0xa5, 0x18, 0xa2,
0x9d, 0xa3, 0x48, 0xef, 0xe3, 0xfd, 0xaa, 0x7f, 0x9d, 0x82, 0xe2, 0xf6, 0xc0, 0xd4, 0x03, 0xc2, 0x2b, 0xce, 0x61, 0xa4, 0xf7, 0xb3, 0xfd, 0xaa, 0x7f, 0x93, 0x82, 0xe2, 0xd6, 0xd0, 0xd4, 0x03,
0x0f, 0x32, 0x5a, 0x85, 0xc2, 0x40, 0xf7, 0x74, 0xdb, 0x26, 0xb6, 0xe5, 0xf7, 0x45, 0x22, 0x2e, 0xc2, 0x0f, 0x32, 0x5a, 0x81, 0xc2, 0x50, 0xf7, 0x74, 0xdb, 0x26, 0xb6, 0xe5, 0x0f, 0x44, 0x22,
0x0e, 0x42, 0xef, 0x3c, 0xad, 0x1a, 0x2b, 0x39, 0x7a, 0x38, 0xbf, 0xf1, 0x4f, 0x2b, 0x09, 0xa9, 0x2e, 0x0e, 0x42, 0xef, 0x3c, 0xad, 0x1a, 0xab, 0x39, 0x7a, 0x38, 0xbf, 0xf1, 0xcf, 0xcb, 0x09,
0xd0, 0x6d, 0x98, 0xdd, 0xe5, 0xa3, 0xd5, 0x74, 0x83, 0x2d, 0x6c, 0x8a, 0x2d, 0xec, 0xda, 0xa4, 0xa9, 0xd0, 0x2d, 0x98, 0xd9, 0xe1, 0xa3, 0xd5, 0x74, 0x83, 0x2d, 0x6c, 0x8a, 0x2d, 0xec, 0xea,
0x85, 0x8d, 0x0f, 0x6b, 0x4d, 0x4c, 0xb2, 0xcc, 0xb8, 0xf0, 0xcc, 0x6e, 0xbc, 0x89, 0xde, 0x84, 0xa4, 0x85, 0x8d, 0x0f, 0x6b, 0x55, 0x4c, 0xb2, 0xc2, 0xb8, 0x70, 0x69, 0x27, 0xde, 0x44, 0x6f,
0xe9, 0xbe, 0xeb, 0x58, 0x81, 0xeb, 0x5d, 0xbe, 0x0a, 0x92, 0x12, 0xdd, 0x04, 0xea, 0xf8, 0x6b, 0xc2, 0xf4, 0xc0, 0x75, 0xac, 0xc0, 0xf5, 0x2e, 0x5f, 0x05, 0x49, 0x89, 0x6e, 0x02, 0x75, 0xfc,
0x72, 0x3c, 0x0c, 0xcd, 0x2e, 0xb9, 0x24, 0x9e, 0xeb, 0xeb, 0x8f, 0x45, 0x87, 0x98, 0x82, 0x51, 0x35, 0x39, 0x1e, 0x86, 0x66, 0x97, 0x5c, 0x12, 0xcf, 0x0e, 0xf4, 0xc7, 0xa2, 0x43, 0x4c, 0xc1,
0x05, 0x32, 0xae, 0x47, 0x5d, 0xf5, 0x2c, 0x1b, 0xee, 0xeb, 0x97, 0x0e, 0x97, 0x37, 0x5a, 0x94, 0xa8, 0x0a, 0x19, 0xd7, 0xa3, 0xae, 0x7a, 0x96, 0x0d, 0xf7, 0xf5, 0x4b, 0x87, 0xcb, 0x1b, 0x6d,
0x07, 0x73, 0x56, 0xf5, 0x6d, 0x98, 0x19, 0x99, 0x04, 0xf5, 0x50, 0xdb, 0xe5, 0xed, 0x4e, 0x5d, 0xca, 0x83, 0x39, 0xab, 0xfa, 0x36, 0x94, 0xc6, 0x26, 0x41, 0x3d, 0xd4, 0x4e, 0x65, 0xab, 0xdb,
0x99, 0x42, 0x45, 0xc8, 0x55, 0x5b, 0xcd, 0x6e, 0xa3, 0xb9, 0x4d, 0x5d, 0xec, 0x22, 0xe4, 0x70, 0x50, 0xa6, 0x50, 0x11, 0x72, 0xb5, 0x76, 0xab, 0xd7, 0x6c, 0x6d, 0x51, 0x17, 0xbb, 0x08, 0x39,
0x6b, 0x73, 0xb3, 0x52, 0xae, 0x3e, 0x50, 0x92, 0xea, 0x1a, 0x14, 0x62, 0xd2, 0xd0, 0x2c, 0x40, 0xdc, 0xde, 0xd8, 0xa8, 0x56, 0x6a, 0x0f, 0x94, 0xa4, 0xba, 0x0a, 0x85, 0x98, 0x34, 0x34, 0x03,
0xa7, 0xdb, 0x6a, 0x6b, 0xeb, 0x0d, 0xdc, 0xe9, 0x72, 0x07, 0xbd, 0xd3, 0x2d, 0xe3, 0xae, 0x00, 0xd0, 0xed, 0xb5, 0x3b, 0xda, 0x5a, 0x13, 0x77, 0x7b, 0xdc, 0x41, 0xef, 0xf6, 0x2a, 0xb8, 0x27,
0x24, 0xd4, 0x7f, 0x4f, 0xca, 0x15, 0x15, 0x3e, 0x79, 0x65, 0xd4, 0x27, 0xbf, 0x60, 0xf0, 0xc2, 0x00, 0x09, 0xf5, 0xdf, 0x93, 0x72, 0x45, 0x85, 0x4f, 0x5e, 0x1d, 0xf7, 0xc9, 0x2f, 0x18, 0xbc,
0x2b, 0x8f, 0x1a, 0xa1, 0x6f, 0xfe, 0x0e, 0x00, 0xdb, 0x38, 0xc4, 0xd4, 0xf4, 0x40, 0x2c, 0x7c, 0xf0, 0xca, 0xa3, 0x46, 0xe8, 0x9b, 0xbf, 0x03, 0xc0, 0x36, 0x0e, 0x31, 0x35, 0x3d, 0x10, 0x0b,
0xe9, 0x09, 0x25, 0x77, 0x65, 0xbe, 0x18, 0xe7, 0x05, 0x75, 0x39, 0x40, 0xef, 0x43, 0xd1, 0x70, 0x5f, 0x7e, 0x42, 0xc9, 0x3d, 0x99, 0x2f, 0xc6, 0x79, 0x41, 0x5d, 0x09, 0xd0, 0xfb, 0x50, 0x34,
0xfb, 0x03, 0x9b, 0x08, 0xe6, 0xd4, 0xa5, 0xcc, 0x85, 0x90, 0xbe, 0x1c, 0xc4, 0xa3, 0x82, 0xf4, 0xdc, 0xc1, 0xd0, 0x26, 0x82, 0x39, 0x75, 0x29, 0x73, 0x21, 0xa4, 0xaf, 0x04, 0xf1, 0xa8, 0x20,
0x68, 0xdc, 0xf2, 0x73, 0x09, 0xa9, 0x99, 0x09, 0x81, 0x40, 0x11, 0x72, 0xdb, 0xed, 0x5a, 0xb9, 0x3d, 0x1e, 0xb7, 0xfc, 0x5c, 0x42, 0x6a, 0x66, 0x42, 0x20, 0x50, 0x84, 0xdc, 0x56, 0xa7, 0x5e,
0xdb, 0x68, 0xde, 0x57, 0x12, 0x08, 0x20, 0xcb, 0x54, 0x5d, 0x53, 0x92, 0x34, 0x80, 0xa9, 0xb6, 0xe9, 0x35, 0x5b, 0xf7, 0x95, 0x04, 0x02, 0xc8, 0x32, 0x55, 0xd7, 0x95, 0x24, 0x0d, 0x60, 0x6a,
0xb6, 0xda, 0x9b, 0x75, 0x66, 0xb1, 0xd0, 0x02, 0x28, 0x52, 0xd9, 0x1a, 0x53, 0x64, 0xbd, 0xa6, 0xed, 0xcd, 0xce, 0x46, 0x83, 0x59, 0x2c, 0x34, 0x0f, 0x8a, 0x54, 0xb6, 0xc6, 0x14, 0xd9, 0xa8,
0xa4, 0xd1, 0x3c, 0xcc, 0x85, 0x50, 0xc1, 0x99, 0x41, 0x8b, 0x80, 0x42, 0x60, 0x24, 0x22, 0xab, 0x2b, 0x69, 0x34, 0x07, 0xb3, 0x21, 0x54, 0x70, 0x66, 0xd0, 0x02, 0xa0, 0x10, 0x18, 0x89, 0xc8,
0xfe, 0x0c, 0xcc, 0x55, 0x5d, 0x27, 0xd0, 0x2d, 0x27, 0x0c, 0xee, 0xee, 0xd0, 0x49, 0x0b, 0x10, 0xaa, 0x3f, 0x03, 0xb3, 0x35, 0xd7, 0x09, 0x74, 0xcb, 0x09, 0x83, 0xbb, 0x3b, 0x74, 0xd2, 0x02,
0x8d, 0x4d, 0xd9, 0x45, 0x58, 0x99, 0x3b, 0x3b, 0x5d, 0x29, 0x84, 0xa4, 0x8d, 0x1a, 0x73, 0xc6, 0x44, 0x63, 0x53, 0x76, 0x11, 0x56, 0x67, 0x4f, 0x4f, 0x96, 0x0b, 0x21, 0x69, 0xb3, 0xce, 0x9c,
0x45, 0xc3, 0xa4, 0xe7, 0x77, 0x20, 0xc2, 0xd8, 0x4c, 0x65, 0xfa, 0xec, 0x74, 0x25, 0xd5, 0x6e, 0x71, 0xd1, 0x30, 0xe9, 0xf9, 0x1d, 0x8a, 0x30, 0x36, 0x53, 0x9d, 0x3e, 0x3d, 0x59, 0x4e, 0x75,
0xd4, 0x30, 0x85, 0xa1, 0x17, 0x20, 0x4f, 0x1e, 0x5b, 0x81, 0x66, 0xc8, 0xa8, 0x35, 0x83, 0x73, 0x9a, 0x75, 0x4c, 0x61, 0xe8, 0x05, 0xc8, 0x93, 0xc7, 0x56, 0xa0, 0x19, 0x32, 0x6a, 0xcd, 0xe0,
0x14, 0x50, 0x75, 0x4d, 0xa2, 0x56, 0x00, 0xda, 0xae, 0x17, 0x88, 0x9e, 0xdf, 0x82, 0xcc, 0xc0, 0x1c, 0x05, 0xd4, 0x5c, 0x93, 0xa8, 0x55, 0x80, 0x8e, 0xeb, 0x05, 0xa2, 0xe7, 0xb7, 0x20, 0x33,
0xf5, 0x58, 0xe6, 0xef, 0xdc, 0x7c, 0x34, 0x25, 0xe7, 0x1b, 0x15, 0x73, 0x62, 0xf5, 0xd7, 0x53, 0x74, 0x3d, 0x96, 0xf9, 0x3b, 0x37, 0x1f, 0x4d, 0xc9, 0xf9, 0x46, 0xc5, 0x9c, 0x58, 0xfd, 0xf5,
0x00, 0x5d, 0xdd, 0xdf, 0x17, 0x42, 0xee, 0x42, 0x3e, 0xcc, 0xfd, 0x8b, 0x14, 0xe2, 0x85, 0xab, 0x14, 0x40, 0x4f, 0xf7, 0xf7, 0x84, 0x90, 0xbb, 0x90, 0x0f, 0x73, 0xff, 0x22, 0x85, 0x78, 0xe1,
0x1d, 0x12, 0xa3, 0x37, 0xe5, 0x66, 0xe3, 0x61, 0xeb, 0xc4, 0xe4, 0x8b, 0xec, 0x68, 0x52, 0xe4, 0x6a, 0x87, 0xc4, 0xe8, 0x4d, 0xb9, 0xd9, 0x78, 0xd8, 0x3a, 0x31, 0xf9, 0x22, 0x3b, 0x9a, 0x14,
0x37, 0x1a, 0x9b, 0x52, 0x3f, 0x82, 0x78, 0x9e, 0x58, 0x79, 0xfa, 0x89, 0xaa, 0xec, 0x5a, 0xe0, 0xf9, 0x8d, 0xc7, 0xa6, 0xd4, 0x8f, 0x20, 0x9e, 0x27, 0x56, 0x9e, 0x7e, 0xa2, 0x1a, 0xbb, 0x16,
0x4a, 0x13, 0xf1, 0xca, 0xc4, 0xa4, 0xe9, 0xd8, 0x8a, 0x6c, 0x4c, 0xe1, 0x88, 0x0f, 0x7d, 0x00, 0xb8, 0xd2, 0x44, 0xbc, 0x32, 0x31, 0x69, 0x7a, 0x66, 0x45, 0xd6, 0xa7, 0x70, 0xc4, 0x87, 0x3e,
0x05, 0x3a, 0x6f, 0xcd, 0x67, 0x38, 0x11, 0xaa, 0x9c, 0xab, 0x2a, 0x2e, 0x01, 0xc3, 0x20, 0xd2, 0x80, 0x02, 0x9d, 0xb7, 0xe6, 0x33, 0x9c, 0x08, 0x55, 0xce, 0x55, 0x15, 0x97, 0x80, 0x61, 0x18,
0xf2, 0x8b, 0x00, 0xfa, 0x60, 0x60, 0x5b, 0xc4, 0xd4, 0x76, 0x8e, 0x58, 0x6c, 0x92, 0xc7, 0x79, 0x69, 0xf9, 0x45, 0x00, 0x7d, 0x38, 0xb4, 0x2d, 0x62, 0x6a, 0xdb, 0x87, 0x2c, 0x36, 0xc9, 0xe3,
0x01, 0xa9, 0x1c, 0xd1, 0xe3, 0x22, 0xd1, 0x7a, 0xc0, 0xe2, 0xb3, 0x4b, 0x14, 0x28, 0xa8, 0xcb, 0xbc, 0x80, 0x54, 0x0f, 0xe9, 0x71, 0x91, 0x68, 0x3d, 0x60, 0xf1, 0xd9, 0x25, 0x0a, 0x14, 0xd4,
0x41, 0x45, 0x81, 0x59, 0x6f, 0xe8, 0x50, 0x85, 0x8a, 0xd1, 0xa9, 0x7f, 0x90, 0x84, 0xe7, 0x9b, 0x95, 0xa0, 0xaa, 0xc0, 0x8c, 0x37, 0x72, 0xa8, 0x42, 0xc5, 0xe8, 0xd4, 0x3f, 0x4c, 0xc2, 0xf3,
0x24, 0x38, 0x74, 0xbd, 0xfd, 0x72, 0x10, 0xe8, 0xc6, 0x5e, 0x9f, 0x38, 0x62, 0xf9, 0x62, 0xb1, 0x2d, 0x12, 0x1c, 0xb8, 0xde, 0x5e, 0x25, 0x08, 0x74, 0x63, 0x77, 0x40, 0x1c, 0xb1, 0x7c, 0xb1,
0x64, 0x62, 0x24, 0x96, 0x5c, 0x82, 0x69, 0xdd, 0xb6, 0x74, 0x9f, 0x70, 0xef, 0x30, 0x8f, 0x65, 0x58, 0x32, 0x31, 0x16, 0x4b, 0x2e, 0xc2, 0xb4, 0x6e, 0x5b, 0xba, 0x4f, 0xb8, 0x77, 0x98, 0xc7,
0x93, 0x46, 0xbc, 0x34, 0x7e, 0x26, 0xbe, 0x4f, 0x78, 0x3e, 0x90, 0x0e, 0x5c, 0x02, 0xd0, 0xd7, 0xb2, 0x49, 0x23, 0x5e, 0x1a, 0x3f, 0x13, 0xdf, 0x27, 0x3c, 0x1f, 0x48, 0x07, 0x2e, 0x01, 0xe8,
0x60, 0x51, 0xf8, 0x81, 0x7a, 0xd8, 0x15, 0x0d, 0xc1, 0xe4, 0xf3, 0x46, 0x7d, 0x62, 0x40, 0x3f, 0x6b, 0xb0, 0x20, 0xfc, 0x40, 0x3d, 0xec, 0x8a, 0x86, 0x60, 0xf2, 0x79, 0xa3, 0x31, 0x31, 0xa0,
0x79, 0x70, 0xc2, 0x51, 0x8c, 0xc0, 0xad, 0x41, 0x20, 0xdc, 0xce, 0x05, 0x73, 0x02, 0xaa, 0x74, 0x9f, 0x3c, 0x38, 0xe1, 0x28, 0x46, 0xe0, 0xf6, 0x30, 0x10, 0x6e, 0xe7, 0xbc, 0x39, 0x01, 0x55,
0x1f, 0xae, 0x9e, 0xcb, 0xf2, 0x4c, 0xf9, 0xc6, 0xef, 0x26, 0x01, 0x1a, 0xed, 0xf2, 0x96, 0x50, 0xbe, 0x0f, 0x57, 0xcf, 0x65, 0x79, 0xa6, 0x7c, 0xe3, 0x77, 0x93, 0x00, 0xcd, 0x4e, 0x65, 0x53,
0x52, 0x0d, 0xb2, 0xbb, 0x7a, 0xdf, 0xb2, 0x8f, 0x2e, 0xb2, 0x80, 0x11, 0xfd, 0x5a, 0x99, 0xab, 0x28, 0xa9, 0x0e, 0xd9, 0x1d, 0x7d, 0x60, 0xd9, 0x87, 0x17, 0x59, 0xc0, 0x88, 0x7e, 0xb5, 0xc2,
0x63, 0x9d, 0xf1, 0x60, 0xc1, 0xcb, 0xc2, 0xf9, 0xe1, 0x8e, 0x43, 0x82, 0x30, 0x9c, 0x67, 0x2d, 0xd5, 0xb1, 0xc6, 0x78, 0xb0, 0xe0, 0x65, 0xe1, 0xfc, 0x68, 0xdb, 0x21, 0x41, 0x18, 0xce, 0xb3,
0x3a, 0x0c, 0x4f, 0x77, 0xc2, 0xad, 0xcb, 0x1b, 0x74, 0x01, 0xa8, 0xcb, 0x73, 0xa8, 0x1f, 0x49, 0x16, 0x1d, 0x86, 0xa7, 0x3b, 0xe1, 0xd6, 0xe5, 0x0d, 0xba, 0x00, 0xd4, 0xe5, 0x39, 0xd0, 0x0f,
0xb3, 0x25, 0x9a, 0x68, 0x83, 0xbd, 0x2d, 0x10, 0xef, 0x80, 0x98, 0x4b, 0x19, 0xa6, 0xd4, 0xcb, 0xa5, 0xd9, 0x12, 0x4d, 0xb4, 0xce, 0xde, 0x16, 0x88, 0xb7, 0x4f, 0xcc, 0xc5, 0x0c, 0x53, 0xea,
0xc6, 0x83, 0x05, 0x39, 0xd7, 0x5d, 0xc8, 0x5d, 0x7a, 0x8f, 0xb9, 0x4c, 0x11, 0xea, 0x99, 0x74, 0x65, 0xe3, 0xc1, 0x82, 0x9c, 0xeb, 0x2e, 0xe4, 0x2e, 0xbf, 0xc7, 0x5c, 0xa6, 0x08, 0xf5, 0x4c,
0x74, 0x1b, 0x66, 0x46, 0xe6, 0xf9, 0x44, 0x1e, 0xa5, 0xd1, 0x7e, 0xf8, 0x96, 0x92, 0x16, 0x5f, 0x3a, 0xba, 0x0d, 0xa5, 0xb1, 0x79, 0x3e, 0x91, 0x47, 0x69, 0x76, 0x1e, 0xbe, 0xa5, 0xa4, 0xc5,
0x6f, 0x2b, 0x59, 0xf5, 0x2f, 0x53, 0xdc, 0xd0, 0x08, 0xad, 0x4e, 0x7e, 0x53, 0xcb, 0xb1, 0xdd, 0xd7, 0xdb, 0x4a, 0x56, 0xfd, 0xab, 0x14, 0x37, 0x34, 0x42, 0xab, 0x93, 0xdf, 0xd4, 0x72, 0x6c,
0x6d, 0xb8, 0xb6, 0x30, 0x00, 0xaf, 0x5e, 0x6c, 0x7f, 0x68, 0x38, 0xcd, 0xc8, 0x71, 0xc8, 0x88, 0x77, 0x1b, 0xae, 0x2d, 0x0c, 0xc0, 0xab, 0x17, 0xdb, 0x1f, 0x1a, 0x4e, 0x33, 0x72, 0x1c, 0x32,
0x56, 0xa0, 0xc0, 0x77, 0xb1, 0x46, 0x0f, 0x1c, 0x53, 0xeb, 0x0c, 0x06, 0x0e, 0xa2, 0x9c, 0xe8, 0xa2, 0x65, 0x28, 0xf0, 0x5d, 0xac, 0xd1, 0x03, 0xc7, 0xd4, 0x5a, 0xc2, 0xc0, 0x41, 0x94, 0x13,
0x3a, 0xcc, 0xb2, 0x6c, 0xa2, 0xbf, 0x47, 0x4c, 0x4e, 0x93, 0x66, 0x34, 0x33, 0x21, 0x94, 0x91, 0x5d, 0x87, 0x19, 0x96, 0x4d, 0xf4, 0x77, 0x89, 0xc9, 0x69, 0xd2, 0x8c, 0xa6, 0x14, 0x42, 0x19,
0x6d, 0x41, 0x51, 0x00, 0x34, 0x16, 0x30, 0x64, 0xd8, 0x80, 0x6e, 0x5e, 0x36, 0x20, 0xce, 0xc2, 0xd9, 0x26, 0x14, 0x05, 0x40, 0x63, 0x01, 0x43, 0x86, 0x0d, 0xe8, 0xe6, 0x65, 0x03, 0xe2, 0x2c,
0xe2, 0x88, 0xc2, 0x20, 0x6a, 0xa8, 0x3f, 0x01, 0x39, 0x39, 0x58, 0xb4, 0x04, 0xa9, 0x6e, 0xb5, 0x2c, 0x8e, 0x28, 0x0c, 0xa3, 0x86, 0xfa, 0x13, 0x90, 0x93, 0x83, 0x45, 0x8b, 0x90, 0xea, 0xd5,
0xad, 0x4c, 0x95, 0xe6, 0x8e, 0x4f, 0x56, 0x0b, 0x12, 0xdc, 0xad, 0xb6, 0x29, 0x66, 0xbb, 0xd6, 0x3a, 0xca, 0x54, 0x79, 0xf6, 0xe8, 0x78, 0xa5, 0x20, 0xc1, 0xbd, 0x5a, 0x87, 0x62, 0xb6, 0xea,
0x56, 0x12, 0xa3, 0x98, 0xed, 0x5a, 0x1b, 0x95, 0x20, 0xdd, 0xa9, 0x76, 0xdb, 0xd2, 0x3f, 0x93, 0x1d, 0x25, 0x31, 0x8e, 0xd9, 0xaa, 0x77, 0x50, 0x19, 0xd2, 0xdd, 0x5a, 0xaf, 0x23, 0xfd, 0x33,
0x28, 0x0a, 0x2b, 0xa5, 0xa9, 0x7f, 0xa6, 0xee, 0x42, 0x21, 0xd6, 0x3b, 0x7a, 0x19, 0xa6, 0x1b, 0x89, 0xa2, 0xb0, 0x72, 0x9a, 0xfa, 0x67, 0xea, 0x0e, 0x14, 0x62, 0xbd, 0xa3, 0x97, 0x61, 0xba,
0xcd, 0xfb, 0xb8, 0xde, 0xe9, 0x28, 0x53, 0x3c, 0x82, 0x88, 0x61, 0x1b, 0x4e, 0x8f, 0xae, 0x1d, 0xd9, 0xba, 0x8f, 0x1b, 0xdd, 0xae, 0x32, 0xc5, 0x23, 0x88, 0x18, 0xb6, 0xe9, 0xf4, 0xe9, 0xda,
0x7a, 0x11, 0xd2, 0x1b, 0x2d, 0x7a, 0xef, 0xf3, 0x10, 0x25, 0x46, 0xb1, 0xe1, 0xfa, 0x41, 0x69, 0xa1, 0x17, 0x21, 0xbd, 0xde, 0xa6, 0xf7, 0x3e, 0x0f, 0x51, 0x62, 0x14, 0xeb, 0xae, 0x1f, 0x94,
0x5e, 0x38, 0x7e, 0x71, 0xc1, 0xea, 0x6f, 0x24, 0x20, 0xcb, 0x0f, 0xda, 0xc4, 0x45, 0x2c, 0x47, 0xe7, 0x84, 0xe3, 0x17, 0x17, 0xac, 0xfe, 0x46, 0x02, 0xb2, 0xfc, 0xa0, 0x4d, 0x5c, 0xc4, 0x4a,
0x71, 0x13, 0x8f, 0x2c, 0x5f, 0x3d, 0x3f, 0x0a, 0x5c, 0x13, 0x41, 0x1b, 0xdf, 0x9a, 0x92, 0xaf, 0x14, 0x37, 0xf1, 0xc8, 0xf2, 0xd5, 0xf3, 0xa3, 0xc0, 0x55, 0x11, 0xb4, 0xf1, 0xad, 0x29, 0xf9,
0xf4, 0x2e, 0x14, 0xe3, 0x88, 0x67, 0xda, 0x98, 0x5f, 0x83, 0x02, 0xdd, 0xfb, 0x32, 0x1a, 0xbc, 0xca, 0xef, 0x42, 0x31, 0x8e, 0x78, 0xa6, 0x8d, 0xf9, 0x35, 0x28, 0xd0, 0xbd, 0x2f, 0xa3, 0xc1,
0x03, 0x59, 0x6e, 0x2c, 0xc2, 0x7b, 0xe8, 0xfc, 0x90, 0x54, 0x50, 0xa2, 0xbb, 0x30, 0xcd, 0xc3, 0x3b, 0x90, 0xe5, 0xc6, 0x22, 0xbc, 0x87, 0xce, 0x0f, 0x49, 0x05, 0x25, 0xba, 0x0b, 0xd3, 0x3c,
0x58, 0xf9, 0xe2, 0xb1, 0x7c, 0xf1, 0x09, 0xc3, 0x92, 0x5c, 0xfd, 0x00, 0xd2, 0x6d, 0x42, 0xbc, 0x8c, 0x95, 0x2f, 0x1e, 0x4b, 0x17, 0x9f, 0x30, 0x2c, 0xc9, 0xd5, 0x0f, 0x20, 0xdd, 0x21, 0xc4,
0x78, 0x5a, 0x39, 0x71, 0x6e, 0x5a, 0x59, 0xa6, 0x25, 0x93, 0xb1, 0xb4, 0x64, 0x17, 0x8a, 0x8f, 0x8b, 0xa7, 0x95, 0x13, 0xe7, 0xa6, 0x95, 0x65, 0x5a, 0x32, 0x19, 0x4b, 0x4b, 0xf6, 0xa0, 0xf8,
0x88, 0xd5, 0xdb, 0x0b, 0x88, 0xc9, 0x04, 0xbd, 0x0e, 0xe9, 0x01, 0x09, 0x07, 0xbf, 0x34, 0x71, 0x88, 0x58, 0xfd, 0xdd, 0x80, 0x98, 0x4c, 0xd0, 0xeb, 0x90, 0x1e, 0x92, 0x70, 0xf0, 0x8b, 0x13,
0xf3, 0x11, 0xe2, 0x61, 0x46, 0x45, 0x6d, 0xcc, 0x21, 0xe3, 0x16, 0x8f, 0x85, 0xa2, 0xa5, 0xfe, 0x37, 0x1f, 0x21, 0x1e, 0x66, 0x54, 0xd4, 0xc6, 0x1c, 0x30, 0x6e, 0xf1, 0x58, 0x28, 0x5a, 0xea,
0x4d, 0x12, 0x66, 0x1b, 0xbe, 0x3f, 0xd4, 0x1d, 0x43, 0x7a, 0x75, 0x5f, 0x1c, 0xf5, 0xea, 0x26, 0xdf, 0x26, 0x61, 0xa6, 0xe9, 0xfb, 0x23, 0xdd, 0x31, 0xa4, 0x57, 0xf7, 0xc5, 0x71, 0xaf, 0x6e,
0xbe, 0xaa, 0x8e, 0xb2, 0x8c, 0x66, 0x5b, 0xc5, 0xcd, 0x9a, 0x0c, 0x6f, 0x56, 0xf5, 0xdf, 0x12, 0xe2, 0xab, 0xea, 0x38, 0xcb, 0x78, 0xb6, 0x55, 0xdc, 0xac, 0xc9, 0xf0, 0x66, 0x55, 0xff, 0x2d,
0x32, 0xa5, 0x7a, 0x3d, 0x66, 0x0a, 0x78, 0x8c, 0x18, 0x97, 0x44, 0xb6, 0x9d, 0x7d, 0xc7, 0x3d, 0x21, 0x53, 0xaa, 0xd7, 0x63, 0xa6, 0x80, 0xc7, 0x88, 0x71, 0x49, 0x64, 0xcb, 0xd9, 0x73, 0xdc,
0x74, 0x68, 0x80, 0x8b, 0xeb, 0xcd, 0xfa, 0x23, 0x25, 0xc1, 0xb7, 0xe7, 0x08, 0x11, 0x26, 0x0e, 0x03, 0x87, 0x06, 0xb8, 0xb8, 0xd1, 0x6a, 0x3c, 0x52, 0x12, 0x7c, 0x7b, 0x8e, 0x11, 0x61, 0xe2,
0x39, 0xa4, 0x92, 0xda, 0xf5, 0x66, 0x8d, 0x7a, 0x61, 0xc9, 0x09, 0x92, 0xda, 0xc4, 0x31, 0x2d, 0x90, 0x03, 0x2a, 0xa9, 0xd3, 0x68, 0xd5, 0xa9, 0x17, 0x96, 0x9c, 0x20, 0xa9, 0x43, 0x1c, 0xd3,
0xa7, 0x87, 0x5e, 0x86, 0x6c, 0xa3, 0xd3, 0xd9, 0x66, 0x21, 0xe4, 0xf3, 0xc7, 0x27, 0xab, 0xf3, 0x72, 0xfa, 0xe8, 0x65, 0xc8, 0x36, 0xbb, 0xdd, 0x2d, 0x16, 0x42, 0x3e, 0x7f, 0x74, 0xbc, 0x32,
0x23, 0x54, 0xec, 0x91, 0xc0, 0xa4, 0x44, 0x34, 0x04, 0xa2, 0xfe, 0xd9, 0x04, 0x22, 0xea, 0x5b, 0x37, 0x46, 0xc5, 0x1e, 0x09, 0x4c, 0x4a, 0x44, 0x43, 0x20, 0xea, 0x9f, 0x4d, 0x20, 0xa2, 0xbe,
0x73, 0x22, 0xdc, 0xea, 0x96, 0xbb, 0x75, 0x25, 0x33, 0x81, 0x08, 0xbb, 0xf4, 0xaf, 0x38, 0x6e, 0x35, 0x27, 0xc2, 0xed, 0x5e, 0xa5, 0xd7, 0x50, 0x32, 0x13, 0x88, 0xb0, 0x4b, 0xff, 0x8a, 0xe3,
0xff, 0x90, 0x04, 0xa5, 0x6c, 0x18, 0x64, 0x10, 0x50, 0xbc, 0x88, 0x3a, 0xbb, 0x90, 0x1b, 0xd0, 0xf6, 0x8f, 0x49, 0x50, 0x2a, 0x86, 0x41, 0x86, 0x01, 0xc5, 0x8b, 0xa8, 0xb3, 0x07, 0xb9, 0x21,
0x2f, 0x8b, 0x48, 0x0f, 0xea, 0xee, 0xc4, 0xba, 0x80, 0x31, 0xbe, 0x35, 0xec, 0xda, 0xa4, 0x6c, 0xfd, 0xb2, 0x88, 0xf4, 0xa0, 0xee, 0x4e, 0xac, 0x0b, 0x38, 0xc3, 0xb7, 0x8a, 0x5d, 0x9b, 0x54,
0xf6, 0x2d, 0xdf, 0xb7, 0x5c, 0x87, 0xc3, 0x70, 0x28, 0xa9, 0xf4, 0x1f, 0x09, 0x98, 0x9f, 0x40, 0xcc, 0x81, 0xe5, 0xfb, 0x96, 0xeb, 0x70, 0x18, 0x0e, 0x25, 0x95, 0xff, 0x23, 0x01, 0x73, 0x13,
0x81, 0x6e, 0x43, 0xda, 0x73, 0x6d, 0xb9, 0x86, 0xd7, 0xce, 0xcb, 0x96, 0x53, 0x56, 0xcc, 0x28, 0x28, 0xd0, 0x6d, 0x48, 0x7b, 0xae, 0x2d, 0xd7, 0xf0, 0xda, 0x79, 0xd9, 0x72, 0xca, 0x8a, 0x19,
0xd1, 0x32, 0x80, 0x3e, 0x0c, 0x5c, 0x9d, 0xf5, 0xcf, 0x73, 0x8c, 0x38, 0x06, 0x41, 0x8f, 0x20, 0x25, 0x5a, 0x02, 0xd0, 0x47, 0x81, 0xab, 0xb3, 0xfe, 0x79, 0x8e, 0x11, 0xc7, 0x20, 0xe8, 0x11,
0xeb, 0x13, 0xc3, 0x23, 0xd2, 0xcf, 0xfe, 0xe0, 0x47, 0x1d, 0xfd, 0x5a, 0x87, 0x89, 0xc1, 0x42, 0x64, 0x7d, 0x62, 0x78, 0x44, 0xfa, 0xd9, 0x1f, 0xfc, 0xa8, 0xa3, 0x5f, 0xed, 0x32, 0x31, 0x58,
0x5c, 0x69, 0x0d, 0xb2, 0x1c, 0x42, 0xb7, 0xbd, 0xa9, 0x07, 0xba, 0x78, 0x21, 0x62, 0xdf, 0x74, 0x88, 0x2b, 0xaf, 0x42, 0x96, 0x43, 0xe8, 0xb6, 0x37, 0xf5, 0x40, 0x17, 0x2f, 0x44, 0xec, 0x9b,
0x37, 0xe9, 0x76, 0x4f, 0xee, 0x26, 0xdd, 0xee, 0xa9, 0x7f, 0x91, 0x04, 0xa8, 0x3f, 0x0e, 0x88, 0xee, 0x26, 0xdd, 0xee, 0xcb, 0xdd, 0xa4, 0xdb, 0x7d, 0xf5, 0x2f, 0x93, 0x00, 0x8d, 0xc7, 0x01,
0xe7, 0xe8, 0x76, 0xb5, 0x8c, 0xea, 0xb1, 0x9b, 0x81, 0xcf, 0xf6, 0xb5, 0x89, 0xaf, 0x6b, 0x21, 0xf1, 0x1c, 0xdd, 0xae, 0x55, 0x50, 0x23, 0x76, 0x33, 0xf0, 0xd9, 0xbe, 0x36, 0xf1, 0x75, 0x2d,
0xc7, 0x5a, 0xb5, 0x3c, 0xe1, 0x6e, 0xb8, 0x0a, 0xa9, 0xa1, 0x27, 0x4a, 0x3d, 0xb8, 0x8f, 0xbc, 0xe4, 0x58, 0xad, 0x55, 0x26, 0xdc, 0x0d, 0x57, 0x21, 0x35, 0xf2, 0x44, 0xa9, 0x07, 0xf7, 0x91,
0x8d, 0x37, 0x31, 0x85, 0xa1, 0x7a, 0x3c, 0xdd, 0x73, 0x6e, 0x41, 0x47, 0xac, 0x83, 0x89, 0xa6, 0xb7, 0xf0, 0x06, 0xa6, 0x30, 0xd4, 0x88, 0xa7, 0x7b, 0xce, 0x2d, 0xe8, 0x88, 0x75, 0x30, 0xd1,
0x8b, 0x9e, 0x7c, 0x43, 0xd7, 0x0c, 0x22, 0x6e, 0x95, 0x22, 0x3f, 0xf9, 0xd5, 0x72, 0x95, 0x78, 0x74, 0xd1, 0x93, 0x6f, 0xe8, 0x9a, 0x41, 0xc4, 0xad, 0x52, 0xe4, 0x27, 0xbf, 0x56, 0xa9, 0x11,
0x01, 0xce, 0x1a, 0x3a, 0xfd, 0xff, 0xa9, 0xec, 0xdb, 0xeb, 0x00, 0xd1, 0xd4, 0xd0, 0x32, 0x64, 0x2f, 0xc0, 0x59, 0x43, 0xa7, 0xff, 0x3f, 0x95, 0x7d, 0x7b, 0x1d, 0x20, 0x9a, 0x1a, 0x5a, 0x82,
0xaa, 0xeb, 0x9d, 0xce, 0xa6, 0x32, 0xc5, 0x0d, 0x78, 0x84, 0x62, 0x60, 0xf5, 0x4f, 0x92, 0x90, 0x4c, 0x6d, 0xad, 0xdb, 0xdd, 0x50, 0xa6, 0xb8, 0x01, 0x8f, 0x50, 0x0c, 0xac, 0xfe, 0x69, 0x12,
0xab, 0x96, 0xc5, 0x95, 0x5b, 0x05, 0x85, 0x59, 0x25, 0xf6, 0xae, 0x46, 0x1e, 0x0f, 0x2c, 0xef, 0x72, 0xb5, 0x8a, 0xb8, 0x72, 0x6b, 0xa0, 0x30, 0xab, 0xc4, 0xde, 0xd5, 0xc8, 0xe3, 0xa1, 0xe5,
0x48, 0x18, 0x96, 0x0b, 0x02, 0xde, 0x59, 0xca, 0x42, 0x47, 0x5d, 0x67, 0x0c, 0x08, 0x43, 0x91, 0x1d, 0x0a, 0xc3, 0x72, 0x41, 0xc0, 0x3b, 0x43, 0x59, 0xe8, 0xa8, 0x1b, 0x8c, 0x01, 0x61, 0x28,
0x08, 0x25, 0x68, 0x86, 0x2e, 0x6d, 0xfc, 0xf2, 0xc5, 0xca, 0xe2, 0xa1, 0x4b, 0xd4, 0xf6, 0x71, 0x12, 0xa1, 0x04, 0xcd, 0xd0, 0xa5, 0x8d, 0x5f, 0xba, 0x58, 0x59, 0x3c, 0x74, 0x89, 0xda, 0x3e,
0x41, 0x0a, 0xa9, 0xea, 0x3e, 0x7a, 0x07, 0xe6, 0x7c, 0xab, 0xe7, 0x58, 0x4e, 0x4f, 0x93, 0xca, 0x2e, 0x48, 0x21, 0x35, 0xdd, 0x47, 0xef, 0xc0, 0xac, 0x6f, 0xf5, 0x1d, 0xcb, 0xe9, 0x6b, 0x52,
0x63, 0x8f, 0x7c, 0x95, 0x2b, 0x67, 0xa7, 0x2b, 0x33, 0x1d, 0x8e, 0x12, 0x3a, 0x9c, 0x11, 0x94, 0x79, 0xec, 0x91, 0xaf, 0x7a, 0xe5, 0xf4, 0x64, 0xb9, 0xd4, 0xe5, 0x28, 0xa1, 0xc3, 0x92, 0xa0,
0x55, 0xa6, 0x4a, 0xf4, 0x36, 0xcc, 0xc6, 0x58, 0xa9, 0x16, 0xb9, 0xda, 0x59, 0xe2, 0x3c, 0xe4, 0xac, 0x31, 0x55, 0xa2, 0xb7, 0x61, 0x26, 0xc6, 0x4a, 0xb5, 0xc8, 0xd5, 0xce, 0x12, 0xe7, 0x21,
0x7c, 0x40, 0x8e, 0x70, 0x31, 0x64, 0x7c, 0x40, 0x58, 0x6e, 0x86, 0xa5, 0x99, 0x35, 0x8f, 0x9d, 0xe7, 0x03, 0x72, 0x88, 0x8b, 0x21, 0xe3, 0x03, 0xc2, 0x72, 0x33, 0x2c, 0xcd, 0xac, 0x79, 0xec,
0x69, 0x76, 0xbb, 0xa7, 0x71, 0x81, 0xc1, 0xf8, 0x31, 0x57, 0x1f, 0xc2, 0x7c, 0xcb, 0x33, 0xf6, 0x4c, 0xb3, 0xdb, 0x3d, 0x8d, 0x0b, 0x0c, 0xc6, 0x8f, 0xb9, 0xfa, 0x10, 0xe6, 0xda, 0x9e, 0xb1,
0x88, 0x1f, 0x70, 0x55, 0x08, 0x2d, 0x7e, 0x00, 0xd7, 0x02, 0xdd, 0xdf, 0xd7, 0xf6, 0x2c, 0x3f, 0x4b, 0xfc, 0x80, 0xab, 0x42, 0x68, 0xf1, 0x03, 0xb8, 0x16, 0xe8, 0xfe, 0x9e, 0xb6, 0x6b, 0xf9,
0x70, 0xbd, 0x23, 0xcd, 0x23, 0x01, 0x71, 0x28, 0x5e, 0x63, 0x65, 0x10, 0x22, 0xe3, 0x78, 0x95, 0x81, 0xeb, 0x1d, 0x6a, 0x1e, 0x09, 0x88, 0x43, 0xf1, 0x1a, 0x2b, 0x83, 0x10, 0x19, 0xc7, 0xab,
0xd2, 0x6c, 0x70, 0x12, 0x2c, 0x29, 0x36, 0x29, 0x81, 0xda, 0x80, 0x22, 0x0d, 0x61, 0x44, 0x52, 0x94, 0x66, 0x9d, 0x93, 0x60, 0x49, 0xb1, 0x41, 0x09, 0xd4, 0x26, 0x14, 0x69, 0x08, 0x23, 0x92,
0x8d, 0xce, 0x1e, 0x6c, 0xb7, 0xa7, 0x3d, 0xf5, 0x35, 0x95, 0xb7, 0xdd, 0x1e, 0xff, 0x54, 0xbf, 0x6a, 0x74, 0xf6, 0x60, 0xbb, 0x7d, 0xed, 0xa9, 0xaf, 0xa9, 0xbc, 0xed, 0xf6, 0xf9, 0xa7, 0xfa,
0x0c, 0x4a, 0xcd, 0xf2, 0x07, 0x7a, 0x60, 0xec, 0xc9, 0x54, 0x2a, 0xaa, 0x81, 0xb2, 0x47, 0x74, 0x65, 0x50, 0xea, 0x96, 0x3f, 0xd4, 0x03, 0x63, 0x57, 0xa6, 0x52, 0x51, 0x1d, 0x94, 0x5d, 0xa2,
0x2f, 0xd8, 0x21, 0x7a, 0xa0, 0x0d, 0x88, 0x67, 0xb9, 0xe6, 0xe5, 0xab, 0x3c, 0x17, 0xb2, 0xb4, 0x7b, 0xc1, 0x36, 0xd1, 0x03, 0x6d, 0x48, 0x3c, 0xcb, 0x35, 0x2f, 0x5f, 0xe5, 0xd9, 0x90, 0xa5,
0x19, 0x87, 0xfa, 0x5f, 0x09, 0x00, 0xac, 0xef, 0x4a, 0x6f, 0xed, 0xb3, 0x70, 0xc5, 0x77, 0xf4, 0xc3, 0x38, 0xd4, 0xff, 0x4a, 0x00, 0x60, 0x7d, 0x47, 0x7a, 0x6b, 0x9f, 0x85, 0x2b, 0xbe, 0xa3,
0x81, 0xbf, 0xe7, 0x06, 0x9a, 0xe5, 0x04, 0xc4, 0x3b, 0xd0, 0x6d, 0x91, 0xdc, 0x51, 0x24, 0xa2, 0x0f, 0xfd, 0x5d, 0x37, 0xd0, 0x2c, 0x27, 0x20, 0xde, 0xbe, 0x6e, 0x8b, 0xe4, 0x8e, 0x22, 0x11,
0x21, 0xe0, 0xe8, 0x75, 0x40, 0xfb, 0x84, 0x0c, 0x34, 0xd7, 0x36, 0x35, 0x89, 0xe4, 0xe5, 0x11, 0x4d, 0x01, 0x47, 0xaf, 0x03, 0xda, 0x23, 0x64, 0xa8, 0xb9, 0xb6, 0xa9, 0x49, 0x24, 0x2f, 0x8f,
0x69, 0xac, 0x50, 0x4c, 0xcb, 0x36, 0x3b, 0x12, 0x8e, 0x2a, 0xb0, 0x4c, 0xa7, 0x4f, 0x9c, 0xc0, 0x48, 0x63, 0x85, 0x62, 0xda, 0xb6, 0xd9, 0x95, 0x70, 0x54, 0x85, 0x25, 0x3a, 0x7d, 0xe2, 0x04,
0xb3, 0x88, 0xaf, 0xed, 0xba, 0x9e, 0xe6, 0xdb, 0xee, 0xa1, 0xb6, 0xeb, 0xda, 0xb6, 0x7b, 0x48, 0x9e, 0x45, 0x7c, 0x6d, 0xc7, 0xf5, 0x34, 0xdf, 0x76, 0x0f, 0xb4, 0x1d, 0xd7, 0xb6, 0xdd, 0x03,
0x3c, 0x99, 0x37, 0x2b, 0xd9, 0x6e, 0xaf, 0xce, 0x89, 0xd6, 0x5d, 0xaf, 0x63, 0xbb, 0x87, 0xeb, 0xe2, 0xc9, 0xbc, 0x59, 0xd9, 0x76, 0xfb, 0x0d, 0x4e, 0xb4, 0xe6, 0x7a, 0x5d, 0xdb, 0x3d, 0x58,
0x92, 0x82, 0xba, 0x74, 0xd1, 0x9c, 0x03, 0xcb, 0xd8, 0x97, 0x2e, 0x5d, 0x08, 0xed, 0x5a, 0xc6, 0x93, 0x14, 0xd4, 0xa5, 0x8b, 0xe6, 0x1c, 0x58, 0xc6, 0x9e, 0x74, 0xe9, 0x42, 0x68, 0xcf, 0x32,
0x3e, 0x7a, 0x19, 0x66, 0x88, 0x4d, 0x58, 0xfa, 0x84, 0x53, 0x65, 0x18, 0x55, 0x51, 0x02, 0x29, 0xf6, 0xd0, 0xcb, 0x50, 0x22, 0x36, 0x61, 0xe9, 0x13, 0x4e, 0x95, 0x61, 0x54, 0x45, 0x09, 0xa4,
0x91, 0x7a, 0x0f, 0x94, 0xba, 0x63, 0x78, 0x47, 0x83, 0xd8, 0x9a, 0xbf, 0x0e, 0x88, 0x1a, 0x49, 0x44, 0xea, 0x3d, 0x50, 0x1a, 0x8e, 0xe1, 0x1d, 0x0e, 0x63, 0x6b, 0xfe, 0x3a, 0x20, 0x6a, 0x24,
0xcd, 0x76, 0x8d, 0x7d, 0xad, 0xaf, 0x3b, 0x7a, 0x8f, 0x8e, 0x8b, 0x3f, 0xbc, 0x2a, 0x14, 0xb3, 0x35, 0xdb, 0x35, 0xf6, 0xb4, 0x81, 0xee, 0xe8, 0x7d, 0x3a, 0x2e, 0xfe, 0xf0, 0xaa, 0x50, 0xcc,
0xe9, 0x1a, 0xfb, 0x5b, 0x02, 0xae, 0xbe, 0x03, 0xd0, 0x19, 0x78, 0x44, 0x37, 0x5b, 0xd4, 0x9b, 0x86, 0x6b, 0xec, 0x6d, 0x0a, 0xb8, 0xfa, 0x0e, 0x40, 0x77, 0xe8, 0x11, 0xdd, 0x6c, 0x53, 0x6f,
0xa0, 0xaa, 0x63, 0x2d, 0xcd, 0x14, 0xaf, 0xfe, 0xae, 0x27, 0x8e, 0xba, 0xc2, 0x11, 0xb5, 0x10, 0x82, 0xaa, 0x8e, 0xb5, 0x34, 0x53, 0xbc, 0xfa, 0xbb, 0x9e, 0x38, 0xea, 0x0a, 0x47, 0xd4, 0x43,
0xae, 0xfe, 0x7f, 0x98, 0x6f, 0xdb, 0xba, 0xc1, 0xea, 0x70, 0xda, 0xe1, 0x4b, 0x22, 0xba, 0x0b, 0xb8, 0xfa, 0xff, 0x61, 0xae, 0x63, 0xeb, 0x06, 0xab, 0xc3, 0xe9, 0x84, 0x2f, 0x89, 0xe8, 0x2e,
0x59, 0x4e, 0x2a, 0x56, 0x72, 0xe2, 0x71, 0x8b, 0xfa, 0xdc, 0x98, 0xc2, 0x82, 0xbe, 0x52, 0x04, 0x64, 0x39, 0xa9, 0x58, 0xc9, 0x89, 0xc7, 0x2d, 0xea, 0x73, 0x7d, 0x0a, 0x0b, 0xfa, 0x6a, 0x11,
0x88, 0xe4, 0xa8, 0x7f, 0x9f, 0x80, 0x7c, 0x28, 0x1f, 0xad, 0xf2, 0x77, 0xc0, 0xc0, 0xd3, 0x2d, 0x20, 0x92, 0xa3, 0xfe, 0x43, 0x02, 0xf2, 0xa1, 0x7c, 0xb4, 0xc2, 0xdf, 0x01, 0x03, 0x4f, 0xb7,
0x47, 0x44, 0xfc, 0x79, 0x1c, 0x07, 0xa1, 0x06, 0x14, 0x06, 0x21, 0xf7, 0x85, 0xfe, 0xdc, 0x84, 0x1c, 0x11, 0xf1, 0xe7, 0x71, 0x1c, 0x84, 0x9a, 0x50, 0x18, 0x86, 0xdc, 0x17, 0xfa, 0x73, 0x13,
0x51, 0xe3, 0x38, 0x2f, 0x7a, 0x17, 0xf2, 0xb2, 0xcc, 0x42, 0x5a, 0xd8, 0x8b, 0xab, 0x32, 0x22, 0x46, 0x8d, 0xe3, 0xbc, 0xe8, 0x5d, 0xc8, 0xcb, 0x32, 0x0b, 0x69, 0x61, 0x2f, 0xae, 0xca, 0x88,
0x72, 0x99, 0x48, 0xf5, 0xc8, 0xc0, 0xb6, 0xa8, 0xcd, 0x49, 0x87, 0x89, 0x54, 0x2c, 0x40, 0xea, 0xc8, 0x65, 0x22, 0xd5, 0x23, 0x43, 0xdb, 0xa2, 0x36, 0x27, 0x1d, 0x26, 0x52, 0xb1, 0x00, 0xa9,
0x17, 0x01, 0xbe, 0xe4, 0x5a, 0x4e, 0xd7, 0xdd, 0x27, 0x0e, 0x7b, 0x1c, 0xa7, 0x21, 0x25, 0x91, 0x5f, 0x04, 0xf8, 0x92, 0x6b, 0x39, 0x3d, 0x77, 0x8f, 0x38, 0xec, 0x71, 0x9c, 0x86, 0x94, 0x44,
0x8a, 0x16, 0x2d, 0x96, 0x29, 0xe0, 0xab, 0x14, 0xbe, 0x11, 0xf3, 0xa6, 0xfa, 0xe7, 0x49, 0xc8, 0x2a, 0x5a, 0xb4, 0x58, 0xa6, 0x80, 0xaf, 0x52, 0xf8, 0x46, 0xcc, 0x9b, 0xea, 0x5f, 0x24, 0x21,
0x62, 0xd7, 0x0d, 0xaa, 0x65, 0xb4, 0x0a, 0x59, 0x61, 0x4a, 0xd8, 0x15, 0x55, 0xc9, 0x9f, 0x9d, 0x8b, 0x5d, 0x37, 0xa8, 0x55, 0xd0, 0x0a, 0x64, 0x85, 0x29, 0x61, 0x57, 0x54, 0x35, 0x7f, 0x7a,
0xae, 0x64, 0xb8, 0x0d, 0xc9, 0x18, 0xcc, 0x78, 0xc4, 0x8c, 0x7c, 0xf2, 0x3c, 0x23, 0x8f, 0x6e, 0xb2, 0x9c, 0xe1, 0x36, 0x24, 0x63, 0x30, 0xe3, 0x11, 0x33, 0xf2, 0xc9, 0xf3, 0x8c, 0x3c, 0xba,
0x43, 0x51, 0x10, 0x69, 0x7b, 0xba, 0xbf, 0xc7, 0xe3, 0xbb, 0xca, 0xec, 0xd9, 0xe9, 0x0a, 0x70, 0x0d, 0x45, 0x41, 0xa4, 0xed, 0xea, 0xfe, 0x2e, 0x8f, 0xef, 0xaa, 0x33, 0xa7, 0x27, 0xcb, 0xc0,
0xca, 0x0d, 0xdd, 0xdf, 0xc3, 0xc0, 0xa9, 0xe9, 0x37, 0xaa, 0x43, 0xe1, 0x23, 0xd7, 0x72, 0xb4, 0x29, 0xd7, 0x75, 0x7f, 0x17, 0x03, 0xa7, 0xa6, 0xdf, 0xa8, 0x01, 0x85, 0x8f, 0x5c, 0xcb, 0xd1,
0x80, 0x4d, 0x42, 0xe4, 0x22, 0x27, 0x2e, 0x75, 0x34, 0x55, 0x51, 0x66, 0x03, 0x1f, 0x45, 0x93, 0x02, 0x36, 0x09, 0x91, 0x8b, 0x9c, 0xb8, 0xd4, 0xd1, 0x54, 0x45, 0x99, 0x0d, 0x7c, 0x14, 0x4d,
0xaf, 0xc3, 0x8c, 0xe7, 0xba, 0x01, 0xb7, 0x6c, 0x96, 0xeb, 0x88, 0x34, 0xc7, 0xea, 0xc4, 0xec, 0xbe, 0x01, 0x25, 0xcf, 0x75, 0x03, 0x6e, 0xd9, 0x2c, 0xd7, 0x11, 0x69, 0x8e, 0x95, 0x89, 0xd9,
0xb7, 0xeb, 0x06, 0x58, 0xd0, 0xe1, 0xa2, 0x17, 0x6b, 0xa1, 0xdb, 0xb0, 0x60, 0xeb, 0x7e, 0xa0, 0x6f, 0xd7, 0x0d, 0xb0, 0xa0, 0xc3, 0x45, 0x2f, 0xd6, 0x42, 0xb7, 0x61, 0xde, 0xd6, 0xfd, 0x40,
0x31, 0x93, 0x68, 0x46, 0xd2, 0xb2, 0x4c, 0xf9, 0x88, 0xe2, 0xd8, 0x03, 0x9e, 0x29, 0x39, 0xd4, 0x63, 0x26, 0xd1, 0x8c, 0xa4, 0x65, 0x99, 0xf2, 0x11, 0xc5, 0xb1, 0x07, 0x3c, 0x53, 0x72, 0xa8,
0xbf, 0x4b, 0x40, 0x81, 0x4e, 0xc6, 0xda, 0xb5, 0x0c, 0xea, 0x07, 0x3e, 0xbb, 0x7b, 0x72, 0x15, 0x7f, 0x9f, 0x80, 0x02, 0x9d, 0x8c, 0xb5, 0x63, 0x19, 0xd4, 0x0f, 0x7c, 0x76, 0xf7, 0xe4, 0x2a,
0x52, 0x86, 0xef, 0x09, 0xa5, 0xb2, 0xfb, 0xb9, 0xda, 0xc1, 0x98, 0xc2, 0xd0, 0x3d, 0xc8, 0x8a, 0xa4, 0x0c, 0xdf, 0x13, 0x4a, 0x65, 0xf7, 0x73, 0xad, 0x8b, 0x31, 0x85, 0xa1, 0x7b, 0x90, 0x15,
0x74, 0x0b, 0xf7, 0x4c, 0xd4, 0xcb, 0x3d, 0x56, 0xa1, 0x1b, 0xc1, 0xc7, 0xb6, 0x7b, 0x34, 0x3a, 0xe9, 0x16, 0xee, 0x99, 0xa8, 0x97, 0x7b, 0xac, 0x42, 0x37, 0x82, 0x8f, 0x6d, 0xf7, 0x68, 0x74,
0x7e, 0x4f, 0xe0, 0x38, 0x08, 0x2d, 0x42, 0xd2, 0xe0, 0xea, 0x12, 0x75, 0x5c, 0xd5, 0x26, 0x4e, 0xfc, 0x9e, 0xc0, 0x71, 0x10, 0x5a, 0x80, 0xa4, 0xc1, 0xd5, 0x25, 0xea, 0xb8, 0x6a, 0x2d, 0x9c,
0x1a, 0x8e, 0xfa, 0x9d, 0x04, 0xcc, 0x44, 0x36, 0x81, 0xee, 0x80, 0x6b, 0x90, 0xf7, 0x87, 0x3b, 0x34, 0x1c, 0xf5, 0x3b, 0x09, 0x28, 0x45, 0x36, 0x81, 0xee, 0x80, 0x6b, 0x90, 0xf7, 0x47, 0xdb,
0xfe, 0x91, 0x1f, 0x90, 0xbe, 0x7c, 0xf8, 0x0f, 0x01, 0xa8, 0x01, 0x79, 0xdd, 0xee, 0xb9, 0x9e, 0xfe, 0xa1, 0x1f, 0x90, 0x81, 0x7c, 0xf8, 0x0f, 0x01, 0xa8, 0x09, 0x79, 0xdd, 0xee, 0xbb, 0x9e,
0x15, 0xec, 0xf5, 0x45, 0x20, 0x3b, 0xd9, 0x9b, 0x88, 0xcb, 0x5c, 0x2b, 0x4b, 0x16, 0x1c, 0x71, 0x15, 0xec, 0x0e, 0x44, 0x20, 0x3b, 0xd9, 0x9b, 0x88, 0xcb, 0x5c, 0xad, 0x48, 0x16, 0x1c, 0x71,
0x4b, 0xd7, 0x80, 0xd7, 0xbc, 0x30, 0xd7, 0xe0, 0x25, 0x28, 0xda, 0x7a, 0x9f, 0xe5, 0x9f, 0x02, 0x4b, 0xd7, 0x80, 0xd7, 0xbc, 0x30, 0xd7, 0xe0, 0x25, 0x28, 0xda, 0xfa, 0x80, 0xe5, 0x9f, 0x02,
0xab, 0x4f, 0xe4, 0x61, 0x10, 0xb0, 0xae, 0xd5, 0x27, 0xaa, 0x0a, 0xf9, 0x50, 0x18, 0x9a, 0x83, 0x6b, 0x40, 0xe4, 0x61, 0x10, 0xb0, 0x9e, 0x35, 0x20, 0xaa, 0x0a, 0xf9, 0x50, 0x18, 0x9a, 0x85,
0x42, 0xb9, 0xde, 0xd1, 0xde, 0xb8, 0x73, 0x57, 0xbb, 0x5f, 0xdd, 0x52, 0xa6, 0x84, 0xfb, 0xfa, 0x42, 0xa5, 0xd1, 0xd5, 0xde, 0xb8, 0x73, 0x57, 0xbb, 0x5f, 0xdb, 0x54, 0xa6, 0x84, 0xfb, 0xfa,
0x47, 0x09, 0x98, 0x11, 0x16, 0x4b, 0x84, 0x04, 0x2f, 0xc3, 0xb4, 0xa7, 0xef, 0x06, 0x32, 0x68, 0xc7, 0x09, 0x28, 0x09, 0x8b, 0x25, 0x42, 0x82, 0x97, 0x61, 0xda, 0xd3, 0x77, 0x02, 0x19, 0xb4,
0x49, 0xf3, 0x5d, 0x4d, 0x2f, 0x01, 0x1a, 0xb4, 0x50, 0xd4, 0xe4, 0xa0, 0x25, 0x56, 0x8a, 0x92, 0xa4, 0xf9, 0xae, 0xa6, 0x97, 0x00, 0x0d, 0x5a, 0x28, 0x6a, 0x72, 0xd0, 0x12, 0x2b, 0x45, 0x49,
0xba, 0xb0, 0x14, 0x25, 0xfd, 0x63, 0x29, 0x45, 0x51, 0x7f, 0x16, 0x60, 0xdd, 0xb2, 0x49, 0x97, 0x5d, 0x58, 0x8a, 0x92, 0xfe, 0xb1, 0x94, 0xa2, 0xa8, 0x3f, 0x0b, 0xb0, 0x66, 0xd9, 0xa4, 0xc7,
0xa7, 0xaa, 0x26, 0x85, 0xa0, 0xd4, 0xcd, 0x0b, 0x2b, 0x7a, 0xb8, 0x9b, 0xd7, 0xa8, 0x61, 0x0a, 0x53, 0x55, 0x93, 0x42, 0x50, 0xea, 0xe6, 0x85, 0x15, 0x3d, 0xdc, 0xcd, 0x6b, 0xd6, 0x31, 0x85,
0xa3, 0xa8, 0x9e, 0x65, 0x8a, 0xc3, 0xc8, 0x50, 0xf7, 0x29, 0xaa, 0x67, 0x99, 0xe1, 0xcb, 0x60, 0x51, 0x54, 0xdf, 0x32, 0xc5, 0x61, 0x64, 0xa8, 0xfb, 0x14, 0xd5, 0xb7, 0xcc, 0xf0, 0x65, 0x30,
0xfa, 0x92, 0x97, 0x41, 0x75, 0x0e, 0x66, 0x30, 0xcf, 0xb1, 0xf1, 0x31, 0xa8, 0x27, 0x09, 0x98, 0x7d, 0xc9, 0xcb, 0xa0, 0x3a, 0x0b, 0x25, 0xcc, 0x73, 0x6c, 0x7c, 0x0c, 0xea, 0x71, 0x02, 0x66,
0x13, 0xfe, 0x6e, 0x68, 0xb2, 0x5f, 0x83, 0x3c, 0x77, 0x7d, 0xa3, 0x20, 0x90, 0xd5, 0x63, 0x70, 0x85, 0xbf, 0x1b, 0x9a, 0xec, 0xd7, 0x20, 0xcf, 0x5d, 0xdf, 0x28, 0x08, 0x64, 0xf5, 0x18, 0x9c,
0xba, 0x46, 0x0d, 0xe7, 0x38, 0xba, 0x61, 0xa2, 0x15, 0x28, 0x08, 0xd2, 0x58, 0x11, 0x20, 0x70, 0xae, 0x59, 0xc7, 0x39, 0x8e, 0x6e, 0x9a, 0x68, 0x19, 0x0a, 0x82, 0x34, 0x56, 0x04, 0x08, 0x1c,
0x10, 0xab, 0x52, 0x7a, 0x0b, 0xd2, 0xbb, 0x96, 0x4d, 0xc4, 0xce, 0x9f, 0x68, 0x11, 0x22, 0x8d, 0xc4, 0xaa, 0x94, 0xde, 0x82, 0xf4, 0x8e, 0x65, 0x13, 0xb1, 0xf3, 0x27, 0x5a, 0x84, 0x48, 0x23,
0x6c, 0x4c, 0x61, 0x46, 0x5d, 0xc9, 0xc9, 0xe4, 0x9e, 0xfa, 0x8f, 0x09, 0x96, 0x62, 0xa6, 0xa1, 0xeb, 0x53, 0x98, 0x51, 0x57, 0x73, 0x32, 0xb9, 0xa7, 0xfe, 0x53, 0x82, 0xa5, 0x98, 0x69, 0xa8,
0x6a, 0x7c, 0x7c, 0x3c, 0x6a, 0x1d, 0x1b, 0x1f, 0xa7, 0xa3, 0xe3, 0xe3, 0x68, 0x3e, 0x3e, 0x41, 0x1a, 0x1f, 0x1f, 0x8f, 0x5a, 0xcf, 0x8c, 0x8f, 0xd3, 0xd1, 0xf1, 0x71, 0x34, 0x1f, 0x9f, 0x20,
0x1a, 0x1f, 0x1f, 0x07, 0xfd, 0xe8, 0xe3, 0x43, 0xef, 0xc3, 0xb4, 0x48, 0x55, 0x0a, 0x53, 0xf7, 0x8d, 0x8f, 0x8f, 0x83, 0x7e, 0xf4, 0xf1, 0xa1, 0xf7, 0x61, 0x5a, 0xa4, 0x2a, 0x85, 0xa9, 0x7b,
0xd2, 0xc4, 0x9d, 0x11, 0xd7, 0xf4, 0xc6, 0x14, 0x96, 0x3c, 0xb1, 0xe9, 0x6d, 0xc2, 0x62, 0xc5, 0x69, 0xe2, 0xce, 0x88, 0x6b, 0x7a, 0x7d, 0x0a, 0x4b, 0x9e, 0xd8, 0xf4, 0x36, 0x60, 0xa1, 0x6a,
0xd6, 0x8d, 0x7d, 0xdb, 0xf2, 0x03, 0x62, 0xc6, 0x2d, 0xd0, 0x1d, 0xc8, 0x8e, 0xf8, 0xb9, 0x17, 0xeb, 0xc6, 0x9e, 0x6d, 0xf9, 0x01, 0x31, 0xe3, 0x16, 0xe8, 0x0e, 0x64, 0xc7, 0xfc, 0xdc, 0x8b,
0x25, 0x51, 0x05, 0xa5, 0xfa, 0x2f, 0x09, 0x28, 0x6e, 0x10, 0xdd, 0x0e, 0xf6, 0xa2, 0x4c, 0x55, 0x92, 0xa8, 0x82, 0x52, 0xfd, 0xfd, 0x24, 0x14, 0xd7, 0x89, 0x6e, 0x07, 0xbb, 0x51, 0xa6, 0x2a,
0x40, 0xfc, 0x40, 0xdc, 0x8f, 0xec, 0x1b, 0x7d, 0x1e, 0x72, 0xa1, 0x1b, 0x74, 0xe9, 0x73, 0x60, 0x20, 0x7e, 0x20, 0xee, 0x47, 0xf6, 0x8d, 0x3e, 0x0f, 0xb9, 0xd0, 0x0d, 0xba, 0xf4, 0x39, 0x30,
0x48, 0x8a, 0xde, 0x84, 0x69, 0x3a, 0x76, 0x77, 0x28, 0xe3, 0xab, 0x8b, 0x5e, 0x9a, 0x04, 0x25, 0x24, 0x45, 0x6f, 0xc2, 0x34, 0x1d, 0xbb, 0x3b, 0x92, 0xf1, 0xd5, 0x45, 0x2f, 0x4d, 0x82, 0x92,
0xbd, 0xb4, 0x3c, 0xc2, 0xfc, 0x1e, 0xa6, 0xa7, 0x0c, 0x96, 0x4d, 0xf4, 0x05, 0x28, 0xb2, 0x87, 0x5e, 0x5a, 0x1e, 0x61, 0x7e, 0x0f, 0xd3, 0x53, 0x06, 0xcb, 0x26, 0xfa, 0x02, 0x14, 0xd9, 0x43,
0x12, 0xe9, 0xe6, 0x65, 0x2e, 0x93, 0x59, 0xe0, 0x6f, 0x9d, 0xdc, 0xc5, 0xfb, 0xfd, 0x24, 0x2c, 0x89, 0x74, 0xf3, 0x32, 0x97, 0xc9, 0x2c, 0xf0, 0xb7, 0x4e, 0x46, 0x8d, 0xee, 0xc1, 0x0c, 0xe7,
0x6c, 0xe9, 0x47, 0x3b, 0x44, 0x98, 0x21, 0x62, 0x62, 0x62, 0xb8, 0x9e, 0x89, 0xda, 0x71, 0xf3, 0x0e, 0x67, 0x92, 0xbd, 0x8c, 0xbf, 0xc4, 0x18, 0xa4, 0xa3, 0xa7, 0xfe, 0x41, 0x12, 0xe6, 0x37,
0x75, 0xc1, 0xd3, 0xe9, 0x24, 0xe6, 0xc9, 0x56, 0x4c, 0xc6, 0x7c, 0xc9, 0x58, 0xcc, 0xb7, 0x00, 0xf5, 0xc3, 0x6d, 0x22, 0x0c, 0x19, 0x31, 0x31, 0x31, 0x5c, 0xcf, 0x44, 0x9d, 0xb8, 0x01, 0xbc,
0x19, 0xc7, 0x75, 0x0c, 0x22, 0x6c, 0x1b, 0x6f, 0xa8, 0x5f, 0x4f, 0xc4, 0x6d, 0x57, 0x29, 0x7c, 0xe0, 0xf1, 0x75, 0x12, 0xf3, 0x64, 0x3b, 0x28, 0xa3, 0xc6, 0x64, 0x2c, 0x6a, 0x9c, 0x87, 0x8c,
0xd6, 0x64, 0x49, 0xaf, 0xa6, 0x1b, 0x84, 0xdd, 0xa1, 0x7b, 0x50, 0xea, 0xd4, 0xab, 0xb8, 0xde, 0xe3, 0x3a, 0x06, 0x11, 0xd6, 0x91, 0x37, 0xd4, 0xaf, 0x27, 0xe2, 0xd6, 0xaf, 0x1c, 0x3e, 0x8c,
0xad, 0xb4, 0xbe, 0xac, 0x75, 0xca, 0x9b, 0x9d, 0xf2, 0x9d, 0xdb, 0x5a, 0xbb, 0xb5, 0xf9, 0xe1, 0xb2, 0xb4, 0x59, 0xcb, 0x0d, 0xc2, 0xee, 0xd0, 0x3d, 0x28, 0x77, 0x1b, 0x35, 0xdc, 0xe8, 0x55,
0x1b, 0x6f, 0xde, 0xfe, 0xbc, 0x92, 0x28, 0xad, 0x1e, 0x9f, 0xac, 0x5e, 0x6b, 0x96, 0xab, 0x9b, 0xdb, 0x5f, 0xd6, 0xba, 0x95, 0x8d, 0x6e, 0xe5, 0xce, 0x6d, 0xad, 0xd3, 0xde, 0xf8, 0xf0, 0x8d,
0xfc, 0xc4, 0xed, 0xb8, 0x8f, 0x3b, 0xba, 0xed, 0xeb, 0x77, 0x6e, 0xb7, 0x5d, 0xfb, 0x88, 0xd2, 0x37, 0x6f, 0x7f, 0x5e, 0x49, 0x94, 0x57, 0x8e, 0x8e, 0x57, 0xae, 0xb5, 0x2a, 0xb5, 0x0d, 0x7e,
0xa0, 0xcf, 0x02, 0x5a, 0xaf, 0xe3, 0x66, 0xbd, 0xab, 0x49, 0x03, 0x59, 0xad, 0x54, 0x95, 0x24, 0x66, 0xb7, 0xdd, 0xc7, 0x5d, 0xdd, 0xf6, 0xf5, 0x3b, 0xb7, 0x3b, 0xae, 0x7d, 0x48, 0x69, 0xd0,
0x8f, 0xa4, 0xd6, 0x89, 0xe7, 0x90, 0xa0, 0x5c, 0xef, 0xbc, 0x71, 0xe7, 0x6e, 0xb5, 0x52, 0xa5, 0x67, 0x01, 0xad, 0x35, 0x70, 0xab, 0xd1, 0xd3, 0xa4, 0x89, 0xad, 0x55, 0x6b, 0x4a, 0x92, 0xc7,
0x67, 0xbc, 0x18, 0xbf, 0x2d, 0xe3, 0x4e, 0x40, 0xe2, 0x5c, 0x27, 0x20, 0xf2, 0x25, 0x92, 0xe7, 0x62, 0x6b, 0xc4, 0x73, 0x48, 0x50, 0x69, 0x74, 0xdf, 0xb8, 0x73, 0xb7, 0x56, 0xad, 0x51, 0x2b,
0xf8, 0x12, 0xeb, 0xb0, 0x60, 0x78, 0xae, 0xef, 0x6b, 0x34, 0x3c, 0x21, 0xe6, 0x58, 0x00, 0xf4, 0x51, 0x8c, 0xdf, 0xb7, 0x71, 0x37, 0x22, 0x71, 0xae, 0x1b, 0x11, 0x79, 0x23, 0xc9, 0x73, 0xbc,
0xdc, 0xd9, 0xe9, 0xca, 0x95, 0x2a, 0xc5, 0x77, 0x18, 0x5a, 0x88, 0xbf, 0x62, 0xc4, 0x40, 0xac, 0x91, 0x35, 0x98, 0x37, 0x3c, 0xd7, 0xf7, 0x35, 0x1a, 0xe0, 0x10, 0xf3, 0x4c, 0x08, 0xf5, 0xdc,
0x27, 0xf5, 0x8f, 0x53, 0xd4, 0xd3, 0xb3, 0x0e, 0x2c, 0x9b, 0xf4, 0x88, 0x8f, 0x1e, 0xc2, 0x9c, 0xe9, 0xc9, 0xf2, 0x95, 0x1a, 0xc5, 0x77, 0x19, 0x5a, 0x88, 0xbf, 0x62, 0xc4, 0x40, 0xac, 0x27,
0xe1, 0x11, 0x93, 0xc6, 0x1d, 0xba, 0x1d, 0xaf, 0x9f, 0xff, 0xdc, 0x44, 0xa7, 0x2b, 0x64, 0x5c, 0xf5, 0x4f, 0x52, 0xd4, 0x57, 0xb4, 0xf6, 0x2d, 0x9b, 0xf4, 0x89, 0x8f, 0x1e, 0xc2, 0xac, 0xe1,
0xab, 0x86, 0x5c, 0x9d, 0x01, 0x31, 0xf0, 0xac, 0x31, 0xd2, 0x46, 0x1f, 0xc1, 0x9c, 0x4f, 0x6c, 0x11, 0x93, 0x46, 0x2e, 0xba, 0x1d, 0xaf, 0xc0, 0xff, 0xdc, 0x44, 0xb7, 0x2d, 0x64, 0x5c, 0xad,
0xcb, 0x19, 0x3e, 0xd6, 0x0c, 0xd7, 0x09, 0xc8, 0x63, 0xf9, 0x9c, 0x77, 0x99, 0xdc, 0x4e, 0x7d, 0x85, 0x5c, 0xdd, 0x21, 0x31, 0xf0, 0x8c, 0x31, 0xd6, 0x46, 0x1f, 0xc1, 0xac, 0x4f, 0x6c, 0xcb,
0x93, 0x72, 0x55, 0x39, 0x53, 0x05, 0x9d, 0x9d, 0xae, 0xcc, 0x8e, 0xc2, 0xf0, 0xac, 0x90, 0x2c, 0x19, 0x3d, 0xd6, 0x0c, 0xd7, 0x09, 0xc8, 0x63, 0xf9, 0x20, 0x78, 0x99, 0xdc, 0x6e, 0x63, 0x83,
0xda, 0xa5, 0x3d, 0x98, 0x1d, 0x1d, 0x0d, 0x5a, 0x10, 0x86, 0x86, 0xd9, 0xab, 0xd0, 0x90, 0x5c, 0x72, 0xd5, 0x38, 0x53, 0x15, 0x9d, 0x9e, 0x2c, 0xcf, 0x8c, 0xc3, 0xf0, 0x8c, 0x90, 0x2c, 0xda,
0x83, 0x9c, 0x47, 0x7a, 0x96, 0x1f, 0x78, 0x5c, 0xcd, 0x14, 0x13, 0x42, 0xd0, 0x12, 0x64, 0x63, 0xe5, 0x5d, 0x98, 0x19, 0x1f, 0x0d, 0x9a, 0x17, 0xa6, 0x8a, 0x59, 0xbc, 0xd0, 0x14, 0x5d, 0x83,
0x45, 0x29, 0x14, 0x27, 0xda, 0xd4, 0x82, 0xf0, 0x9a, 0xba, 0xd2, 0x4f, 0xc3, 0xd8, 0x58, 0xe8, 0x9c, 0x47, 0xfa, 0x96, 0x1f, 0x78, 0x5c, 0xcd, 0x14, 0x13, 0x42, 0xd0, 0x22, 0x64, 0x63, 0x65,
0xa1, 0x33, 0x2d, 0x5f, 0xdf, 0x11, 0x9d, 0xe5, 0xb0, 0x6c, 0xd2, 0xbd, 0x3c, 0xf4, 0x43, 0x07, 0x2d, 0x14, 0x27, 0xda, 0xd4, 0x06, 0xf1, 0xaa, 0xbc, 0xf2, 0x4f, 0xc3, 0x99, 0xb1, 0xd0, 0x63,
0x92, 0x7d, 0x53, 0x18, 0xf3, 0x74, 0x44, 0x85, 0x21, 0xf3, 0x65, 0x64, 0x9d, 0x77, 0x3a, 0x56, 0x6b, 0x5a, 0xbe, 0xbe, 0x2d, 0x3a, 0xcb, 0x61, 0xd9, 0xa4, 0x7b, 0x79, 0xe4, 0x87, 0x2e, 0x28,
0xe7, 0xbd, 0x00, 0x19, 0x9b, 0x1c, 0x10, 0x9b, 0xfb, 0x18, 0x98, 0x37, 0xd8, 0x9e, 0xff, 0x92, 0xfb, 0xa6, 0x30, 0xe6, 0x2b, 0x89, 0x1a, 0x45, 0xe6, 0x0d, 0xc9, 0x4a, 0xf1, 0x74, 0xac, 0x52,
0xbb, 0x23, 0xae, 0xe1, 0x75, 0x98, 0xf9, 0xc8, 0xdd, 0xd1, 0xac, 0x80, 0x78, 0x51, 0x7d, 0x59, 0x7c, 0x1e, 0x32, 0x36, 0xd9, 0x27, 0x36, 0xf7, 0x52, 0x30, 0x6f, 0xb0, 0x3d, 0xff, 0x25, 0x77,
0xe1, 0xce, 0x0b, 0x93, 0xf4, 0x2b, 0xca, 0xbd, 0x85, 0xa3, 0x53, 0xfc, 0xc8, 0xdd, 0x69, 0x48, 0x5b, 0x5c, 0xe4, 0x6b, 0x50, 0xfa, 0xc8, 0xdd, 0xd6, 0xac, 0x80, 0x78, 0x51, 0x85, 0x5a, 0xe1,
0x36, 0x54, 0x86, 0x59, 0xe6, 0xbf, 0x91, 0xc7, 0xc4, 0x18, 0x32, 0x41, 0x97, 0xbf, 0xbb, 0xce, 0xce, 0x0b, 0x93, 0xf4, 0x2b, 0x0a, 0xc6, 0x85, 0xab, 0x54, 0xfc, 0xc8, 0xdd, 0x6e, 0x4a, 0x36,
0x50, 0x8e, 0xba, 0x64, 0x50, 0xbf, 0x99, 0x01, 0x85, 0x17, 0xab, 0x94, 0x59, 0x55, 0x2a, 0xcb, 0x54, 0x81, 0x19, 0xe6, 0x01, 0x92, 0xc7, 0xc4, 0x18, 0x31, 0x41, 0x97, 0xbf, 0xdc, 0x96, 0x28,
0x2b, 0xdf, 0x83, 0x8c, 0x6f, 0xb8, 0x61, 0x31, 0xe3, 0xc4, 0x84, 0xf8, 0x38, 0xd3, 0x5a, 0x87, 0x47, 0x43, 0x32, 0xa8, 0xdf, 0xcc, 0x80, 0xc2, 0xcb, 0x5d, 0x2a, 0xac, 0xae, 0x95, 0x65, 0xa6,
0x72, 0x60, 0xce, 0x88, 0xd6, 0x61, 0xda, 0xdf, 0xd3, 0x3d, 0xcb, 0xe9, 0x09, 0xe7, 0xe8, 0xf5, 0xef, 0x41, 0xc6, 0x37, 0xdc, 0xb0, 0x1c, 0x72, 0x62, 0x4a, 0xfd, 0x2c, 0xd3, 0x6a, 0x97, 0x72,
0xa7, 0x93, 0xc1, 0x79, 0xb0, 0x64, 0x46, 0x1b, 0x90, 0xd9, 0xa1, 0x11, 0x99, 0xb0, 0xa5, 0xb7, 0x60, 0xce, 0x88, 0xd6, 0x60, 0xda, 0xdf, 0xd5, 0x3d, 0xcb, 0xe9, 0x0b, 0xf7, 0xea, 0xf5, 0xa7,
0x9f, 0x4a, 0x4a, 0x85, 0x72, 0x70, 0xe8, 0xc6, 0x14, 0xe6, 0x02, 0xa8, 0x24, 0x56, 0x12, 0x27, 0x93, 0xc1, 0x79, 0xb0, 0x64, 0x46, 0xeb, 0x90, 0xd9, 0xa6, 0x31, 0x9d, 0xb0, 0xc6, 0xb7, 0x9f,
0x2e, 0xa2, 0xa7, 0x93, 0xc4, 0x8a, 0x50, 0x22, 0x49, 0x4c, 0x40, 0x69, 0x06, 0x0a, 0xb1, 0x1e, 0x4a, 0x4a, 0x95, 0x72, 0x70, 0xe8, 0xfa, 0x14, 0xe6, 0x02, 0xa8, 0x24, 0x56, 0x54, 0x27, 0xae,
0x4a, 0xf7, 0xa1, 0x10, 0x23, 0x43, 0xcf, 0xc3, 0xf4, 0xae, 0xaf, 0xc5, 0xca, 0xff, 0xb3, 0xbb, 0xb2, 0xa7, 0x93, 0xc4, 0xca, 0x58, 0x22, 0x49, 0x4c, 0x40, 0xb9, 0x04, 0x85, 0x58, 0x0f, 0xe5,
0x3e, 0xab, 0x24, 0x5a, 0x81, 0x02, 0xe3, 0xd7, 0x76, 0x6d, 0xbd, 0x27, 0x1f, 0xdd, 0x80, 0x81, 0xfb, 0x50, 0x88, 0x91, 0xa1, 0xe7, 0x61, 0x7a, 0xc7, 0xd7, 0x62, 0x3f, 0x20, 0xc8, 0xee, 0xf8,
0xd6, 0x29, 0x44, 0x35, 0x20, 0xc3, 0x74, 0x88, 0x6e, 0x42, 0xa1, 0xd3, 0x68, 0xde, 0xdf, 0xac, 0xac, 0x16, 0x69, 0x19, 0x0a, 0x8c, 0x5f, 0xdb, 0xb1, 0xf5, 0xbe, 0x7c, 0xb6, 0x03, 0x06, 0x5a,
0x6b, 0xcd, 0x56, 0x8d, 0x5a, 0x46, 0x56, 0x33, 0xc6, 0xe5, 0x33, 0x8a, 0x8e, 0xe5, 0xf4, 0x6c, 0xa3, 0x10, 0xd5, 0x80, 0x0c, 0xd3, 0x21, 0xba, 0x09, 0x85, 0x6e, 0xb3, 0x75, 0x7f, 0xa3, 0xa1,
0xc2, 0xea, 0x90, 0x6f, 0x00, 0x6c, 0x6d, 0x6f, 0x76, 0x1b, 0x9c, 0x54, 0xd4, 0xeb, 0xc4, 0x48, 0xb5, 0xda, 0x75, 0x6a, 0x19, 0x59, 0xd5, 0x19, 0x97, 0xcf, 0x28, 0xba, 0x96, 0xd3, 0xb7, 0x09,
0xb7, 0x86, 0x76, 0x60, 0x51, 0x4a, 0xe1, 0x13, 0xfe, 0x5e, 0x02, 0xa6, 0x85, 0x96, 0xd1, 0x4a, 0xab, 0x64, 0xbe, 0x01, 0xb0, 0xb9, 0xb5, 0xd1, 0x6b, 0x72, 0x52, 0x51, 0xf1, 0x13, 0x23, 0xdd,
0x68, 0x7a, 0x9f, 0x3b, 0x3e, 0x59, 0xbd, 0x22, 0xb8, 0x38, 0x92, 0x55, 0x95, 0xdc, 0x60, 0x95, 0x1c, 0xd9, 0x81, 0x45, 0x29, 0x85, 0x57, 0xf9, 0x7b, 0x09, 0x98, 0x16, 0x5a, 0x46, 0xcb, 0xa1,
0xbc, 0x35, 0xad, 0xd5, 0xdc, 0xfc, 0x50, 0x49, 0x8c, 0x0c, 0x43, 0x2c, 0x94, 0x28, 0xf3, 0x43, 0xe9, 0x7d, 0xee, 0xe8, 0x78, 0xe5, 0x8a, 0xe0, 0xe2, 0x48, 0x56, 0x97, 0x72, 0x83, 0xd5, 0x02,
0x37, 0x01, 0x5a, 0xcd, 0xba, 0xf6, 0x08, 0x37, 0xba, 0x75, 0x2c, 0x0b, 0x82, 0x46, 0x48, 0x5b, 0xd7, 0xb5, 0x76, 0x6b, 0xe3, 0x43, 0x25, 0x31, 0x36, 0x0c, 0xb1, 0x50, 0xa2, 0x50, 0x10, 0xdd,
0x0e, 0x79, 0xe4, 0xd1, 0x1d, 0x8f, 0x5e, 0x84, 0x54, 0x79, 0x73, 0x53, 0x49, 0xf1, 0x22, 0x95, 0x04, 0x68, 0xb7, 0x1a, 0xda, 0x23, 0xdc, 0xec, 0x35, 0xb0, 0x2c, 0x29, 0x1a, 0x23, 0x6d, 0x3b,
0x11, 0xa2, 0xb2, 0x6d, 0xf3, 0x71, 0x56, 0x66, 0xa0, 0xc0, 0xcb, 0xa4, 0x99, 0x2a, 0xd5, 0xbb, 0xe4, 0x91, 0x47, 0x77, 0x3c, 0x7a, 0x11, 0x52, 0x95, 0x8d, 0x0d, 0x25, 0xc5, 0xcb, 0x5c, 0xc6,
0x50, 0x14, 0x84, 0x3c, 0xc3, 0xf8, 0x64, 0x3a, 0x6d, 0x31, 0x4c, 0x6b, 0xca, 0xc7, 0x37, 0xd6, 0x88, 0x2a, 0xb6, 0xcd, 0xc7, 0x59, 0x2d, 0x41, 0x81, 0x17, 0x5a, 0x33, 0x55, 0xaa, 0x77, 0xa1,
0x52, 0x7f, 0x27, 0x05, 0xf3, 0x9c, 0x55, 0x3c, 0x70, 0x44, 0xae, 0xf0, 0xe5, 0xf9, 0xfb, 0xea, 0x28, 0x08, 0x79, 0x8e, 0xf2, 0xc9, 0x84, 0xdc, 0x42, 0x98, 0x18, 0x95, 0xcf, 0x77, 0xac, 0xa5,
0xe8, 0x5b, 0xf5, 0xe7, 0xce, 0xdf, 0x34, 0x23, 0xc2, 0x47, 0xf3, 0xe8, 0x26, 0xcc, 0xc9, 0x57, 0xfe, 0x4e, 0x0a, 0xe6, 0x38, 0xab, 0x78, 0x22, 0x89, 0x9c, 0xe9, 0xcb, 0x5f, 0x00, 0x6a, 0xe3,
0x26, 0x69, 0x4f, 0x79, 0x70, 0xfc, 0xde, 0xd3, 0x8a, 0x13, 0x2d, 0x61, 0xb8, 0x78, 0x3a, 0x52, 0xaf, 0xdd, 0x9f, 0x3b, 0x7f, 0xd3, 0x8c, 0x09, 0x1f, 0xcf, 0xc4, 0x9b, 0x30, 0x2b, 0xdf, 0xa9,
0x3e, 0x70, 0xc5, 0xac, 0x99, 0x7c, 0x21, 0xcf, 0x8c, 0xbc, 0x90, 0x97, 0xca, 0x30, 0x3f, 0x41, 0xa4, 0x3d, 0xe5, 0xe1, 0xf5, 0x7b, 0x4f, 0x2b, 0x4e, 0xb4, 0x84, 0xe1, 0xe2, 0x09, 0x4d, 0xf9,
0xc0, 0x33, 0x65, 0x24, 0xbf, 0x2a, 0xf3, 0xfe, 0xf3, 0x30, 0x27, 0xb2, 0xf5, 0x5a, 0x7b, 0xbb, 0x44, 0x16, 0xb3, 0x66, 0xf2, 0x8d, 0x3d, 0x33, 0xf6, 0xc6, 0x5e, 0xae, 0xc0, 0xdc, 0x04, 0x01,
0xb2, 0xd9, 0xe8, 0x6c, 0x28, 0x53, 0x68, 0x06, 0xf2, 0xa2, 0x51, 0xaf, 0x29, 0x09, 0x54, 0x82, 0xcf, 0x94, 0xd3, 0xfc, 0xaa, 0x7c, 0x39, 0x98, 0x83, 0x59, 0x91, 0xef, 0xd7, 0x3a, 0x5b, 0xd5,
0x45, 0x49, 0x43, 0x37, 0xa5, 0xb6, 0xdd, 0x94, 0xa4, 0x49, 0xf4, 0x1c, 0x5c, 0x91, 0xb8, 0x08, 0x8d, 0x66, 0x77, 0x5d, 0x99, 0x42, 0x25, 0xc8, 0x8b, 0x46, 0xa3, 0xae, 0x24, 0x50, 0x19, 0x16,
0x9c, 0x52, 0xff, 0x2a, 0x09, 0xc0, 0x27, 0xce, 0x6a, 0xfa, 0xaf, 0xc3, 0xac, 0xa1, 0x0f, 0x74, 0x24, 0x0d, 0xdd, 0x94, 0xda, 0x56, 0x4b, 0x92, 0x26, 0xd1, 0x73, 0x70, 0x45, 0xe2, 0x22, 0x70,
0xc3, 0x0a, 0x8e, 0x46, 0x6a, 0xfc, 0x66, 0x24, 0x94, 0xd7, 0xf9, 0x7d, 0x39, 0xac, 0x28, 0x8e, 0x4a, 0xfd, 0xeb, 0x24, 0x00, 0x9f, 0x38, 0xfb, 0x55, 0xc0, 0x75, 0x98, 0x31, 0xf4, 0xa1, 0x6e,
0xee, 0xa9, 0x73, 0x7f, 0x09, 0x13, 0x89, 0x17, 0x9f, 0x23, 0xda, 0x14, 0xb5, 0xc5, 0x52, 0x99, 0x58, 0xc1, 0xe1, 0x58, 0x95, 0x60, 0x49, 0x42, 0x79, 0xa5, 0xe0, 0x97, 0xc3, 0x9a, 0xe4, 0xe8,
0xaf, 0x41, 0x5e, 0x48, 0x0e, 0x03, 0x09, 0xe6, 0x39, 0x0b, 0x21, 0x35, 0x9c, 0xe3, 0xe8, 0x86, 0x9e, 0x3a, 0xf7, 0xb7, 0x34, 0x91, 0x78, 0xf1, 0x39, 0xa6, 0x4d, 0x51, 0x9d, 0x2c, 0x95, 0xf9,
0x79, 0xfe, 0x0f, 0x01, 0x52, 0x3f, 0xca, 0x0f, 0x01, 0x4a, 0xf7, 0x00, 0x3d, 0x39, 0xbc, 0x67, 0x1a, 0xe4, 0x85, 0xe4, 0x30, 0x14, 0x61, 0xbe, 0xb7, 0x10, 0x52, 0xc7, 0x39, 0x8e, 0x6e, 0x9a,
0x5a, 0xab, 0x47, 0x30, 0x53, 0x15, 0x6a, 0xc2, 0xec, 0xa1, 0xf9, 0x3a, 0xcc, 0x7a, 0xfc, 0xa7, 0xe7, 0xff, 0x94, 0x20, 0xf5, 0xa3, 0xfc, 0x94, 0xa0, 0x7c, 0x0f, 0xd0, 0x93, 0xc3, 0x7b, 0xa6,
0x5f, 0xe6, 0xa8, 0x36, 0x25, 0x94, 0x6b, 0x73, 0x05, 0x0a, 0x2c, 0xbb, 0x39, 0xf2, 0x5b, 0x34, 0xb5, 0x7a, 0x04, 0xa5, 0x9a, 0x50, 0x13, 0x66, 0x4f, 0xd5, 0xd7, 0x61, 0xc6, 0xe3, 0x3f, 0x1e,
0x60, 0x20, 0x46, 0xa0, 0xfe, 0x6d, 0x3a, 0xbc, 0x2a, 0x7c, 0xea, 0xc9, 0xb0, 0x04, 0xd3, 0x22, 0x33, 0xc7, 0xb5, 0x29, 0xa1, 0x5c, 0x9b, 0xcb, 0x50, 0x60, 0xf9, 0xd1, 0xb1, 0x5f, 0xb3, 0x01,
0x24, 0xc3, 0x13, 0xc4, 0xe2, 0xe9, 0x46, 0x0d, 0x27, 0x2d, 0x73, 0x54, 0x83, 0xc9, 0x0b, 0x35, 0x03, 0x31, 0x02, 0xf5, 0xef, 0xd2, 0xe1, 0x55, 0xe1, 0x53, 0x4f, 0x86, 0xa5, 0xa8, 0x16, 0x20,
0x18, 0xbd, 0xdf, 0xa5, 0x9e, 0xfa, 0xfd, 0xee, 0xab, 0x4f, 0x2c, 0x3d, 0x57, 0xf8, 0xff, 0xbb, 0x19, 0x9e, 0x20, 0x16, 0x91, 0x37, 0xeb, 0x38, 0x69, 0x99, 0xe3, 0x1a, 0x4c, 0x5e, 0xa8, 0xc1,
0xc0, 0xac, 0x87, 0x83, 0x7e, 0x8a, 0x0d, 0xa0, 0x3f, 0x79, 0x66, 0x33, 0xe7, 0xbf, 0xf5, 0x3c, 0xe8, 0x05, 0x30, 0xf5, 0xd4, 0x2f, 0x80, 0x5f, 0x7d, 0x62, 0xe9, 0xb9, 0xc2, 0xff, 0xdf, 0x05,
0xd1, 0xc1, 0xd3, 0x1c, 0xd8, 0x7a, 0x68, 0xe1, 0x58, 0x48, 0xca, 0x2b, 0x4c, 0x5e, 0x79, 0x9a, 0x66, 0x3d, 0x1c, 0xf4, 0x53, 0x6c, 0x00, 0xfd, 0xc9, 0x33, 0x9b, 0x39, 0xff, 0xb5, 0xe8, 0x89,
0x6b, 0x09, 0x83, 0x1e, 0xdd, 0xd5, 0xef, 0xc2, 0x34, 0xb7, 0x74, 0xbe, 0xf8, 0xad, 0xcf, 0xea, 0x0e, 0x9e, 0xe6, 0xc0, 0x36, 0x42, 0x0b, 0xc7, 0x82, 0x5a, 0xee, 0xda, 0xbf, 0xf2, 0x34, 0xd7,
0xf9, 0x22, 0x44, 0x00, 0x2b, 0x19, 0x3e, 0xfd, 0x66, 0xfb, 0x71, 0xd8, 0x96, 0xaf, 0x84, 0xbb, 0x12, 0x06, 0x3d, 0xba, 0xab, 0xdf, 0x85, 0x69, 0x6e, 0xe9, 0x7c, 0xf1, 0x6b, 0xa1, 0x95, 0xf3,
0x2a, 0xac, 0xe9, 0x38, 0x77, 0x57, 0x3d, 0xe3, 0x0f, 0x26, 0xd4, 0x5f, 0x4c, 0xc0, 0x7c, 0x78, 0x45, 0x88, 0x10, 0x58, 0x32, 0x7c, 0xfa, 0xcd, 0xf6, 0xe3, 0xb0, 0x2d, 0x5f, 0x09, 0x77, 0x55,
0xdc, 0xa2, 0x9f, 0x3f, 0xa2, 0x77, 0x21, 0xcf, 0x36, 0xbf, 0x6f, 0xb1, 0xe7, 0xd1, 0xcb, 0x8f, 0x58, 0x15, 0x72, 0xee, 0xae, 0x7a, 0xc6, 0x9f, 0x5c, 0xa8, 0xbf, 0x98, 0x80, 0xb9, 0xf0, 0xb8,
0x6a, 0x44, 0xce, 0xb2, 0x9c, 0x2c, 0xe9, 0xe9, 0x11, 0x53, 0x18, 0x9c, 0x4b, 0x78, 0x43, 0x72, 0x45, 0x3f, 0xa0, 0x44, 0xef, 0x42, 0x9e, 0x6d, 0x7e, 0xdf, 0x62, 0x0f, 0xac, 0x97, 0x1f, 0xd5,
0xf5, 0x97, 0x12, 0x90, 0x93, 0x70, 0xb4, 0x0e, 0x39, 0x9f, 0xf4, 0xd8, 0xcf, 0x31, 0xc5, 0x18, 0x88, 0x9c, 0xe5, 0x49, 0x59, 0xda, 0xd4, 0x23, 0xa6, 0x30, 0x38, 0x97, 0xf0, 0x86, 0xe4, 0xea,
0x6e, 0x5e, 0x24, 0x67, 0xad, 0x23, 0x88, 0x45, 0x91, 0x87, 0xe4, 0x2d, 0xbd, 0x07, 0x33, 0x23, 0x2f, 0x25, 0x20, 0x27, 0xe1, 0x68, 0x0d, 0x72, 0x3e, 0xe9, 0xb3, 0x1f, 0x74, 0x8a, 0x31, 0xdc,
0xa8, 0x67, 0xd2, 0xfe, 0xf7, 0xc3, 0x43, 0x4d, 0x8d, 0x86, 0xf8, 0x7d, 0x4f, 0xe8, 0x75, 0x25, 0xbc, 0x48, 0xce, 0x6a, 0x57, 0x10, 0x8b, 0x32, 0x11, 0xc9, 0x5b, 0x7e, 0x0f, 0x4a, 0x63, 0xa8,
0x2e, 0xf3, 0x95, 0x22, 0xa6, 0x4b, 0xbc, 0xae, 0xe4, 0x33, 0x48, 0x9a, 0xe4, 0x75, 0xa1, 0xf6, 0x67, 0xd2, 0xfe, 0xf7, 0xc3, 0x43, 0x4d, 0x8d, 0x86, 0xf8, 0x85, 0x50, 0xe8, 0x75, 0x25, 0x2e,
0xe8, 0x71, 0xe1, 0xa6, 0xe2, 0xd6, 0x53, 0xc9, 0x9b, 0x7c, 0x72, 0xfe, 0xaf, 0xfc, 0xb8, 0xd2, 0xf3, 0x95, 0x22, 0xa6, 0x4b, 0xbc, 0xae, 0xe4, 0x33, 0x48, 0x9a, 0xe4, 0x75, 0xa1, 0xce, 0xf8,
0x7f, 0x27, 0x00, 0x62, 0xce, 0xf4, 0x86, 0xc8, 0x39, 0x71, 0x5f, 0xfa, 0xad, 0x67, 0x1c, 0xf1, 0x71, 0xe1, 0xa6, 0xe2, 0xd6, 0x53, 0xc9, 0x9b, 0x7c, 0x72, 0xfe, 0xaf, 0xfc, 0xb8, 0xf2, 0x7f,
0x5a, 0x2c, 0x29, 0xf5, 0x5b, 0x09, 0x48, 0x33, 0x91, 0x23, 0x85, 0x38, 0x8b, 0x80, 0x62, 0xde, 0x27, 0x00, 0x62, 0xce, 0xf4, 0xba, 0xc8, 0x5a, 0x71, 0x5f, 0xfa, 0xad, 0x67, 0x1c, 0xf1, 0x6a,
0xa2, 0x74, 0xc1, 0x12, 0xe8, 0x05, 0x78, 0x3e, 0x0e, 0xa7, 0x8e, 0x5c, 0x1d, 0x73, 0x57, 0x2e, 0x2c, 0xad, 0xf5, 0x5b, 0x09, 0x48, 0x33, 0x91, 0x63, 0xa5, 0x3c, 0x0b, 0x80, 0x62, 0xde, 0xa2,
0x49, 0xef, 0xe8, 0xc8, 0x6d, 0x1c, 0xc1, 0xa5, 0xd0, 0x35, 0x58, 0x8a, 0xe1, 0x84, 0x0c, 0x21, 0x74, 0xc1, 0x12, 0xe8, 0x05, 0x78, 0x3e, 0x0e, 0xa7, 0x8e, 0x5c, 0x03, 0x73, 0x57, 0x2e, 0x49,
0x36, 0x4d, 0xc5, 0xc6, 0xb0, 0xfc, 0x53, 0x20, 0x33, 0x63, 0x5e, 0xdb, 0xcd, 0x2f, 0x40, 0x51, 0xef, 0xe8, 0xc8, 0x6d, 0x1c, 0xc3, 0xa5, 0xd0, 0x35, 0x58, 0x8c, 0xe1, 0x84, 0x0c, 0x21, 0x36,
0xfe, 0x8c, 0x92, 0xa9, 0x2e, 0x07, 0xe9, 0x6e, 0xb9, 0xf3, 0x40, 0x99, 0x42, 0x00, 0x59, 0x1e, 0x4d, 0xc5, 0xc6, 0xb0, 0xfc, 0x53, 0x20, 0x33, 0x67, 0xbc, 0xb6, 0x9b, 0x5f, 0x80, 0xa2, 0xfc,
0xd9, 0xf3, 0xd2, 0xcb, 0x6a, 0xab, 0xb9, 0xde, 0xb8, 0xaf, 0x24, 0xe9, 0xb7, 0xa8, 0xa8, 0x4f, 0x21, 0x26, 0x53, 0x5d, 0x0e, 0xd2, 0xbd, 0x4a, 0xf7, 0x81, 0x32, 0x85, 0x00, 0xb2, 0x3c, 0xb2,
0xdd, 0xfc, 0xb5, 0x34, 0xe4, 0xc3, 0x42, 0x40, 0x74, 0x15, 0x52, 0xcd, 0xfa, 0x23, 0x99, 0x26, 0xe7, 0xc5, 0x9b, 0xb5, 0x76, 0x6b, 0xad, 0x79, 0x5f, 0x49, 0xd2, 0x6f, 0x51, 0x93, 0x9f, 0xba,
0x08, 0xe1, 0x4d, 0x72, 0x88, 0x5e, 0x8a, 0x4a, 0x08, 0xee, 0x71, 0xa7, 0x32, 0x44, 0xcb, 0xf2, 0xf9, 0x6b, 0x69, 0xc8, 0x87, 0xa5, 0x84, 0xe8, 0x2a, 0xa4, 0x5a, 0x8d, 0x47, 0x32, 0x4d, 0x10,
0x81, 0x57, 0x20, 0x57, 0xee, 0x74, 0x1a, 0xf7, 0x9b, 0xf5, 0x9a, 0xf2, 0x49, 0x82, 0xfb, 0xbb, 0xc2, 0x5b, 0xe4, 0x00, 0xbd, 0x14, 0x15, 0x21, 0xdc, 0xe3, 0x4e, 0x65, 0x88, 0x96, 0x05, 0x08,
0x21, 0x11, 0x37, 0xdc, 0xc4, 0x64, 0x54, 0xd5, 0x6a, 0xbd, 0xdd, 0xad, 0xd7, 0x94, 0x8f, 0x93, 0xaf, 0x40, 0xae, 0xd2, 0xed, 0x36, 0xef, 0xb7, 0x1a, 0x75, 0xe5, 0x93, 0x04, 0xf7, 0x77, 0x43,
0xe3, 0x54, 0xec, 0x49, 0x9c, 0xfd, 0xe8, 0x23, 0xdf, 0xc6, 0xf5, 0x76, 0x19, 0xd3, 0x0e, 0x3f, 0x22, 0x6e, 0xb8, 0x89, 0xc9, 0xa8, 0x6a, 0xb5, 0x46, 0xa7, 0xd7, 0xa8, 0x2b, 0x1f, 0x27, 0xcf,
0x49, 0xf2, 0xca, 0x86, 0xa8, 0x47, 0x8f, 0x0c, 0xb8, 0x7b, 0xbd, 0x2c, 0x7f, 0x5f, 0xf6, 0x71, 0x52, 0xb1, 0x47, 0x75, 0xf6, 0xb3, 0x91, 0x7c, 0x07, 0x37, 0x3a, 0x15, 0x4c, 0x3b, 0xfc, 0x24,
0x8a, 0x57, 0xff, 0x47, 0x55, 0x8d, 0x44, 0x37, 0x8f, 0x68, 0x6f, 0xac, 0x9c, 0x94, 0x89, 0x49, 0xc9, 0x6b, 0x23, 0xa2, 0x1e, 0x3d, 0x32, 0xe4, 0xee, 0xf5, 0x92, 0xfc, 0x85, 0xda, 0xc7, 0x29,
0x8d, 0xf5, 0xd6, 0x09, 0x74, 0x2f, 0xa0, 0x52, 0x54, 0x98, 0xc6, 0xdb, 0xcd, 0x26, 0x25, 0xfa, 0xfe, 0xfb, 0x81, 0xa8, 0x2e, 0x92, 0xe8, 0xe6, 0x21, 0xed, 0x8d, 0x15, 0xa4, 0x32, 0x31, 0xa9,
0x38, 0x3d, 0x36, 0x3b, 0x3c, 0x74, 0x1c, 0x4a, 0x73, 0x1d, 0x72, 0xb2, 0xda, 0x54, 0xf9, 0x24, 0x33, 0xbd, 0x75, 0x03, 0xdd, 0x0b, 0xa8, 0x14, 0x15, 0xa6, 0xf1, 0x56, 0xab, 0x45, 0x89, 0x3e,
0x3d, 0x36, 0xa0, 0xaa, 0x2c, 0x95, 0x65, 0x1d, 0x6e, 0x6c, 0x77, 0xd9, 0xcf, 0xdf, 0x3e, 0xce, 0x4e, 0x9f, 0x99, 0x1d, 0x1e, 0x39, 0x0e, 0xa5, 0xb9, 0x0e, 0x39, 0x59, 0xaf, 0xaa, 0x7c, 0x92,
0x8c, 0x77, 0xb8, 0x37, 0x0c, 0x4c, 0xf7, 0xd0, 0x41, 0xab, 0x61, 0x11, 0xc5, 0x27, 0x19, 0x9e, 0x3e, 0x33, 0xa0, 0x9a, 0x2c, 0xb6, 0x65, 0x1d, 0xae, 0x6f, 0xf5, 0xd8, 0x0f, 0xe8, 0x3e, 0xce,
0x27, 0x09, 0x69, 0x44, 0x05, 0xc5, 0x2b, 0x90, 0xc3, 0xf5, 0x2f, 0xf1, 0x5f, 0xca, 0x7d, 0x9c, 0x9c, 0xed, 0x70, 0x77, 0x14, 0x98, 0xee, 0x81, 0x83, 0x56, 0xc2, 0x32, 0x8c, 0x4f, 0x32, 0x3c,
0x1d, 0x93, 0x83, 0xc9, 0x47, 0xc4, 0xa0, 0xbd, 0xad, 0x42, 0x16, 0xd7, 0xb7, 0x5a, 0x0f, 0xeb, 0x4f, 0x12, 0xd2, 0x88, 0x1a, 0x8c, 0x57, 0x20, 0x87, 0x1b, 0x5f, 0xe2, 0xbf, 0xb5, 0xfb, 0x38,
0xca, 0x6f, 0x67, 0xc7, 0xe4, 0x60, 0xd2, 0x77, 0xd9, 0xaf, 0x62, 0x72, 0x2d, 0xdc, 0xde, 0x28, 0x7b, 0x46, 0x0e, 0x26, 0x1f, 0x11, 0x83, 0xf6, 0xb6, 0x02, 0x59, 0xdc, 0xd8, 0x6c, 0x3f, 0x6c,
0xb3, 0x45, 0x19, 0x97, 0xd3, 0xf2, 0x06, 0x7b, 0xba, 0x43, 0xcc, 0xe8, 0xe7, 0x0d, 0x21, 0xea, 0x28, 0xbf, 0x9d, 0x3d, 0x23, 0x07, 0x93, 0x81, 0xcb, 0x7e, 0x57, 0x93, 0x6b, 0xe3, 0xce, 0x7a,
0xe6, 0x57, 0x21, 0x27, 0x5f, 0x15, 0xd0, 0x32, 0x64, 0x1f, 0xb5, 0xf0, 0x83, 0x3a, 0x56, 0xa6, 0x85, 0x2d, 0xca, 0x59, 0x39, 0x6d, 0x6f, 0xb8, 0xab, 0x3b, 0xc4, 0x8c, 0x7e, 0x20, 0x11, 0xa2,
0xb8, 0x96, 0x25, 0xe6, 0x11, 0x7f, 0x0f, 0x5a, 0x85, 0xe9, 0xad, 0x72, 0xb3, 0x7c, 0x9f, 0x9e, 0x6e, 0x7e, 0x15, 0x72, 0xf2, 0x5d, 0x02, 0x2d, 0x41, 0xf6, 0x51, 0x1b, 0x3f, 0x68, 0x60, 0x65,
0x09, 0x3e, 0x0c, 0x49, 0x20, 0x52, 0xe3, 0x25, 0x45, 0x74, 0x10, 0xca, 0xac, 0xbc, 0xf2, 0xad, 0x8a, 0x6b, 0x59, 0x62, 0x1e, 0xf1, 0x17, 0xa5, 0x15, 0x98, 0xde, 0xac, 0xb4, 0x2a, 0xf7, 0xe9,
0x1f, 0x2c, 0x4f, 0x7d, 0xef, 0x07, 0xcb, 0x53, 0x1f, 0x9f, 0x2d, 0x27, 0xbe, 0x75, 0xb6, 0x9c, 0x99, 0xe0, 0xc3, 0x90, 0x04, 0x22, 0xb9, 0x5e, 0x56, 0x44, 0x07, 0xa1, 0xcc, 0xea, 0x2b, 0xdf,
0xf8, 0xf6, 0xd9, 0x72, 0xe2, 0x9f, 0xcf, 0x96, 0x13, 0xbf, 0xfc, 0xc3, 0xe5, 0xa9, 0x6f, 0xff, 0xfa, 0xc1, 0xd2, 0xd4, 0xf7, 0x7e, 0xb0, 0x34, 0xf5, 0xf1, 0xe9, 0x52, 0xe2, 0x5b, 0xa7, 0x4b,
0x70, 0x79, 0xea, 0x7b, 0x3f, 0x5c, 0x9e, 0xda, 0xc9, 0xb2, 0xe8, 0xfa, 0xcd, 0xff, 0x0d, 0x00, 0x89, 0x6f, 0x9f, 0x2e, 0x25, 0xfe, 0xe5, 0x74, 0x29, 0xf1, 0xcb, 0x3f, 0x5c, 0x9a, 0xfa, 0xf6,
0x00, 0xff, 0xff, 0xdd, 0x33, 0x91, 0x58, 0x55, 0x43, 0x00, 0x00, 0x0f, 0x97, 0xa6, 0xbe, 0xf7, 0xc3, 0xa5, 0xa9, 0xed, 0x2c, 0x8b, 0xae, 0xdf, 0xfc, 0xdf, 0x00,
0x00, 0x00, 0xff, 0xff, 0x15, 0x67, 0x77, 0xf9, 0x97, 0x43, 0x00, 0x00,
} }
func (m *Version) Copy() *Version { func (m *Version) Copy() *Version {
@ -6685,6 +6690,10 @@ func (m *HealthConfig) CopyFrom(src interface{}) {
m.StartPeriod = &types.Duration{} m.StartPeriod = &types.Duration{}
github_com_moby_swarmkit_v2_api_deepcopy.Copy(m.StartPeriod, o.StartPeriod) github_com_moby_swarmkit_v2_api_deepcopy.Copy(m.StartPeriod, o.StartPeriod)
} }
if o.StartInterval != nil {
m.StartInterval = &types.Duration{}
github_com_moby_swarmkit_v2_api_deepcopy.Copy(m.StartInterval, o.StartInterval)
}
} }
func (m *MaybeEncryptedRecord) Copy() *MaybeEncryptedRecord { func (m *MaybeEncryptedRecord) Copy() *MaybeEncryptedRecord {
@ -10172,6 +10181,18 @@ func (m *HealthConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i _ = i
var l int var l int
_ = l _ = l
if m.StartInterval != nil {
{
size, err := m.StartInterval.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTypes(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x32
}
if m.StartPeriod != nil { if m.StartPeriod != nil {
{ {
size, err := m.StartPeriod.MarshalToSizedBuffer(dAtA[:i]) size, err := m.StartPeriod.MarshalToSizedBuffer(dAtA[:i])
@ -12647,6 +12668,10 @@ func (m *HealthConfig) Size() (n int) {
l = m.StartPeriod.Size() l = m.StartPeriod.Size()
n += 1 + l + sovTypes(uint64(l)) n += 1 + l + sovTypes(uint64(l))
} }
if m.StartInterval != nil {
l = m.StartInterval.Size()
n += 1 + l + sovTypes(uint64(l))
}
return n return n
} }
@ -14044,6 +14069,7 @@ func (this *HealthConfig) String() string {
`Timeout:` + strings.Replace(fmt.Sprintf("%v", this.Timeout), "Duration", "types.Duration", 1) + `,`, `Timeout:` + strings.Replace(fmt.Sprintf("%v", this.Timeout), "Duration", "types.Duration", 1) + `,`,
`Retries:` + fmt.Sprintf("%v", this.Retries) + `,`, `Retries:` + fmt.Sprintf("%v", this.Retries) + `,`,
`StartPeriod:` + strings.Replace(fmt.Sprintf("%v", this.StartPeriod), "Duration", "types.Duration", 1) + `,`, `StartPeriod:` + strings.Replace(fmt.Sprintf("%v", this.StartPeriod), "Duration", "types.Duration", 1) + `,`,
`StartInterval:` + strings.Replace(fmt.Sprintf("%v", this.StartInterval), "Duration", "types.Duration", 1) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -23363,6 +23389,42 @@ func (m *HealthConfig) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 6:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field StartInterval", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.StartInterval == nil {
m.StartInterval = &types.Duration{}
}
if err := m.StartInterval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:]) skippy, err := skipTypes(dAtA[iNdEx:])

View File

@ -1103,6 +1103,12 @@ message HealthConfig {
// which health check failures will note count towards the maximum // which health check failures will note count towards the maximum
// number of retries. // number of retries.
google.protobuf.Duration start_period = 5; google.protobuf.Duration start_period = 5;
// StartInterval is the time to wait between checks during the start period.
// Zero means inherit.
// Note: can't use stdduration because this field needs to be nullable.
google.protobuf.Duration start_interval = 6;
} }
message MaybeEncryptedRecord { message MaybeEncryptedRecord {

View File

@ -59,10 +59,4 @@ const (
// AnnotationBaseImageName is the annotation key for the image reference of the image's base image. // AnnotationBaseImageName is the annotation key for the image reference of the image's base image.
AnnotationBaseImageName = "org.opencontainers.image.base.name" AnnotationBaseImageName = "org.opencontainers.image.base.name"
// AnnotationArtifactCreated is the annotation key for the date and time on which the artifact was built, conforming to RFC 3339.
AnnotationArtifactCreated = "org.opencontainers.artifact.created"
// AnnotationArtifactDescription is the annotation key for the human readable description for the artifact.
AnnotationArtifactDescription = "org.opencontainers.artifact.description"
) )

View File

@ -52,7 +52,7 @@ type Descriptor struct {
// Platform describes the platform which the image in the manifest runs on. // Platform describes the platform which the image in the manifest runs on.
type Platform struct { type Platform struct {
// Architecture field specifies the CPU architecture, for example // Architecture field specifies the CPU architecture, for example
// `amd64` or `ppc64`. // `amd64` or `ppc64le`.
Architecture string `json:"architecture"` Architecture string `json:"architecture"`
// OS specifies the operating system, for example `linux` or `windows`. // OS specifies the operating system, for example `linux` or `windows`.
@ -70,3 +70,11 @@ type Platform struct {
// example `v7` to specify ARMv7 when architecture is `arm`. // example `v7` to specify ARMv7 when architecture is `arm`.
Variant string `json:"variant,omitempty"` Variant string `json:"variant,omitempty"`
} }
// DescriptorEmptyJSON is the descriptor of a blob with content of `{}`.
var DescriptorEmptyJSON = Descriptor{
MediaType: MediaTypeEmptyJSON,
Digest: `sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a`,
Size: 2,
Data: []byte(`{}`),
}

View File

@ -24,9 +24,15 @@ type Index struct {
// MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.index.v1+json` // MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.index.v1+json`
MediaType string `json:"mediaType,omitempty"` MediaType string `json:"mediaType,omitempty"`
// ArtifactType specifies the IANA media type of artifact when the manifest is used for an artifact.
ArtifactType string `json:"artifactType,omitempty"`
// Manifests references platform specific manifests. // Manifests references platform specific manifests.
Manifests []Descriptor `json:"manifests"` Manifests []Descriptor `json:"manifests"`
// Subject is an optional link from the image manifest to another manifest forming an association between the image manifest and the other manifest.
Subject *Descriptor `json:"subject,omitempty"`
// Annotations contains arbitrary metadata for the image index. // Annotations contains arbitrary metadata for the image index.
Annotations map[string]string `json:"annotations,omitempty"` Annotations map[string]string `json:"annotations,omitempty"`
} }

View File

@ -39,11 +39,3 @@ type Manifest struct {
// Annotations contains arbitrary metadata for the image manifest. // Annotations contains arbitrary metadata for the image manifest.
Annotations map[string]string `json:"annotations,omitempty"` Annotations map[string]string `json:"annotations,omitempty"`
} }
// ScratchDescriptor is the descriptor of a blob with content of `{}`.
var ScratchDescriptor = Descriptor{
MediaType: MediaTypeScratch,
Digest: `sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a`,
Size: 2,
Data: []byte(`{}`),
}

View File

@ -70,6 +70,6 @@ const (
// MediaTypeImageConfig specifies the media type for the image configuration. // MediaTypeImageConfig specifies the media type for the image configuration.
MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json" MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json"
// MediaTypeScratch specifies the media type for an unused blob containing the value `{}` // MediaTypeEmptyJSON specifies the media type for an unused blob containing the value `{}`
MediaTypeScratch = "application/vnd.oci.scratch.v1+json" MediaTypeEmptyJSON = "application/vnd.oci.empty.v1+json"
) )

View File

@ -25,7 +25,7 @@ const (
VersionPatch = 0 VersionPatch = 0
// VersionDev indicates development branch. Releases will be empty string. // VersionDev indicates development branch. Releases will be empty string.
VersionDev = "-rc.3" VersionDev = "-rc.4"
) )
// Version is the specification version that the package types support. // Version is the specification version that the package types support.

6
vendor/modules.txt vendored
View File

@ -49,7 +49,7 @@ github.com/docker/distribution/registry/client/transport
github.com/docker/distribution/registry/storage/cache github.com/docker/distribution/registry/storage/cache
github.com/docker/distribution/registry/storage/cache/memory github.com/docker/distribution/registry/storage/cache/memory
github.com/docker/distribution/uuid github.com/docker/distribution/uuid
# github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible # github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible
## explicit ## explicit
github.com/docker/docker/api github.com/docker/docker/api
github.com/docker/docker/api/types github.com/docker/docker/api/types
@ -172,7 +172,7 @@ github.com/moby/buildkit/util/appcontext
# github.com/moby/patternmatcher v0.5.0 # github.com/moby/patternmatcher v0.5.0
## explicit; go 1.19 ## explicit; go 1.19
github.com/moby/patternmatcher github.com/moby/patternmatcher
# github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05 # github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5
## explicit; go 1.18 ## explicit; go 1.18
github.com/moby/swarmkit/v2/api github.com/moby/swarmkit/v2/api
github.com/moby/swarmkit/v2/api/deepcopy github.com/moby/swarmkit/v2/api/deepcopy
@ -199,7 +199,7 @@ github.com/morikuni/aec
# github.com/opencontainers/go-digest v1.0.0 # github.com/opencontainers/go-digest v1.0.0
## explicit; go 1.13 ## explicit; go 1.13
github.com/opencontainers/go-digest github.com/opencontainers/go-digest
# github.com/opencontainers/image-spec v1.1.0-rc3 # github.com/opencontainers/image-spec v1.1.0-rc4
## explicit; go 1.18 ## explicit; go 1.18
github.com/opencontainers/image-spec/specs-go github.com/opencontainers/image-spec/specs-go
github.com/opencontainers/image-spec/specs-go/v1 github.com/opencontainers/image-spec/specs-go/v1