From bcb106c3c809df72dd81f575bbd5fcab0ae9c516 Mon Sep 17 00:00:00 2001 From: Lintong Jiang Date: Fri, 4 Dec 2020 10:07:46 -0800 Subject: [PATCH] Changed CRD version back to v1beta1 for supporting vsphere plugin in pre-1.16 k8s clusters (#243) (#244) Signed-off-by: Lintong Jiang --- hack/crd-gen/main.go | 8 +- hack/update-generated-crd-code.sh | 2 +- .../clientset/versioned/fake/register.go | 2 +- pkg/generated/crds/crds.go | 22 +-- ...r.cnsdp.vmware.com_backuprepositories.yaml | 67 +++---- ...sdp.vmware.com_backuprepositoryclaims.yaml | 59 +++--- ...r.cnsdp.vmware.com_clonefromsnapshots.yaml | 151 +++++++-------- ...iver.cnsdp.vmware.com_deletesnapshots.yaml | 89 ++++----- ...ckupdriver.cnsdp.vmware.com_snapshots.yaml | 165 ++++++++-------- .../datamover.cnsdp.vmware.com_downloads.yaml | 175 ++++++++--------- .../datamover.cnsdp.vmware.com_uploads.yaml | 181 +++++++++--------- .../backupdriver/v1alpha1/backuprepository.go | 3 - .../v1alpha1/backuprepositoryclaim.go | 5 - .../v1alpha1/clonefromsnapshot.go | 5 - .../backupdriver/v1alpha1/deletesnapshot.go | 5 - .../listers/backupdriver/v1alpha1/snapshot.go | 5 - .../listers/datamover/v1alpha1/download.go | 5 - .../listers/datamover/v1alpha1/upload.go | 5 - 18 files changed, 464 insertions(+), 490 deletions(-) diff --git a/hack/crd-gen/main.go b/hack/crd-gen/main.go index eb38eb8e..edd759ae 100644 --- a/hack/crd-gen/main.go +++ b/hack/crd-gen/main.go @@ -44,7 +44,7 @@ import ( "io/ioutil" apiextinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install" - apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/client-go/kubernetes/scheme" ) @@ -56,10 +56,10 @@ var rawCRDs = [][]byte{ var CRDs = crds() -func crds() []*apiextv1.CustomResourceDefinition { +func crds() []*apiextv1beta1.CustomResourceDefinition { apiextinstall.Install(scheme.Scheme) decode := scheme.Codecs.UniversalDeserializer().Decode - var objs []*apiextv1.CustomResourceDefinition + var objs []*apiextv1beta1.CustomResourceDefinition for _, crd := range rawCRDs { gzr, err := gzip.NewReader(bytes.NewReader(crd)) if err != nil { @@ -75,7 +75,7 @@ func crds() []*apiextv1.CustomResourceDefinition { if err != nil { panic(err) } - objs = append(objs, obj.(*apiextv1.CustomResourceDefinition)) + objs = append(objs, obj.(*apiextv1beta1.CustomResourceDefinition)) } return objs } diff --git a/hack/update-generated-crd-code.sh b/hack/update-generated-crd-code.sh index 0f010446..dc69b07d 100755 --- a/hack/update-generated-crd-code.sh +++ b/hack/update-generated-crd-code.sh @@ -44,7 +44,7 @@ ${GOPATH}/src/k8s.io/code-generator/generate-groups.sh \ controller-gen \ crd \ - crd:crdVersions=v1 \ + crd:crdVersions=v1beta1 \ output:dir=pkg/generated/crds/manifests \ paths=./pkg/apis/... diff --git a/pkg/generated/clientset/versioned/fake/register.go b/pkg/generated/clientset/versioned/fake/register.go index 0812bcc1..caac16f1 100644 --- a/pkg/generated/clientset/versioned/fake/register.go +++ b/pkg/generated/clientset/versioned/fake/register.go @@ -30,7 +30,7 @@ import ( var scheme = runtime.NewScheme() var codecs = serializer.NewCodecFactory(scheme) - +var parameterCodec = runtime.NewParameterCodec(scheme) var localSchemeBuilder = runtime.SchemeBuilder{ backupdriverv1alpha1.AddToScheme, datamoverv1alpha1.AddToScheme, diff --git a/pkg/generated/crds/crds.go b/pkg/generated/crds/crds.go index 3a180def..e6218977 100644 --- a/pkg/generated/crds/crds.go +++ b/pkg/generated/crds/crds.go @@ -24,26 +24,26 @@ import ( "io/ioutil" apiextinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install" - apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/client-go/kubernetes/scheme" ) var rawCRDs = [][]byte{ - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4V\xcdn+7\x0f\xdd\xcfS\x10\xf7[d\x13\x8fo\xf0uQ\xcc\xee\xd6i\x81\xa0\u007fA\x12dStAK\xb4\xcdF#\xa9\"ǩ\xfb\xf4\x85\xa4\x19{\xe2\xf8\x16\xd94\x9b`H\x8a\xa4\xce9\xa4\xdc,\x16\x8b\x06#?S\x12\x0e\xbe\x03\x8cL\u007f)\xf9\xfc%\xed˷\xd2rX\xeeo\x9a\x17\xf6\xb6\x83\xd5 \x1a\xfa\a\x920$C\xb7\xb4a\xcf\xca\xc17=)ZT\xec\x1a\x00\xf4>(f\xb3\xe4O\x00\x13\xbc\xa6\xe0\x1c\xa5Ŗ|\xfb2\xaci=\xb0\xb3\x94J\xf2\xa9\xf4\xfes\xfbM\xfb\xb9\x010\x89\xca\xf1'\xeeI\x14\xfb\u0601\x1f\x9ck\x00<\xf6\xd4\xc1\x1a\xcd\xcb\x10\x13\xc5 \xac!1I[M6\xf1\x9eRk\xbc\xd8\xd8\xee\xfbWLԚ\xd07\x12\xc9\xe4V\xb6)\fq:\xff\xb5\xe0Zel\xbd^\xfb\xbbr\xe0a*x(.Ǣ?^t\xffĢ%$\xba!\xa1\xbb\xd4pq\v\xfb\xed\xe00\xbd\v\xc8\x05ĄH\x1d\xac\xdc J\xa9\x01\x18q*\x8d-F$\xf67\xe8\xe2\x0eoj:\xb3\xa3\x1ek\xdf\x00!\x92\xffr\u007f\xf7\xfc\xff\xc77f\x00Kb\x12G-\x98_\xbdk\x1eX\x00\xc1Բ\x8b҅\x8542\xde\x02\xdci\x8e8Rja}\x00\xddј\an\v\xaa\x80>\x1f\xdaP\"oj\fO\x8f{6\xfe\x13\x00\x00\xff\xff\xb3\x96\xf8\xea\x95\t\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4U?s#\xb7\x0f\xed\xf7S`\xeeW\\sZ\x9d\xe7\x97\"\xb3\x9d\xa3Kq\x93?\xe39{\xdcdR@$$!\xe6\x92\f\x80\x95\xe2|\xfa\fII\x96e)\xe3&\xdb-\x00\x02\x0fx\x8f`7\x9b\xcd:\xcc\xfcH\xa2\x9c\xe2\x00\x98\x99\xfe2\x8a\xe5O\xfb\xa7\xef\xb5\xe74\xdf\xdetO\x1c\xfd\x00\x8bI-\x8d\xdfH\xd3$\x8e\xbeЊ#\x1b\xa7؍d\xe8\xd1p\xe8\x000\xc6dX\xccZ~\x01\\\x8a&)\x04\x92ٚb\xff4-i9q\xf0$5\xf9\xa1\xf4\xf6s\xff]\xff\xb9\x03pB\xf5\xf8\x03\x8f\xa4\x86c\x1e N!t\x00\x11G\x1a`\x89\xeei\xcaB9)[\x92g\x17\x90G\xed\x9b\xd9\voIz\x17\xd5\xe7~;\xeeP\xa8wi\xec4\x93+p֒\xa6|\xc8q-\xb8U\xda\xc3o\xad\xffP\x0f|;\x16]\x94\xa2\xd5\x1fX\xed\xa7\xeb1?\xb3Z\x8d\xcba\x12\f\xd7\xe0\xd7\x10帞\x02ʕ\xa0\x0e@]\xca4\xc0\xaf\x05^FG\xbe\x03\xd8O\xb0\u009d\xedg\xb4\xbd\xc1\x907x\xd3Һ\r\x8dغ\x01H\x99\xe2\xed\xdd\xd7\xc7\xff߿2\x03xR'\x9c\xad\xb2\xf1\xf1r7\xc0\n\x93\x92\aK\xe0\v\xff4G\xe7H\x15\xf0́\x1e\xe0\x16\"\xed\xde8`\xc7!\xc0\x92\x1a\xd3\xe4\x01vl\x1b\xb0\r\xc1KЗ\xca\xcd'X\by\x8a\xc6\x18\x00\xa3\x87\xdb\x10Ҏ\xfcq\x00ڒ\x11ۆ\xa4\xe4,Y\xe2\xc1\v\xb6A\xab\xa6s\f\xf7\x99\x1c\xc0\x0e\xf5\b\x82#$\xa9\xb1ok\x14\xf5\xf0\x8a[Եt=\xc0\xc3\x05\x17\xac\x98\x82o0\v\xc0)\xfbZ\xef\xd8sA\viu1\xef\x01]\xff\xf1HS\x96\x94I\x8c\x0f\xfal\x1f\x9ec>u\x02\xb0\xd1xf\x02\xb0\xe7\xa2%5\xe1\xb8\xee\xde:P\x04\x9fOK\xbc\xec\x89WѯuS\xa4բ\xf6\x02\xd1\xda\xd8^\xa4\xe4\xf7jl\r\xb3\x82P\x16R\x8ame\x143FH\xcb?\xc8Y\x0f\xf7$\xe5 \xe8&M\xc1\x97M\xb2%1\x10ri\x1d\xf9\xefc6-z,e\x02\x1a\xa9\x01G#\x89\x18`\x8ba\xa2OU9#>\x83P\xc9\vS<\xc9PC\xb4\x87_\x92\x10p\\\xa5\x016fY\x87\xf9|\xcdv\u0601.\x8d\xe3\x14ٞ\xe7u\x9d\xf1r\xb2$:\xf7\xb4\xa50W^\xcfP܆\x8d\x9cMBs\xcc<\xab`c݃\xfd\xe8\xff'\xfb\xad\xa9\x1f/\x8c\xfa\r\a\xcb3\x1d\f\xef9T7տPS\xb6T\xb9\xc0\xb8?\xdaZ\u007fa\xa0\x98\xea%\xfc\xf1\xfe\x01\x0ex\x1bK\x8d\x90\x97P}\xe1\xa6̕㊤E\xae$\x8d5\vE\x9f\x13\xc7v\xfd\\`\x8a\x06:-G\xb6B\xfa\x9f\x13\xa9\x15\xdazX\xd4\x17\xe3\xe4j\xf4\xf05\xc2\x02G\n\vT\xfaϙ)\xd3\xd4Y\x19\xde\xfb\xb89}\xec\u0383ۜN\x1ce\x85\xe7\xc6\xe1\x1d\n\x8ed$g\x17\x11\xbd\xaf\xaf(\x86\xbb\x8bW\xfb\x1dW\xf5b\xd9\xd3=\xfa\x0e\xfd\x14NX\xe8DA\xb3\xcb\xe8\xcf\xfc\xa7e\xba\xab\xb0\xb4\xa8\xc5\x0f`2Q3X\x12\\\xd3ޢ\x866ծ\xcbs\x92m\xbf\xc9N_\xe0\x0f\x1f^=\xa3\xf5ץ\xd8f\xa7\x03\xfc\xf6{ײ\x92\u007f<\xbc\x88\xc5\xf8O\x00\x00\x00\xff\xff(|\x8f\x15\xe4\b\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4XM\x93\xdb6\x0f\xbe\xfbW`\xf2\x1e\xf6\xedL,'\xd3\x1e:\xbee\xbcM\xebi\x93\xeed3{\xe9\xf4@\x91\xb0ŮD\xb2\x04\xe4\xd4\xed\xf4\xbfw@J\xb6,\xd9\xebl?|\x13\t\x02\xe0\x03\xe0\x01\xe8\xd9|>\x9f\xa9`\x1f0\x92\xf5n\t*X\xfc\x8d\xd1\xc9\x17\x15\x8f_Sa\xfdb\xf7z\xf6h\x9dYª%\xf6\xcd\a$\xdfF\x8d\xb7\xb8\xb1β\xf5n\xd6 +\xa3X-g\x00\xca9\xcfJ\x96I>\x01\xb4w\x1c}]c\x9co\xd1\x15\x8fm\x89ekk\x831)\xefM\xef^\x15_\x15\xaff\x00:b:\xfe\xd16H\xac\x9a\xb0\x04\xd7\xd6\xf5\f\xc0\xa9\x06\x97\xa0k\xefp\x13}CN\x05\xaa\xe0\x12ދ;Ai43\x80\x0e\xad\xe4\u07bc\xc3c\xf7ZաR\xaf\xb3J]a\xa3\xb2\xf7\x00>\xa0{s\xb7~\xf8\xf2\xfed\x19\xc0 \xe9h\x03'\xe4o\xa67\x00K\xd0\x12\x1a`\x9fだ\xc0\xe1'\x88]\xf0\xe1\xff\xbc\x0fV\xab\xbaރ\x82\xbb\x87\xd5\x17 \ue0c2\xfe\x06\x05\xc0\x8fN#p\x85Ы\xbd\xb9!\xb8\xab\x14!T\x8a\x00\x1a\xbf\xcb&\xfa}F\x036\x19ߩ\xda>a=\xd9\x12ͽ5X\xdf\xde\x1cn\x17\xa2\x0f\x18\xd9\xf6a̿A\x9e\x0fV\xc7X\b\\Y\n\x8c$8R\xb2\xd3\x01\x8f\xa6C\x18\xfc\x06\xb8\xb2\x04\x11CDB\x97S^\x96\x95\x03_\xfe\x82\x9a\v\xb8\xc7(\a\x81*\xdf\xd6F*a\x87\x91!\xa2\xf6[g\u007f?h#\xb9\xa9\x98\xa9\x15#1X\xc7\x18\x9d\xaa\x05\x86\x16_\x82r\x06\x1a\xb5\x87\x88\xa2\x17Z7АD\xa8\x80w>\"X\xb7\xf1K\xa8\x98\x03-\x17\x8b\xad徆\xb5o\x9a\xd6Y\xde/R9ڲe\x1fiap\x87\xf5\x82\xecv\xae\xa2\xae,\xa3\xe66\xe2B\x05;OκT\xc7Ec\xfe\xd7CO7'\xe0\xf1^r\x948Z\xb7\x1dl\xa4\xc2y\x02e)\x1c\t\xb3\xea\x8e\xe6[\x1c\xc1\x94%\xc1\xe3\xc37\xf7\x1f\x8fQO\x80gl\x8f\xa2t\x84Y \xb2n\x831K\x1e\x92\x04\x9d\t\xde:N\x1f\xba\xb6\xe8\x18\xa8-\x1b\xcb\x12\xbf_[$\x96\b\x14\xb0J\xe4\x05%B\x1b\x8cb4\x05\xac\x1d\xacT\x83\xf5J\x11\xfe\xe7 \v\x9a4\x17\xf0>\x0f\xe6!\uf3853N\x83\x8d\x9e\x06/\xc4d\xc2\x01\xf7\x01u:d7\x16\xe9\x98֒\xab%f\xca2㪇\xf5m\x01\xf0\xb1Bx\xd7\xf9\x96\xa2R\"\xf8\x1d\xc6h\x8dA\xf72\xc5a\xe3c\xa38\xd7\x11\x1en\x02\xc7\bw\xa6u\x01\xf0\xe6n\xfd\xad\x90w*\x84\x94;ys\x9f\xce\xca}E\xcfѽL\x1a\xc5\xc9eϓBG\fI\xfbx}\x04\xd0\xc1\x89\xce\xe5CZ\x96(\xe9\x9am\x9a\x89\x8e\v\xa1\x93_\xeeD\x1f0x\xb2\xec\xe3\xfe\x8a\x03\x82j>\"\xd9ߝ\x91\xebF\xe4hq\x87\xa7\x8c(\x91\xe9b\xe1\xfa\x1er\xc2Ƌ\xbb\x87\x15\xd4v\x87\x04\xd6A\xd3\x12C\xa5v\bJk\xa4\x03%\x1dM=\xe7j);V\xcai\xac\xafܪ\xf7&\v\x83u\xc6ja\xc1\xbe2S<\xf3\x9ew[/P\x0fZ\xcc\xe8\xb4VNr\x8d\x90A1(\xb7g\xdbH\x806R\xb7'\xe8DT\xba\x92\xb4\x06\xc6\xd8X!\xdbP\xa5\x1a\x87\xf5\xe6TTzU\x167\x13\xf1\v\x98\x94\xdeר\xdchwʊ\x134zb\x1c\xe6\xf5?O\xb4\xf3ˇ\xbeh\xbfS\xce\xd4ל\x91xVIp\xd2\\\xb8R]\xf8\a\xfdvHO\x13͗\x13\x15\x9elv\x13\xaf\x0e\r\xafC)\xbd\x9fR\x86\x9di\u007f\x117\x18\xd1\xe943mN\xce\xcaH\xd5\xcf\x11&7\xff\xc3g&\xbc\xd4{J\x99\xacr8\x84\xad\xdfܭ\xb3\xc5\x02\xde\xfa(\\\x0e\x9e\xab<\xdbE3\x0f*\xf2>\x05\x80^\x9eX\xebIf\x1a\xad+\x11\x83\x8b\f=A\xe63X\xfa\x88\xc7\xdf\xf1#\xbd\xec\xae\xfb!o\xc3\xde\x0f9\xf2/\xfbq\x9e\xaf\xe1<\xc7\xe6e\xf1\xe2B\x99LX\xf6\xc2\xc6\xd4\xea<\xe5\xcb\xec\xe2\xa9D\x85f\xc0S\xc4>\n\x01\rV\xda\xf2\xf0\x82\xe9\x15w,\x0f\u007f\xfc9;\x12\xbe\f?\x81Ѽ\x1f\xff\v\xf0\xe2\xc5ɓ>}j\xef\x8c\xcd\u007fu\xc0O?ϲa4\x0f\xfd+]\x16\xff\n\x00\x00\xff\xff\xc0ψ[d\x11\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4V=o\xe46\x13\xee\xf5+\x06\xf7\x16n^i\xcfH\x8a@]\xb0Na$w0l\xc3M\x90\x82Kή\x18S$33\xd4\xc5\t\xf2\xdf\x03\x92\x92\xf7\xcb\xf6\xf9\x8a\xa8\x13\xe7S\xcf3\xf3PM۶\x8d\x8a\xf6\x01\x89m\xf0=\xa8h\xf1OA\x9f߸{\xfc\x81;\x1bV\xd3e\xf3h\xbd\xe9a\x9dX\xc2x\x8b\x1c\x12i\xbc\u00ad\xf5Vl\xf0͈\xa2\x8c\x12\xd57\x00\xca\xfb *\x1fs~\x05\xd0\xc1\v\x05\xe7\x90\xda\x1d\xfa\xee1mp\x93\xac3H%\xf9Rz\xfa\xd8}\xdf}l\x004a\t\xbf\xb7#\xb2\xa81\xf6\xe0\x93s\r\x80W#\xf6`С {\x15y\b\xc2\xddF\xe9\xc7\x14\r\xd9\t\xa9ӞM\xec\xa6\xf1\x8b\"\xect\x18\x1b\x8e\xa8s\x1f;\n)\xf6\xf0\xb6s-1\xf7]\xbf\xf9\xaaT\xbb\x9b\xab\x15\x83\xb3,?\xbf`\xfc\xc5ru\x88.\x91rg\x9d\x16\x1b[\xbfKNѩ\xb5\x01`\x1d\"\xf6\xf09\xb7\x10\x95F\xd3\x00\xcc\xf0\x94\x96\xda\x19\x80\xe9R\xb98\xa8˚O\x0f8\xaa\xda1@\x88\xe8\u007f\xbc\xb9~\xf8\xee\xee\xe8\x18 R\x88Hb\x97\x8f\xab\xcf\x01\xf5\a\xa7\x00\x06Y\x93\x8dR\x88\xb9\xc8\t\xab\x17\x98\xcc92ȀKkh\xe6\x1e lA\x06\xcb@\x18\t\x19}\x9d\x82|\xac<\x84\xcd逸\x83;\xa4\x1c\b<\x84\xe4L\x1e\x8e\tI\x80P\x87\x9d\xb7\u007f=gc\x90P\xca8%\xc8\x02\xd6\v\x92W\x0e&\xe5\x12\xfe\x1f\x9470\xaa' \xccy!\xf9\x83\fŅ;\xf8\x14\b\xc1\xfam\xe8a\x10\x89ܯV;+\xcbX\xeb0\x8e\xc9[yZ\x95\t\xb5\x9b$\x81xepB\xb7b\xbbk\x15\xe9\xc1\njI\x84+\x15m[\x9a\xf5e\xb4\xbb\xd1\xfc\x8f\xe6E\xe0\x8b#\xf0\xe4)\xb3\xc8B\xd6\xef\x0e\fe\x9c\xde@9O\x14X\x065\x87֯\u0603\x99\x8f2\x1e\xb7?\xdd\xdd\xc3R\xba\x02^\xb1ݻ\xf2\x1e\xe6\f\x91\xf5[\xa4깥0\x96,\xe8M\f\xd6Ky\xd1\u03a2\x17\xe0\xb4\x19\xadd\xfe\xfeHȒ\x19\xe8`]\xf6\x196\b)\x1a%h:\xb8\xf6\xb0V#\xba\xb5b\xfc\xcfA\xcehr\x9b\xc1{\x1ḟRt\xea\\q:0,\xe2\xf0\n'w\x11u\xa6\xa4`T\xb4o\x0f|\x0e=\x8a|y\xc3\xf2S5\xe7\x16c`+\x81\x9eN\xed'U\xef\a\x9cC2\xa3sL\xde\x06B!\x8b\x13\x96~\x16\xdd(\x94v%\xc8/\xc2Q\x1c\x16UZ\xdd<\xac\xc1\xd9\t\x19\xac\x871\xb1\xc0\xa0&\x04\xa55\xf2\xf3\x96\xed+\x9d5\xf7\n\xd0\x05\xbf\xb9\xc6\xf5\xd5\xf97\xbd\x1a\x96\xc7\xcb\x12\x9e,C{\x06Ӊy_\xeb]̊\x92\xc4op\xbbNDe\xe8\x8bc\xd5.\x9c5y\x0fn\xa6\xb4\xa8\xd8;\xa9\xd6a\x8c\x0e\x8fo\xaf\xb7\xd9^\x9fG\x141$S\xe7N\xec\x88Y?\x8fo\v\xf8\xa2x)\x96W2\xd3\xcfe\xe5/\xb8\x86X\x86\xc4h`\x1b\xe8\xa5\x1a|\xd6\xd56Ш\xa4\x87\xbc\xe4mNq\xe6\x91oa\xb5q\u0603P:7\xbf1'#2\xab\x1d~\x05\x8aOի\x8a\xe0\x1c\x02j\x13\x92\xbc\xc4\xcd\x05\xcf\xdcu\xdf\xd2I\x1c\x14\u007f\xad\x8f\x9b\xec\xb3\xdf\xfb\xfd\x9c\xe02&\xf5\xde\u007f^\xb1o\xe8\xe0\xc5q=߈\xf6X_\u03a2\n\xd7\xe6\x80\b\x96@\x19დ\xb4y\xbe\xa0\x96\xc4\xf3V\xc0\xdf\xff4\xfb\x05\xc9B\x10\x05\xcd\xe7\xd3_\x9f\x0f\x1f\x8e\xfefʫ\x0e\xde\xd8\xfas\a\xbf\xfe\xd6\xd4\xc2h\x1e\x96ߔ|\xf8o\x00\x00\x00\xff\xff\x86~\xe9IV\n\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4XOo\xe3\xc6\x0e\xbf\xfbS\x10y\x87\\by\x17o\xf1\xf0\xe0\xdb\xd6\xe9\x9f`\xbb\x8b \tr)z\x18\xcd\xd0\xd64\xa3\x19uH9\xeb\x16\xfd\xee\x05g$\xcb\xf2\xbf$E\xd77\x8dH\x0e\xf9#\xf9#\xe5\xc9t:\x9d\xa8\xc6>b$\x1b\xfc\x1cTc\xf1+\xa3\x97'*\x9e\xfeO\x85\r\xb3\xf5\xfbɓ\xf5f\x0e\x8b\x968\xd4wH\xa1\x8d\x1a\xafqi\xbde\x1b\xfc\xa4FVF\xb1\x9aO\x00\x94\xf7\x81\x95\x1c\x93<\x02\xe8\xe09\x06\xe70NW苧\xb6IJ\xb5\xce`L\xc6\xfb\xab\xd7\xef\x8a\x0fŻ\t\x80\x8e\x98\xd4\x1fl\x8dĪn\xe6\xe0[\xe7&\x00^\xd58\a\xf2\xaa\xa1*0\x15\xa5\xd2Omc\xa2]c,\xb4'\xd3\x14\xeb\xfaYE,t\xa8'Ԡ\x16\x0fV1\xb4\xcd\x1c\xce\vg\xe3\x9d\xc79\xda\xfb\xee\x9et\xe4,\xf1\xa7\xd1\xf1ϖ\xf2\xabƵQ\xb9\x1d\xbf\xd2)Y\xbfj\x9d\x8a\xc3\xf9\x04\x80thp\x0e_\xe4\xaaFi4\x13\x80\x0e\x80t\xf5\xb4\vq\xfd^\xb9\xa6R\xef\xb3%]a\xad\xb2g\x00\xa1A\xff\xf1\xf6\xe6\xf1\xbf\xf7\xa3c\x00\x83\xa4\xa3m8\x81y\xb9u\x13,AKh\x80\x03D\xfc\xbdEb\xe0J1\xa8\xadc\"\xc2\xea\t}\x01p\x93\x9e|\xe0\xadR\xad\xbcZ!p\x85`\xfd\x1a=\x87\xb8\x81\xb0\x1c\xc2\x05\xe5\r\x98\x80Y\r\xde\xde\xe4\x1b\v\xf8!DP~\x03\x81\xab\xdc\xcb\xd1L\x1b\x15y\x93REW\xa3ۤ\x81mDS\x1c\r\xf0Ln\xe1(O\x1dE\xa6\xa7+qV,\n͟\xc4\xe3\x9f\xf8\x91&\xf7\xcb~\xc8\xec\xef\xfd\x10\x95\u007fُ\x1e\xcaCO\xa6\t\xa9#\xc7\xe2ʼn\x86: \xf9\xf5m\xbdP^\xa3{\xa1\xa1\xeeG\xc2`\xbd\xb1Z\xe5\x1e\xeav\x91\x00:\xbf\v~\x15$\xfc\xde~\x01\xfb\xdaZy)9B\x06Y`\xfc\x86m-\xa0-\xa5\xf8R\x8d\xf6\x8c\x13Q\xe9\ne81\xc6\xda\xca\x1cn\xaaD\xffR\xe9#\xd1JQ'n\x0e\xc4O\xc0R\x86\xe0P\xf9\xc9\xcb\xc0O\x0f\xc8t\xef\xf5\x98\x9d^5\x03XqKg\xa6\xc0\"sR'\x98\xb7\x9c\x9dx\x85iҢ\xf3\xcai\xa0C\xdd8\x1c/\xe4\xe7s\xbe8\xd4H\xfbR4]\xfbI֔\x1f\\zV\xd4_#\\$s\x82\xd2>pIY\xb8\xdfa\x85ȎX\xa7\x03\u007f\x96!֊\xe7 \x1b\xc0TL\x1cH\xc8'\x85*\x1d\u0381c{*\xd1G\x9b\xacF\"\xb5zi\x92|\xceRyC\xeaT@\x95\xa1\xe5Q:.\xa9\xcb\xd3!\xf7\x9du\xe1\xd8\xd2pć,\xb6\x1d\x00\xfd\xad\x8c\xe6xo\x0fȕ\x1b~\x13*\xa9_^\xf0\xe7Vd\x86\x05e(S쫴o\xf87\xa1\xd1İ\x8aHGf\xe7\xf8\xf6Nl\x8bF۸\xa0\x0e\x19\xf1\xfc0\x16\\\xe8:\xf8\x13\\\xdf\xc3g=\xff\xef\xc3\x19\xfa\x96σ\x15\xc6#\x12\x1cX\xb9\xef\xe4\x96os\xc3+\x98\xfd\xe6\xfa\x95\xac\x0e7\xd7\xf9cRH\xb4D\xf4\xdb\xef\xc8\aY\x82\x9e\xadsB\xd8K\xeb\\ށ\x9e+\xcc\xfbB*\x17X\xc9W#\a\xb8\xb8\x1f\n\xf3\xe2-\xa9\xa7\xb5\xeeU\xbf\x1c\x9d\xbf#\xb7e)Y\xa5\xa9\xa3]K\x8c\x91\xae\x80d\xcf\xdc\x1d\xc6\xdd6\x13\x91\x9a\xe0M\x1aHm\x83qm)\xc4^o\xa0.\xd1*r\xb4;\x1f\xda\x1c\x95~ک\xb1\x9e\x8b\xb7\x9f3\x87&\xdfP\xf1G3x8\u007f\xa6\xe3\x9d\xff@+Q\xac\xd9\xe1?\xe2\x10\x85\xd8vN\xdar\xfb\xd1\xd8\x1b\xee\xe6\x0f\xfc\xf9\xd7d\x18E\xb2\xa87\x8c\xe6\xcb\xfe\x9f(\x17\x17\xa3\xffHң\x16\\\xf3\x1fD\xf0˯\x93|1\x9a\xc7\xfe\x8f\x109\xfc;\x00\x00\xff\xff\xbe\x95\x0f\xa8\x9a\x12\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcX\xcdo\xe3\xba\x11\xbf\xfb\xaf\x18\xbc\x1er\xa9\xe5\xb7}\x8b\xa2\xf0\xad\x9b\xec\x02A\xbbA\x10os)z\xa0ȱņ\"\xb5\x9c\xa1\xbd\xee__\f)\xd9\xf2G\xe2\xb8\xe8>_\x82P\xf3\xc5\xdf\xfc\xe6C\x9aL\xa7Ӊ\xea\xec3F\xb2\xc1\xcfAu\x16\u007f0z\xf9\x8f\xaa\x97\xbfPe\xc3l\xfda\xf2b\xbd\x99\xc3m\"\x0e\xed\x13RHQ\xe3\x1d.\xad\xb7l\x83\x9f\xb4\xc8\xca(V\xf3\t\x80\xf2>\xb0\x92c\x92\u007f\x01t\xf0\x1c\x83s\x18\xa7+\xf4\xd5K\xaa\xb1N\xd6\x19\x8c\xd9\xf8\xe0z\xfdk\xf5\xb1\xfau\x02\xa0#f\xf5o\xb6Eb\xd5vs\xf0ɹ\t\x80W-\xce\xc1\x84\x8dwA\x19\xaa\xc4e\x1b\xd6\x18+\xed\xc9tպݨ\x88\x95\x0e\xed\x84:\xd4\xe2~\x15C\xea\xe6\xf0\x86d1\xdb\xc7Z\xeey\xd7{\xc8G\xce\x12\xff\xed\xe0\xf8\xef\x968?\xea\\\x8aʍ\"ʧd\xfd*9\x15\xf7\xe7\x13\x00ҡ\xc39<\x88\xabNi\x94\xb3\xfe\xea\xd9\xf5\xb4\xbf\xdc\xfa\x83r]\xa3>\x14K\xba\xc1V\x95\xc8\x00B\x87\xfe\xaf\x8f\xf7Ͽ-\x0e\x8e\x01\f\x92\x8e\xb6\xe3\f\xe3\x10d\u007fZ#(X\xa3\xc3\x18\xa6\x9dK+\xeb!\"q\x88\xb8S\xefb\xe80\xb2\x1d0(\xbf\x11+F\xa7G\xcen$\x9e\"\x05F\xe8\x80\x04\xdc\xe0p34\xfd\x15 ,\x81\x1bK\x10\xb1\x8bH\xe8\vA\xe4Xy\b\xf5\xbfQs\x05\v\x8c\xa2\bԄ\xe4\x8c\xf0f\x8d\x91!\xa2\x0e+o\xff\xb3\xb3F\xc0!\xbbq\x8a\x91\x18\xacg\x8c^9X+\x97\xf0\x8f\xa0\xbc\x81Vm!\xa2\u0605\xe4G\x16\xb2\bU\xf05D\x04\xeb\x97a\x0e\rsG\xf3\xd9ley`\xbc\x0em\x9b\xbc\xe5\xed,\x93\xd7։C\xa4\x99\xc15\xba\x19\xd9\xd5TE\xddXF\xcd)\xe2Luv\x9a\x83\xf5\x99\xf5Uk\xfe\x10\xfb\x1a\xa1\x9b\x03\xf0x+$ \x8e֯F\x0f2\xeb\xde@Y\xe8\a\x96@\xf5\xaa\xe5\x16{0\xe5H\xf0x\xfa\xbc\xf8\x06\x83\xeb\x02x\xc1v/J{\x98\x05\"\xeb\x97\x18\x8b\xe42\x866[Ao\xba`=\xe7\u007f\xb4\xb3\xe8\x19(խe\xc9\xdf\xf7\x84Ē\x81\nns\xa9C\x8d\x90:\xa3\x18M\x05\xf7\x1enU\x8b\xeeV\x11\xfet\x90\x05M\x9a\nx\xef\x83yܥ\x8e\x85\vN\xa3\aC\x03y%'\x8b\x0e\xb5\xa4$c\x94\xdb\xe2\x1exQ=\xd0<_a\xf2\xab\x95~I\xdd\x13v\x81,\x87\xb8\x95\xfep,s\xe4\xf9ӑ\x8aX_[\x83\xd4\x1b\x93\\\x0f\x8f\x04{X\x86\xb8\xebDՉ\xbax\x1c.\"-\xa8\x94*\x9e\xc8U'Q\xbd\x82\xb2\xfc\xb4\v\x1e\x85P\v\xaf:j\x02?\xe1\x12#z}\xe9r\xb7\xa2\xf8\xe5\x9c\xe28\xc6\xdcAs\x99\xef\x1cQ/_\xee WΤ\x1e\xee=\x10\xb7\x82oM~\xdc*\x16\x8b'\xfev\rzv\xf6\x11\xdcg\xb5Dh\xa4\t\x15\xde\xe7\xb8v\x9e\x88\x15'\x02\xeb\xfb\xfa9\n\xf0*\x1c\xbb\x18\x84\xffh>{\xb6\xbc\xbd\xbf\xbb\x00\xdf\xe3\xb1\xfc\x80\x9a5R7K\x8b\xb1\xc7\x06\xf7\xb6\x01\xb3\xb0@cI\x14<\xa2)\xf7\x93\x89\xb9\x89\x96\x05l\xc0\x1f\x96r\xabY\a\x97Z\xbc\xea\"\xfd\xccُ\xf4\xb7\xef\xf1t$\x9eg@4\xe5.l\xdb\x02yo\x146\x8a@+\xe7\xa4\x01Iz)7\xb8\x1b*\x92C\xba\xe4\xdeC*w\x86O\xc2(\xd4\xc8\v\x03NE\xff\x9a[\x0e9\xbe\x98\xa7\xc5N\xf0\x8d\x04\xed(\xddW\xe4հ\xbf\xd6\xd92A\xdf\xe8m\xc3\n\xb1\xe8\x99\ue947ќ\xc3g\xa4\x1ea\xad|\x06\xb8\xafUc\xa9sj\xbb\x8b2\xef\xabRgҮ\xf7\x9dj0&S%?;\x85\xe0\xf5\x91#\xbf\x1c\xc2]\xf0g\xa8\x04\xa3ڶ\x9e\xff\xfc\xf1\xacDAX\xde3W\x18\xcfHd\xb0>\x89\x97\x9f\xe3\xe1\x95I\x0ey\xb3⸽\r\xc9\xf3ŝj\x10<\x18\xa0\xe3\x9c\r\xed\x8f21#N\x951\xb2\xf0\xa9\xa1\xe3\xde\xed;n\xdfH\x87V\x9c\x841\xe0\x917!\xbe\x80%J\x98\xdfG\xe4\xf4{\u0084}\x87\x16É\xe4\x9d3*\xfd\x92\x8d{\x03\x06\xeb\xb4ZI\xfd\xbc\xdax\xad\xe7\xdf\xfe\xf4\n0\xe7a#V\x91\xdf;\x9e\x16\a\u0097W\x8cl\xfc\x1d\v\xe7\x81\xd9\xdfwK(Ezq\x17}\xee\xc5\xde\xd8D\xfb\x024\xff\xa7\x15TF\xb1\x8d8\xfa\xe41=|g>\xd1\xca\x00\x9b\x11\x04\x12\x8fl@\xe5d\xbf\xd1*\xad\xb1c4\x0fǟ\xf4~\xf9\xe5\xe0\x8b]\xfeW\aol\xf9P\t\xff\xfcפXE\xf3<|\x96\x93\xc3\xff\x06\x00\x00\xff\xffS\x8a'\x11\"\x15\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcX\xcdr#\xb9\r\xbe\xeb)P\x9b\x83/Q{'\xbb\x95J\xe9\x96\xd5l\xaa\\\xc98S\xf6\xcc\\R9\xb0I\xb4\x9a1\x9b\xe4\x12\xa4l\xe5\xe9S ٭֏-9\x95I_l\x81\x00\b~\x00>\xa2{\xb1\\.\x17\xc2\xebo\x18H;\xbb\x02\xe15\xbeD\xb4\xfc\x8b\x9a\xa7?Q\xa3\xdd\xed\xf6\xc3\xe2I[\xb5\x82u\xa2\xe8\x86\a$\x97\x82ď\xd8i\xab\xa3vv1`\x14JD\xb1Z\x00\bk]\x14,&\xfe\t \x9d\x8d\xc1\x19\x83a\xb9A\xdb<\xa5\x16ۤ\x8d\u0090\x9d\x8f[o\u007fl~n~\\\x00Ȁ\xd9\xfc\x8b\x1e\x90\xa2\x18\xfc\nl2f\x01`ŀ+H\xde8\xa1\xa8\xe1\r\a\xb7\xc5\xd0HK\xca7\xdb\xe1Y\x04l\xa4\x1b\x16\xe4Q\xf2\xe6\x9b\xe0\x92_\xc1\x1b\x9a\xc5i\x8d\xb4\x9c\xf2k\xf6\x9f\x05FS\xfc\xebL\xf87M1/x\x93\x820S,YF\xdan\x92\x11a\x94.\x00H:\x8f+\xb8\xe7-\xbc\x90Ȳz\xe0\xbc\xe5\xb2\x1ei\xfbA\x18ߋ\x0fŏ\xecq\x10%\"\x00\xe7\xd1\xfe\xf9\xf3ݷ\x9f\x1e\x0f\xc4\x00\nI\x06\xedc\x06\xaf\x84We-\x82\x80-\x1a\fn\xe9M\xdah\v\xad\x90O\xc9O\xb6>8\x8f!\xea\xf1\xe0\xe5\x99\x15\xc2Lz\xb4\xd3\r\aS\xb4@q\x05 A\xecq<\x16\xaa\x1a?\xb8\x0eb\xaf\t\x02\xfa\x80\x84\xb6\xd4\x04\x8b\x85\x05\xd7\xfe\vel\xe0\x11\x03\x1b\x02\xf5.\x19ť\xb2\xc5\x10!\xa0t\x1b\xab\xff=y#\x88.ocDD\x8a\xa0m\xc4`\x85\x81\xad0\t\u007f\x0f\xc2*\x18\xc4\x0e\x02\xb2_Hv\xe6!\xabP\x03\x9f\\@жs+\xe8c\xf4\xb4\xba\xbd\xdd\xe88\x16\xb9tÐ\xac\x8e\xbb\xdb\\\xaf\xbaM\xd1\x05\xbaU\xb8EsKz\xb3\x14A\xf6:\xa2\x8c)\xe0\xad\xf0z\x99\x83\xb5\xb9ЛA\xfd.Զ\xa0\x9b\x03\xf0\xe2\x8e+\x80b\xd0v3[ȥ\xf6\x06\xca\\u\xa0\tD5-\xa7\u0603\xc9\"\xc6\xe3\xe1\xd7\xc7/0n]\x00/\xd8\xeeUi\x0f3C\xa4m\x87\xa1hv\xc1\r\xd9\vZ坶1\xff\x90F\xa3\x8d@\xa9\x1dt\xe4\xfc\xfd\x96\x90\"g\xa0\x81u\xeenh\x11\x92W\"\xa2j\xe0\xce\xc2Z\fhւ\xf0\xbb\x83\xcchҒ\xc1\xbb\x0e\xe691\x1d+\x17\x9cf\v#k\xbc\x92\x93G\x8f\x92S\x921\xcaL\xb8\a\x9eM\x0f,\xcfw\x18?\xa5\x15\x1f\xd0;\xd2х\xdd\xf1\xfaѮ\xbf\x1c\xa9\xb3\xe7\xadVH\xd5\x11\xe7y\\bܡs\xa1\x12P\x03_\tU\x16\f\xc9D\xed\r\x9e\x1a5'ۿ\x02\xe5>\xf6=1_\x13\xfa\xa4\x9d\xbb:\xa8\x02`\xd4\x03\xe6\u007fj@ς@\nc\xb8\xa2\xbe\xf4\b\x94+\xf6\x86\x8a\xa2&H\xe3Q\x1e\xad\xf0Ի8\xf9=\t\xa2sa\x101\xd3>.\xd9\xfe=G\xa4\xea\xfe\xee\xe3\x85\xd3=N\x8acQhŕ\xdai\f9P\x16\x8d\xde\n\x1b\"l\x9dI\x03\xbe\v\xf3\xd1\xc5\x03v\x18\xd0J\xbc2\xaeI\u007f\fώ\xb7Pf\xcb)2\x16\xd7x\x19\xe6r\x91Ԧ/\xb9(x\xb2\x9b\xd1\xf7t\xa1ݎ\x92\xf5\x03\xcb\xe0.N\xb9\x8a\xaerD\u07bc\xfa\xa5(b\"\xd0\xf6\x00\x9dw\xe1Q<\xad\x85\x95h.@\xf1u\xa6\n\xda*-\xf9\xf6\x18\x0f\xc7\x11ʲ\xe6\xec\xc61\xa3־y%\x9c\xd69\x83\xc2^E%\xf9\x9co\x90I\t\xed\xb1\xc21\x92J\b\x99y\x8b\x94oʪ\xd7\\\xc9-\xd2\r\xde\xe0\xe1\xf0\xf46D\xebS\x8b\xd3>\x15v\xcc_n\xd3b\u009d\xba\xb7\x9e\xfa\xb4\x18\xa3\x02ܢ\x05g\xa1\x13ڠ\x9a\xa6\xb6\v\xdd}&\x1e\xfa/\x1a\x9c\aF\xd1\x1a\\A\f\xe9]\xfd_\x93\xc0\xdc\xf5\xf7\xae\xbb\x84ށ\xf2\x01p\xcck\xae\xeb\x18\x81\x801\xec\xf2\xe9\x0e\xb0h\xe0!/\xb8\t\xdd:\x05\xb9\x16w\x80/\xdeY\xe6\x13a&_\x03\xca^XM\xc3i\x85\x8e\x90h\x1b\u007f\xfa\xc3+\xe7\xe5\xa1i\x83\xe1hu@\"\xb1\xb9\xc4*\x9f\x8aV\x19I\xaa\t\x88֥8k\xef\x1b\xaa\xb5\xfb\xae\x86\xb6\xf8\x123\x12\xd7\xd6\xec\xfd\x89\xc1\x88\\\x8bS\xd1\x16y외j\xe7\x17\x16ė\xf8ZF`\xfdP\xef\xcc\xe8\xa0\xd3&b\x80\xc3\x13N\xdc\xf1\xdck\xd9s+`f\xb3\x16;\x1e|f\xce9\x86\xd7\xd3\xf4=*\xd7\xf7\x82.\xa5\xf13\xeb\x9c\xe3\x1b\x1co\xa8s\x84\xc3\x0f\xda4\x9c:_\xc2=>\x9f\x91\xde\xd9\xcf\xc1m\x02\xd2i\xf3.\xc7\x1eGuf\xadl\xffk\b\xee\xb8N\xb3%\xf3o\xf2\u007f\xc9I;\xb7\x9e\xe9\xfc\x8d\xa5S\xd4ކ48\x89\xc4/v\xf7N]\u0096\x89\xed\xa3\x88⓰b\x83\x01\xacSX\n\xb0\x17\x04^˧\\h3\x94s\x05\xee\xf7`n\xd4\x04\xcfژل\r\x82\x80\x9c\xb3\xfcwf\xaa\xe7.\x8f\xfdܕ\\Σ\x91\xdc \xf6&\x8ez\xf3\x10\xc8\r\xfcj!\xc8Y\xd0q\n`\xef\xbf݁\xb0.\xf6\xf5T\xefjo_\v\xe1ReV5\xe8\x9d\x19\xef\x1e\x17\x85\x01\x9b\x86\x96\xfb\xb0\x83vǷ\xf7\xc1$\x95G\x99y-ϴ\xc5>\xfa\x88T\xc1\x95\xc2flk\x93+Mވ\xdd\x14d\x1e\xa1\xb9E\xf9J\xdb\xd3[\x1dR\xf9\xda\xcdK\xa7\x00\xbc~'\xf3\x93#\xf8\xe8\xec\x99\x12\x82C\xf2\xfe\xe3\xcfg5\xde\"\xf0\xbc\xceP\xfd»|\x9f\x1d^\x19s\xf8\xc9t\xb7v\xc9\xc6\v\x19~\x98\x14\x0f.\xca}\xc6\xf6\xc4I\xb9,\x85R<\x94\x89\x91\xa4k\xc5\x16\xea\xad2\x95\xb8N\xc0b|v\xe1\t4Q*\xe9b\xe9o\t\x13\xceނ\x12\xf1\x9bo\x10\xf2)\xfb\xb5\n\x14\xb6i\xb3\xe1\x9e\xf9\x1fި\x14E\x88\xd7^f\x8f\aʗf\xaf\xec\xfa\x8aw\xa4\x03\xa7\xff\xcf\x01\xeal\xa1\xf0\xa5\xa9\x03\xce>x,\x0fߘO\xac\xf2\xd1\xd4ls\x8a.\xf0\x94R$\xfb\xf1ZH\x89>\xa2\xba?\xfe\x8a\xf7\xc3\x0f\a\x1f\xea\xf2O\xe9\xac\xd2\xe5\xcb$\xfc㟋\xe2\x15շ\xf1\x8b\x1c\v\xff\x13\x00\x00\xff\xff\x81b\x1b\xc9\x13\x15\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4V\xcdn#7\f\xbe\xcfS\x10\xdbC.\xf1x\x83\xf6P\xccm\xeb\xb4@п \tr)z\xa0%\xdaf\xa3\x91T\x91\xe3\xd4}\xfaBҌ\xc7N\xbcȩ\xbe\x18\xc3\u007f}\x1fI\xa9Y,\x16\rF~\xa6$\x1c|\a\x18\x99\xfeQ\xf2\xf9Kڗ\xef\xa5\xe5\xb0\xdc߬I\xf1\xa6yao;X\r\xa2\xa1\u007f \tC2tK\x1b\xf6\xac\x1c|ӓ\xa2EŮ\x01@\xef\x83b\x16K\xfe\x040\xc1k\n\xceQZlɷ/Ú\xd6\x03;K\xa9d\x98\xf2\xef?\xb7ߵ\x9f\x1b\x00\x93\xa8\xb8?qO\xa2\xd8\xc7\x0e\xfc\xe0\\\x03౧\x0e\xd6h^\x86\x98(\x06a\r\x89I\xda*\xb2\x89\xf7\x94Z\xe3\xc5\xc6v߿b\xa2ք\xbe\x91H&\x97\xb2Ma\x88\x93\xff\u05cck\x96\xb1\xf4z\xec\x1f\x8a\xc3Ô\xf0PT\x8eE\u007f\xbe\xa8\xfe\x85E\x8bItCBw\xa9\xe0\xa2\x16\xf6\xdb\xc1azg\x90\x13\x88\t\x91:X\xb9A\x94R\x03\xb0GǶ\xe0RK\v\x91\xfc\x97\xfb\xbb\xe7o\x1f͎z\xacB\x00Kb\x12\xc7b\aW\xefj\x03\x16@05\xea\xa2$\xb1\x90FB[\x80;\xcd\x16G\xc6,\xac\x0f\xa0;\x1a\xe3\xc0m\x01\r\xd0g\xa7\r%\xf2\xa6\xda\xc0\xa3\xc7(\xbb\xa0װr\xc1\xd3O)\xf4\x93\xa8\x98ߒ#\xcd\x19\x9e\x8e\xd1\x1eH\x8eeM%\x94\xd4\xc8^JV\x93ȒWF\a\x9b\x90\x00G\xa0`Fj\f8\x1fp\xac\xd0\xe6ޤ\x1a\xa52\r\xbaC\x85Wv\x0e\xd6\x04\x83\x90\x05\r\xa0\xe8^\xca\xff\x8eN\xa2\x02\xfc\xee\xdda>\x13\xa9ia\xf5 \xb0I\xa1\xaf\xfd\x11є𨀉J7\x90\x05\xf6\xf0Ź\xf0J\xf6\xb7\xd9hʉ&\x9b\x04\u007f\r\xbc)\t\x8f\x812\xe6\xe0\x83^\xf6Ϧ!R*\xe4\xd7h\x1bd\xd7^\x8d\x94ǔ\xb5\xcaS\xd3\xe6\x1f\xbe\x8d2\xab\x00X\xa9?\x13\x00\xe8!w\x9bhb\xbfmފ1%<̡\xe7\x9dqby\xdew\xb91\xab\xcd\x19\x13㬓\x05)M\v!\x03\xc1\x92\xa1O$\xe4\xeb\xde\xc8b\xf4\x10\xd6\u007f\x91\xd1\x16\x1e)eG\x90]\x18\x9c\xcd\x1d\xb2\xa7\xa4\x90Ȅ\xad\xe7\u007f\x8f\xd1d\"ҡ\x92d0\x95\x92G\x97Gg\xa0\xeb҆=\xe6^\xcbqa\xf0'\x11\x8a\x89\xb4\xf0kH\x04\xec7\xa1\x83\x9dj\x94n\xb9ܲN\xdbЄ\xbe\x1f<\xebaY&\x84׃\x86$KK{rK\xe1\xed\x02\x93ٱ\x92\xd1!\xd1\x12#/J\xb1\xbe,ö\xb7\xdfLm.W\xef@~\x83\xfd\xfa\xcd\xe0\xae\x1cr\xdf}\xe4U\xf6\xd5WY\xc9\xeb\xaa.\x80\xeaVO=\x83\x9fE\x19\xbf\x87\x1f\x1f\x9f\xe6\x89,\x04U.fS\x99iɐ\xb2ߔ\t\xe3qDr\x14\xf26\x06\xf6Z'\xd91y\x05\x19\xd6=k\xe6\xfb\xef\x81D3c-\xacʍQ\xa62ZT\xb2-\xdcyXaOn\x85B\xff;)\x19IYd\xe8>\xa6\xe5\xf4\xa2;7\xac\b\x1d\xc5y\x99\xc4J\xdd=&\xecI)\x9d\xcd\x1cZ[\xeeNt\xf7\x17\xe6\xf7Ù\xbc\x90\xeet\x01~\xd8)\xb27o\uf1bc,>\xf0˼q\xa2c\x8f-\xde/\x9a\xa3\xe6b\a\x1f\xb5\x17\xf19Ӟ\x1e\xa7\xb9x\xf4\xf9\xe9p\x83.\xee\xf0f\x96\x15(\x17\xe3\x83\xe1D\r \xb9mm\a\x9a\x06\xaa\x02\r\t\xb74JDQ\x87\xe2\x8d\xc6P\xd4\xf1h\xa7ρO\x9f\xcen\xf7\xf2i\x82\xaftJ\a\u007f\xfc\xd9Ԩd\x9f\xa7j\xb2\xf0\xbf\x00\x00\x00\xff\xff\xf9\x044Gr\t\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4U;\x8f#7\f\xee\xe7W\x10\x97\xe2\x9a\xf3\xf8\x16I\x11Lw\xf1\xa58\xe4\x81\xc3\xedb\x9b \x05-\xd16\xb3\x1aI!9v6\xbf>\x90\xe4箍\xad2\xddP\x1fɏ\xefn6\x9bu\x98\xf9\x91D9\xc5\x0103\xfdc\x14˟\xf6O?j\xcfi\xbe\xbd[\x92\xe1]\xf7\xc4\xd1\x0f\xb0\x98\xd4\xd2\xf8\x8d4M\xe2\xe83\xad8\xb2q\x8a\xddH\x86\x1e\r\x87\x0e\x00cL\x86E\xac\xe5\x17\xc0\xa5h\x92B \x99\xad)\xf6OӒ\x96\x13\aOR=\x1c\xfco?\xf6?\xf4\x1f;\x00'T\xd5\x1fx$5\x1c\xf3\x00q\n\xa1\x03\x888\xd2\x00KtOS\x16\xcaIْ<\xbb\x80\xf7\xdbq\x87B\xbdKc\xa7\x99\\\xa1\xb3\x964働[\xe0\xe6iO\xbf\x85\xfeSU\xf8vt\xba(N\xeb{`\xb5_nc~e\xb5\x8a\xcba\x12\f\xb7\xe8W\x88r\\O\x01\xe5\x06\xa8\x03P\x972\r\xf0{\xa1\x97ё\xef\x00\xb6\x18\xd8\u05cc5\xc2)S\xfc\xf4\xf5\xcb\xe3\xf7\xf7nC#6!\x80'u¹\xe2\xe0\xfdu\xb2\xc0\n\x93\x92\aK\xe0Kyi\x8eΑ*\xe0+\x85\x1e\xe0\x13Dڽz\x80\x1d\x87\x00Kj\x85$\x0f\xb0cۀm\bN\xa0\xcf5\xf5\x1f`!\xe4)\x1ac\x00\x8c\x1e>\x85\x90v\xe4\x8f\xf1i3Fl\x1b\x92b\xb3X\x89\x87W\xb0\rZ\x15\xbd\xe4p\x9f\xc9\x01\xecP\x8f$8B\x92\x8a}\xed\xa34\a\xaf\xb8\xa1n\x99\xeb\x01\x1e\xae<\xc1\x8a)\xf8F\xb3\x10\x9c\xb2\xaf\xfe\x8e1\x17\xb6\x90VW\xed\x1e\xd8\xf5\xef\xf7Eʒ2\x89\xf1\xa1\xf9ʇ/\xf9\x9e\x9e\x00\xd8h\xbc\x10\x00\xd8si\x115\xe1\xb8\xee^\x8aQ\x04\x9fO\xa6O\xf3\u007f\x86\xbc\xec\x94\xd2J\r\xb3o\t\xad\xa1\xec\xe7\x96\xbc\xa5PW\xce͂\x94eS\x06\x15\xf7j-\xe0Sދ\xa8\x0e\xdb\xcf\xf7\x0fp`\xd9j\xd3\xcap\x82\xea\xa9\"%\x9b\x1cW$\r\xb9\x924V+\x14}N\x1cۘ\xb9\xc0\x14\rtZ\x8el\xa5\xd4\u007fO\xa4V\x8a\xd5â.\xfe\xb3\x11\xe8\xe1K\x84\x05\x8e\x14\x16\xa8\xf4\xbfףdRg%uoW\xe4\xfc^]\x02[\x86\x8eⲁs\xab\xdaW\x14\x1c\xc9H.\xc6\r\xbd\xaf'\x10\xc3\xd7+\xa3\xfb\xe68^qw\xbe\x1f\xdf蔒\u007f\x16:\xf6\xca\xec:ߋ\xd7s\xf3\xddU*\xa7\x8b|\x87!o\xf0\xee$\xab\xa1\xcd\xf6w\xf8\xec\x19@K\x1b\xf9\x01L&j\x02K\x82k\xdaK\xd4Ц\xaa]\xeeI\xb6\xfd:;\xbf\xb0\xef\xde]\x9c\xc9\xfa\xebRl\xe9\xd5\x01\xfe\xf8\xb3kV\xc9?\x1e\xd8\x14\xe1\u007f\x01\x00\x00\xff\xff٩t \xc9\b\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4XA\x8f\xe3\xb6\x0e\xbe\xe7W\x10\xfb\x0e\xf3\x1e\xb0qv\xf0\xde\xe1!\xb7E\xa6\xdb\x06\xedn\a;\x8b\xb9\x14=\xd0\x12\x13\xabcK\xaa(g\x9b\x16\xfd\xef\x05%;\x8e\x1dOv\x8a\xb6\xb9\x99\xa2H\xea#\xf9Q\xcab\xb9\\.ЛG\nl\x9c]\x03zC\xbfD\xb2\xf2\xc5\xc5\xd3\xff\xb90nu\xb8-)\xe2\xed\xe2\xc9X\xbd\x86M\xcb\xd15\x1f\x89]\x1b\x14\xdd\xd1\xceX\x13\x8d\xb3\x8b\x86\"j\x8c\xb8^\x00\xa0\xb5.\xa2\x88Y>\x01\x94\xb31\xb8\xba\xa6\xb0ܓ-\x9eڒ\xca\xd6ԚB\xf2\xd0\xfb?\xbc)\xfeW\xbcY\x00\xa8@i\xfb'\xd3\x10Gl\xfc\x1al[\xd7\v\x00\x8b\r\xadA\xd5\xce\xd2.\xb8\x86-z\xae\\\xe4\xa2D\xf5\xd4z\x1d́B\xa1,k_\x1c\x9a\xcf\x18\xa8P\xaeY\xb0'%\xa1\xec\x83k\xfd\x1a\xae+g/]\xe8ݱ\xc5\xe1\xbb\xe0\x9a\x87\xceaZ\xab\r\xc7o\xe7\u05ff3\x9cu|\xdd\x06\xac\xe7BN\xcbl쾭1\xcc(,\x00X9Ok\xf8 \xe1xT\xa4E֖\xa1\x83\xbf\v\x91#Ɩ\xd7\xf0\xdb\xef\v\x80\x03\xd6F'\xf0\xf2\xa2\xf3d\xdf\xdeo\x1f\xff\xfb\xa0*j0\v\x014\xb1\n\xc6'=\xb8\xb9\x8c\x1f\fCˤ!\xba\x9c\r\x02\x04K\x9f\xa1\xf7\r\xff\x8eGo\x14\xd6\xf5\x11\x10\xee\x1f7\xff\x01\t\x1e\x10\xfa\xf8\v\x80\xef\xad\"\x88\x15Ao\xf6\xe6\x86\xe1\xbeB&\xa8\x90\x01\x1aw\xc8.\xfa\xf5H\x1aLr\x9e\xce\xf1\xbc\xf7\xe4K,\xf7\xde`{wӝ\xcd\a\xe7)D\xd3\xe3#\xbf\xb32?ɦ(\bLY\a\xb4\x146q\xf2Е'i\xe0\x04!\xb8\x1d\xc4\xca0\x04\xf2\x81\x98l.u\x11\xa3\x05W\xfeD*\x16\xf0@A6\x02W\xae\xad\xb5t\xc0\x81B\x84@\xca\xed\xad\xf9\xf5d\x8d\xe5\x8c\xe2\xa6\xc6H\x1c\xc1\xd8H\xc1b-\x00\xb4\xf4\x1a\xd0jh\xf0\b\x81\xc4.\xb4\xf6\xccBR\xe1\x02\u07bb@`\xecέ\xa1\x8a\xd1\xf3z\xb5ڛ\xd87\xb0rM\xd3Z\x13\x8f\xabԆ\xa6l\xa3\v\xbc\xd2t\xa0z\xc5f\xbfĠ*\x13I\xc56\xd0\n\xbdY\xa6`m\xeaߢ\xd1\xff:\x95\xdb\xcd\x19t\xf1(\x95\xc91\x18\xbb?\x89S\xb3<\x8b\xaf\xb4\x8a\xa4\x16\xbbm9\xfe\x01F\x11\t\x12\x1f\xbfz\xf84d:A\x9dQ\x1dTy\x00X\xc01vG!k\x9e\n\x83\xac\xf6\xceؘ>Tm\xc8F\xe9\x9d\xc6D\xc9\xdc\xcf-q\x14\xec\v\xd8$\xba\x82\x92\xa0\xf5\x1a#\xe9\x02\xb6\x166\xd8P\xbdA\xa6\u007f\x1c^A\x92\x97\x02ݗ\x01>gٱbF\xe8$\xee\to6\x13\x17\xdd\xfe\xe0I\xa5-fg\x88\x872\x96\xda,)S\x93\x9e\xf67l\xef\n\x80O\x15\xc1\xfb.\xaa\x94\x8b\x92\xc0\x1d(\x04\xa35\xd9\xd7\t\xfd\x9d\v\r\xc6\xdc7t:\x03\fy\xed\\\xab\x02\xe0\xed\xfd\xf6k!\xe9T\xf8\xa9b\xf2\xe21핳\x8a\x9d!\xbcL\x0f\xc5\xd9Q\xe7ڿ\xa3\x80dy,\x9d@sr\xdf\x05{*Ò\xa4<\xb37=\xb10\x9b*\xf9\xe59\xf3\x91\xbcc\x13]8^u-H\xe6\rR\xe7\xdd\x0e9b\xa0\x18\f\x1dh\xccw\x92\x8d\x0e\u007f\xdbχ\x11\u05ee\xee\x1f7P\x9b\x031\x18\vM\xcb\x11*<\x10\xa0R\xc4'\xda\x19\\\xbd\xf4P\xa9\x1a6h\x15\xd5W\xcf\xd3ǑU\xc1Xm\x94p\\\xdf}){y\xcdٽ\x13x\xcfF\xc7d\xb7B+\x95\xc5\x14\x01#\xa0=F\xd3HRvқ#\\\x02\xa1\xaa\xa4\x88!Rh\x8cP\xa9\xafR\x1f\xc3v7V\x95\x19\x94\xd5\xf5\x85\xfa,\x1a\xa5s5\xa1\x1d\xadM9\xef\x02\x87\x9e\xf6\xce\xeb\xf7\xaf\x95\xd5\x1c\v\xc8/\xf7\xd9\x1a\xcac\x9c\x8f\u007f\xc6V\x0f\xc6\xf6nj\xed\x99-\x92=\x13ht\xe6婹F\xc2i\xf9\x8f\x16\xcf\xcah$\x17#\xf7Nd\xa0H\x97r\x1aX7\x9c\x95\xfb\xfb\xd5΅9\xeb\xfcLje@-\xc5\xc0d]\xae\xc7Xִ\x86\x18\xda\x17'\xbf!f\xdc\xd3գ\xbf\xcf:ypw\x1b\x00K\xd7\xf6\x93\xd5Y\xba\xe1\x0e\xfb⥞S\x8f]\xf5\x9b\xaf\x89]ߨ6\x844\xc0\xa3\xdc\x05;n\xbe\x18c/\xf6\u07b7\xdf7hu}=\f\xc9\\\x95\xd4.FB\xac\xb0K\xf4\xd9|<'\x98\x89\xdd\xe7\x8a\x11\xae\f\xa7\x8bxN\x03\xaaC&\xbdhR\x15͌\xab@;\ndU\xba\xd3\xecF{\xe5\xca\xd3O|\x9d\xc7\xf4\xe93SV\x9a\x18\xa5\xdc|r\n\x84i\xdf\xdeo\xb3\xc7\x02\u07b9 <\f.V\xf9\xee\x15\xf4\xd2c\x88\xc7\x04;\xbf\x1ey\xebIc\x9a\xa1\xabY\x82g\xd8\xf5\x02\x93\x170\xec\x80ğ\x8d \xbd8\xbf\x14\x81\xbc\xd0\xfa\bd\xc3\xdf\x18\xc1\x1c\xdf\xc2\x1cSf\xa1x\x9fm\x83\tWΊ\xa7\xbe\x96\xa9&\x16\xb3\xfaë\xfd\x16k_\xe1\xed K\xf5\xbd\xec\xde\xeagː9P\x9f\x91\x14G\x17\x84\x81\xb2d p\xb9\xa4\xf8H\xfa\xc3\xf4%\xfe\xea\xd5\xe8Y\x9d>\x95\xb3\xda\xe4\xbf\x1b\xe0\x87\x1f\x17\xd9*\xe9\xc7>\x1a\x11\xfe\x11\x00\x00\xff\xffÈy\xcd\xed\x10\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4VOo\xe3\xb6\x13\xbd\xebS\f\xf6w\xc8\xe5'y\x83\xf6P\xe8Vx{\b\xda]\x04I\x90K\xd1\x03M\x8e-6\x14\xc9r\x86ަE\xbf{1\xa4dَ\x93ͥ\xbei\xfe\xfb\xbd7#5m\xdb6*\xdaGLd\x83\xefAE\x8b\u007f2zy\xa2\xee\xe9\a\xealX\xed\xaf7\xc8\xea\xbay\xb2\xde\xf4\xb0\xce\xc4a\xbcC\n9i\xfc\x84[\xeb-\xdb\xe0\x9b\x11Y\x19Ūo\x00\x94\xf7\x81\x95\x98I\x1e\x01t\xf0\x9c\x82s\x98\xda\x1d\xfa\xee)op\x93\xad3\x98J\x87\xb9\xff\xfec\xf7}\xf7\xb1\x01\xd0\tK\xfa\x83\x1d\x91X\x8d\xb1\a\x9f\x9dk\x00\xbc\x1a\xb1\a\x83\x0e\x19ɫHC`\xea6J?\xe5h\x92\xddc\xea\xb4'\x13\xbb\xfd\xf8U%\xect\x18\x1b\x8a\xa8e\x8e]\n9\xf6\xf0vpm1\xcd]\xff\xf3\xa7\xd2\xed~\xeaV\x1c\xce\x12\xff|\xc1\xf9\x8b\xa5\x1a\x10]Nʽ\x98\xb4\xf8\xc8\xfa]v*\x9d{\x1b\x00\xd2!b\x0f_d\x84\xa84\x1a\xb1\xe5M\x9a\xf0\x9e\xc6\"V\x9c\xa9\x87\xbf\xffi\x00\xf6\xcaYSЪ\xce\x10\xd1\xffx{\xf3\xf8ݽ\x1epT\xd5\b\x10S\x88\x98\xd8\xce5\xe4w\xc4\xfd\xc1\x06`\x90t\xb2\xb1T\x84+)Uc\xc0\b\xdbH\xc0\x03\xc2\xc4\x19\x1a\xa0\xd2\x06\xc2\x16x\xb0\x04\tcBB_\xf9\x17\xb3\xf2\x106\xbf\xa3\xe6\x0e\xee1I\"\xd0\x10\xb23\"\x8b=&\x86\x84:\xec\xbc\xfd\xebP\x8d\x80Ci\xe3\x14#1XϘ\xbcr\xf2g3\xfe\x1f\x9470\xaagH(u!\xfb\xa3\n%\x84:\xf8\x1c\x12\x82\xf5\xdb\xd0\xc3\xc0\x1c\xa9_\xadv\x96gU\xeb0\x8e\xd9[~^\x15m\xdaM\xe6\x90hep\x8fnEvת\xa4\a˨9'\\\xa9h\xdb2\xac/\xa2\xeeF\xf3\xbf\x03%WG\xd0\xf1\xb3\xb0G\x9c\xac\xdf\x1d\xccED\xaf\xe2+*\x02K\xa0\xa6\xb4:\xff\x02\xa3\x98\x04\x89\xbb\x9f\xee\x1f`nZ\xa1\xae\xa8.\xa1\xb4\x00,\xe0X\xbf\xc5T#\xb7)\x8c\xa5\nz\x13\x83\xf5\\\x1e\xb4\xb3\xe8Y\xf45Z\x16\xe6\xfe\xc8H,\xd8w\xb0.;\f\x1b\x84\x1c\x8db4\x1d\xdcxX\xab\x11\xddZ\x11\xfe\xe7\xf0\n\x92\xd4\nt\xdf\x06\xf8\xf8\xf4\x9c\x06V\x84\x0e\xe6\xf9\x10\\d\xe2>\xa2\x16\"\n2\xe5\xca-pK\xe2Qޥ]\x92_\xbd,w\x18\x03Y\x0e\xe9\xf9\xd4{\xd6\xefa\xc0)A\x18\x9c2D\xf7\t9Y\xdcc\x99d\xbe\r\x85®$\xf9\xf98\x94\x80\xf9\xf2\xacn\x1f\xd7\xe0\xec\x1e\t\xac\x871\x13à\xf6\bJk\xa4\xc3>-\x9d\xceF\xbb\bl\xc1l\xaa\u007f\xf3\xe9\xfc\u07fc\x92\"2\xb2\tO$߾\x80\xe6Ĺ\xf4\xf8&\x83\xf5\xf2\xbd\xc6\xe1:\xa7T$]\xc2\xeaM\xc2\xe9\xca.P\ny\xe5:\xbd\x83R\x1d\xc6\xe8\xf0\xf4]\xf4\x16\xab\xeb\x97\xf1\xe5\xbc%S\x95\xc5vD\xb9\x88\xa7\x97\x1f\xbe*\x9a[ɪ\t\xcdTV\xf9\x8aj\x8a%Ȅ\x06\xb6!]\xeaAg3mC\x1a\x15\xf7 \xab\xdbJ\x813\xbf\xbcM\xd5\xc6a\x0f\x9c\xf2\xb9\xf3U-\x8cH\xa4v\xf8&\x00\x9fkL=iS\x02\xa8M\xc8|\x89\x8b+\x9a\xb8\xea\xde;C\x1c\x14\xbd=\xc1\xadD,\x9b\xbc(\x02gA\xd4w\xf6au\xde\xd9\xfb\x82 ϵ\xde\x1e_\x8a\xb3\xf8\xe5+\xe7Z\xb98\xa8\xeb\xc5V4\xd7N\xdf6Gn\xa8\"0G,\x11\x87$\x14T˲\x0e\xb2\xe6\x91\xd1|9\xffx\xf9\xf0\xe1\xe4{\xa4<\xea\xe0\x8d\xad\x9fg\xf0\xeboM\xad\x8a\xe6q\x9eF\x8c\xff\x06\x00\x00\xff\xff\xb5\xec\xc68\x1d\n\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4XQo\xe38\x0e~ϯ z\x0f}i\x9c)np8\xe4m.\xbd\xbb-fgP\xb4E_\x16\xfb KL\xac\xad,yE:\x9d\xecb\xff\xfb\x82\x92\x1dlj\x9bv\x81Y\xbf\x99\"%\xf2\x13\xf9\x91\xf6l>\x9f\xcfTc\x9f0\x92\r~\t\xaa\xb1\xf8\x8d\xd1\xcb\x1b\x15\xcf\xff\xa6\u0086\xc5\xf6\xbaDV׳g\xeb\xcd\x12V-q\xa8\xef\x91B\x1b5\xde\xe0\xdaz\xcb6\xf8Y\x8d\xac\x8cb\xb5\x9c\x01(\xef\x03+\x11\x93\xbc\x02\xe8\xe09\x06\xe70\xce7\xe8\x8b\xe7\xb6IJ\xb5\xce`L'\xf4\xe7o?\x14\x1f\x8b\x0f3\x00\x1d1\x99?\xda\x1a\x89U\xdd,\xc1\xb7\xce\xcd\x00\xbc\xaaq\t\xe4UCU`*J\xa5\x9f\xdb\xc6D\xbb\xc5XhO\xa6)\xb6\xf5\x8b\x8aX\xe8PϨA-\x1elbh\x9b%\x9cWΛw\x1e\xe7h\x1f\xbas\x92\xc8Y\xe2\xcf#\xf1\x8f\x96\xf2R\xe3ڨ܁_IJ\xd6oZ\xa7\xe2 \x9f\x01\x90\x0e\r.\xe1\xab\x1c\xd5(\x8dFdm\x19;D\xbb\xe3\x89\x15\xb7\xb4\x84\xdf\xff\x98\x01l\x95\xb3&\xe1\x91\x17C\x83\xfe\xd3\xdd\xed\xd3?\x1ft\x85\xb5\xcaB\x00\x83\xa4\xa3m\x92\x1e\\\xee\x9d\x04K\xd0\x12\x1a\xe0\x00\x11\u007fm\x91\x18\xb8R\fj\uf5a8\xb0zF_\x00ܦ7\x1fxoT+\xaf6\b\\!X\xbfE\xcf!\xee \xac\x87`Ay\x03&`6\x03\x8f\xd9\x0e\xbfYb\xb0\x1eB4\x18E\xa2]\xf0y\xa3>\\X\xc7P\x1fxr\xd9\xc5\xd2\xc4\xd0`d\xdb\xe3!\xcfA\xa6\xeee\xc7Q\v,Y\a\x8c\xe4&R:\xae\xcb04@\t2q\x9f+K\x10\xb1\x89H\xe8s\xb6\x8aXy\b\xe5/\xa8\xb9\x80\a\x8cb\bT\x85\xd6\x19I\xe2-F\x86\x88:l\xbc\xfdm\xbf\x1bIlr\x8cS\x8c)d\xc6蕓\x8bk\xf1*\xc1S\xab\x1dD\x94}\xa1\xf5\a;$\x15*\xe0K\x88\x02\xef:,\xa1bnh\xb9Xl,\xf75\xa8C]\xb7\xde\xf2n\x91*ɖ-\x87H\v\x83[t\v\xb2\x9b\xb9\x8a\xba\xb2\x8c\x9aۈ\v\xd5\xd8yr֧\x12,j\xf3\x8f}z]\x1e@\xc7;\xc9D\xe2h\xfdf/N\x89\xff*\xbe\x92\xff\x92\x1f\xaa3\xcb\xfe\x0f0\x8aH\x90\xb8\xff\xef\xc3\xe3p\xc9\t\xea\x8c\xea\xa0J\x03\xc0\x02\x8e\xf5kI\x12\xd1L9!\xbb\xa07M\xb0\x9eӋv\x16=K\xadԖ\xa9Oe\xc1\xbe\x80Ub\x1c(\x11\xda\xc6(FS\xc0\xad\x87\x95\xaaѭ\x14\xe1\xdf\x0e\xaf Is\x81\xeem\x80\x0f\x89r\xac\x98\x11ڋ{\U0009af09\x87\x06u*[A&q\xf2\x00\xb7\x18\x1e\xd8MՒ<\x99\r\xef\xb1\td\xa5\xa6ǫG\xe7=V\xd8\x19\xc8\rv\x16\x92\xf7\x03\x87x\xb9\x89\xa4\xe8{rK\xee\xf5D\xb4\xb8{Z\x81\xb3[$!\x85\xba%\x86Jm\x11\x94\xd6H\xfb\x1a\x1av?rg\x12Ly\xfa\xb8\u007fP\xde8<\x1b\xc5\xfdH\x15\"\xae%\xfd8\x80\x82\xcfm\x89\xd1##\xed7\xbc\x02\xddƈ\x9e\xdd\x0e\x14\x88\xf7e\xcb9E%cK\x84\xd4-\r\x1a\tH\x9c_\xb7\x92!G\x1e\xbc\x86?dN\xfb\u007f\xeaM'+G\x9e\u007f\xba\xbbM\x8a\xfd\x9d\xa7\x8e\x06\xeb\x10\xc7tZ\xa2T`\x8a\v\xbdNu\xb0\x1e\xd9J\x99H~صEs\x95\x8c\xf7\xaf\x90\xaa;]L\x89}HZ*\xe7\xd3\xddm>\xb1\x80\xff\x85\b\xca\xef p\x95\xeb5\x9ay\xa3\"\xef\xd2\x05\xd1\xd5\xe84)R\x1b\xd1\x14\x13\xe1\xbdz\x9f0\xc1B\x93\x98\xf4d$n\xcanB߯\"\xf1W=H\x83\xc6[\x1eH\x17\xef=\x10\x83\xef\xe8A\x0fݱ\x0f\xf3\x84͉PN\x9f,\x98#R\x91\xa7/ٕ\xf2\x1a\xddقy\x18\xa9\x82\xf5\xc6j\x95k\xa4\x9b$\x02\xe8\xbc\x16\xfc&H\xc0\xfd\xee\x05\x1c[k\xe5%\xb1\b\x19d\xfc\xf0;\xb6\xb5\xc0\xb4\x96\x14K\x99\xd8sID\xa5+\x946\xc3\x18k+\xbd\xb4\xa9\x12\x91K>\x8fT+E\x9d\xba9Q\x9f\x04\xa4\f\xc1\xa1\xf2\xb3\xf3P\xcfO\xe8q\xb48\xe6\x9c7\x99Ȥ\x9eM\xf7\x1f\x13\xa7[\xbe3\xa3'\xee\xec\xb8c\xcc\x0fg\xee#\xfd\xe1\xefƵrM\xa5\xae\aYJ\xafy\xf7O\xe3`\x192\xa7\x9a\x03\xd2#\x0eQ\x18-K\x86\x86\"\xc3s\xc3h\xbe\x1e\xff\xba\xb8\xb8\x18\xfd\x99H\xafZ\xd0Ϳeয়gyW4O\xbd7\"\xfc3\x00\x00\xff\xff\xda`\xffX\x15\x12\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcXOo\xeb\xb8\x11\xbf\xfbS\f\xb6\x87\\jy_wQ\x14\xbeu\x93] h_\xf0\x10\xbf\xe6R\xf4@\x89c\x8b\rEj9C\xfb\xb9\x9f\xbe\x18R\xff,;\x8e\x83v7\x97\xc0\xa3\xf9\xc7\xdf\xcc\xfc\x86\xd2b\xb9\\.Tk^0\x90\xf1n\r\xaa5\xf8\x8d\xd1\xc9/*^\xffB\x85\xf1\xab\xfd\xa7\x12Y}Z\xbc\x1a\xa7\xd7p\x1f\x89}\xf3\x8c\xe4c\xa8\xf0\x01\xb7\xc6\x196\xde-\x1ad\xa5\x15\xab\xf5\x02@9\xe7Y\x89\x98\xe4'@\xe5\x1d\ao-\x86\xe5\x0e]\xf1\x1aK,\xa3\xb1\x1aC\x8a\xd0\xc7\xdf\u007f_\xfcX|\xbf\x00\xa8\x02&\xf3\xaf\xa6Abմkp\xd1\xda\x05\x80S\r\xaeA\xfb\x83\xb3^i*$d\xe3\xf7\x18\x8aʑn\x8b}sP\x01\x8b\xca7\vj\xb1\x92\xf0\xbb\xe0c\xbb\x86+\x9a\xd9m\x97k>\xe7C\x17!\x89\xac!\xfeۉ\xf8\xef\x868=jm\f\xcaN2JR2n\x17\xad\n\xa3|\x01@\x95oq\rO\x12\xaaU\x15\x8al\xaf\xac\xd1\xe9\xa89\xb8o\xd1\xfd\xf5\xcb\xe3\xcb\x0f\x9b\xaa\xc6Fe!\x80F\xaa\x82i\x93ސC'-\x11\x14\xec\xd1b\xf0\xcb\xd6Ɲq\x10\x90\xd8\a\xec\x8c\xdb\xe0[\fl\xfa\x03\xcaߤ\xea\x83l\x16\xe6N\xf2\xc8:\xa0\xa5\xceH\xc05BW-\xd4@)G\xf0[\xe0\xda\x10\x04l\x03\x12\xba\\y\x11+\a\xbe\xfc7V\\\xc0\x06\x83\x18\x02\xd5>Z-\r\xb1\xc7\xc0\x10\xb0\xf2;g\xfe3x#`\x9f\xc2X\xc5H\f\xc61\x06\xa7\xac \x15\U0004f81c\x86F\x1d!\xa0\xf8\x85\xe8&\x1e\x92\n\x15\xf0\xd9\a\x04\xe3\xb6~\r5sK\xeb\xd5jg\xb8\xef\xe7\xca7Mt\x86\x8f\xabԕ\xa6\x8c\xec\x03\xad4\xeeѮ\xc8\xec\x96*T\xb5a\xac8\x06\\\xa9\xd6,S\xb2.\xb5s\xd1\xe8?\x84\xae\xf9\xe9n\x02\x1d\x1f\xa5\xb6\xc4\xc1\xb8\xdd N\xad\xf4&\xbe\xd2Q`\bTg\x96\xf3\x1fa\x14\x91 \xf1\xfc\xf3\xe6+\xf4A3\xd4\x19\xd5Q\x95F\x80\x05\x1c\xe3\xb6\x18\xb2\xe66\xf8&yA\xa7[o\x1c\xa7\x1f\x955\xe8\x18(\x96\x8da\xa9ܯ\x11\x89\x05\xfb\x02\xee\xd3\xf4B\x89\x10[\xad\x18u\x01\x8f\x0e\xeeU\x83\xf6^\x11\xfe\xe6\xf0\n\x92\xb4\x14\xe8\xde\axJ:\xa7\x8a\x19\xa1A\xdcs\xc1\xc5JlZ\xac\xa4\x10\t\x99\xc4o#\xdcb8\xb1\xbb4K\xf2W\xaa\xea5\xb6\xcf\xd8z2\xec\xc3Q\x86\xfcTc\x16\U000e7641x\xde\x1b\x8dԹ\x92\xda\xf6\x8f\x04k\xd8\xfa0\x90Iqf.\xf1\xfa#\b\x97\xe5\xa1\xc43\xbdb\x96\xd3ET\x13c[\xefP\x9ag\xe3TK\xb5\xe7g\xdcb@W]?ֽ\x98\xfdr\xc9l\x9a]\xa2\xbf4\xcaC\x18\xea\xf4s\xf6r\xd8Ծ\xfd\x89\xfb\x16-\xe0k\x9d\x1e7\x8a\xc5\xe3Y\xbc\x81]W\x17\x1f\xc1c2\x8b\x84Z\x88&wx\xcak\x88D\xac8\x12\x18\xd7M\xca,\xc1\x9b\x11l\x83\x97.G\xfd\xb3c\xc3\xc7LJ\xab\xc0}\x99k\xf7x\x19-\xb3\xb15\x18:Tp\xf4\f\x98\x94\x05\x14Cb\xe0\x10u>\x99,\xbaC0,0\x03~3\x94\xe8d\xefml\xf0\xe6#t{d\xdc\xc2\xd7N\xf0\x05\x9b&\xc3ܹ\x84\x83\"\xa8\x94\xb5B/RRJ\xf4uGY\xb3/\x91\x9c\xb8/\xdf\xe0x\x96Dn\x86\xb4\xdfq)ַ\x9e\xae\xaf\xe8;\x95\xd9\fjWJ2\xb4o7w\x1f\x02\xfa2c\xa56|\x93\xb3\xfaK\xc0\xa6\xeb֞\xbdBHĞ\xa5\xb2\x82\a\xcd\xe2\x06\x1a\xab|\xd3Z<\xbdy]\x1d\xf7s\xfd\xf3\xb2+7\x0eW*{6\x92ʏ\xf6Cݳ\xb9\xf4\xf6\x1e\x1dx\a[e,\xeaɕ\xef\x9d~\xb9\x90\x13}\xb0e䮩J\x8bk\xe0\x10o\xee\xa7\x06\x89\xd4\xee:?~\xce:y\xedw\x06\xa0J\x1f\xf9\x84\x84\xee\xa8+\xe1ͣ\xea\xf0\x1b?#\x87\xe3m\x85{:S\xefof%\x0e\x95\xcbr\xae\x85j\x9d6UO\x95\x12\v\x82X'\xc0g\x05\x82\xfb\xe7\x02\xfe\xd1\x11\xec\xd6X\xc6\x00\xf3\xf3\xf5t\x0e\x87\xdaT\xb5t\x04&\xc6-q+\xe40\t y\xccA\xf8m\xca\xd7֊\xae\x17\xef\x8bh\\\x1a\xb5a\xdd^\x9a5\xf9C\x17\x9b\xb9\xeb%<\xe1\xe1L\xf6\xe8\xbe\x04\xbf\vH\xf3\x9e]\xf6\x8d\x8d\xfa\xecI\xaa\xe4\x99\xf4\x97T\x97\x0f\xac\xab\nI^\\\x9e\xbc\xbe\x8e\x83\xcc߃b\xf5Y9\xb5\xc3\x00\xcek\xccmR+\x82\xd6T\xaf\xa8!\xb6'\x88\xa4N\x19ct+\xeb`\xac\x9d\xdc4A\x11\x90\xf7N\xfe\x9f\x18\x9b\xa9۹\xa7\xc7\x0e\xfbIF\x95\xb4\xb2\xbb\xe3^\xef4\r\xf2\x8d,\"Eށ\xe1!\x891By\x04\xe5<\xd7\xdd\xd9>\xb2\xf2S\xe9\xde\xdb\xf4I\tjo{\x9a\xf4\xac,\xb8ؔ2+[(\x8f\x8ct\xbaJ\xd2mi\xdaw\xa3v\xbfRS\xe2\x8c\xd4a[)\x97\xa0\xed&Q\x1bj\xad:\x0e9\xa6[\xa5̑\x90\xef\xc8@\xbd3\xd9\x0f\xe9\xd9\xfc\xf0o\xad\x0e\xf9K\xe1\x1f\xbc;k\x1f\x98L\xadq\xfc\xe7\x1f/<Ϩ\xca\xfb\xde\x0e\xc3\xd9\xf3\x04\xd1O\xe2\xff\xff\xed\xfb\xe2\xf6\x85t\xfb\xe1p\xbc\xf7\xd1\xf1;\xf7\x9e^\xedd\xf5M\xeb\xd3\x13\x19\xa5\xf6\v\xb8TZ\xcbuL\xf5\xdc\xf90rgG\x89=\xa9F\xe9\x0ep\xc8\a\x1f^\xc1\x10ELo\b\"\xfd5bĎk\xc5q$y\xeb\v\xaazMΝ\x06\x8de\xdc\xeddJޠP\xe3\xf8\x87?]\x04\xe4\x12X\xc4*\xf0m\vfs\xa2\xfa\xfe\xa5 \xb9\xbe\xe12x\xe2\xf6\xf7\xd9\xeby\x00߹%\xbetJW\xee\x88\xddh\xe9\xff\xf9r(\xcb\xd3\x04\x1c>-,\xa7o\xa93\xfd\xf1\xdb\xda'e\xdbZ}\x1aei\x92\x96\xdd\x17\xb5\xc9c\xc8\xf8\xeb\tJ\x92\xb8\\m\xb2d\xbc\x9a\xaa\xaa\u0096Q?\xcd?\x9f}\xf7\xdd\xc9ױ\xf4\xb3\xf2N\x9b\xfcQ\x10\xfe\xf9\xafE\xf6\x8a\xfa\xa5\xcfF\x84\xff\r\x00\x00\xff\xff\xba\x90\xfd\xf5\x93\x14\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcXOo#\xbb\r\xbf\xfbS\x10\xaf\x87\\\xea\xc9۾\x87\xa2\xf0\xad\xcf\xfb\n\x04\xed\xa6\x8bxw/E\x0f\x1a\x89\xe3Q\xa3\x91\xf4Dɉ\xfb\xe9\vJ\x9a\xf1\xf8O\x1c\x17\xd8v.\x89)\x8a\xa2~$\u007f\xe4\xccb\xb9\\.\x84\xd7\xdf0\x90vv\x05\xc2k|\x8dh\xf9\x175\xcf\u007f\xa2F\xbb\xfb݇\x16\xa3\xf8\xb0x\xd6V\xad`\x9d(\xba\xe1\tɥ \xf1#v\xdaꨝ]\f\x18\x85\x12Q\xac\x16\x00\xc2Z\x17\x05\x8b\x89\u007f\x02Hgcp\xc6`Xn\xd16ϩ\xc56i\xa30\xe4\x13\xc6\xf3w?6?7?.\x00d\xc0\xbc\xfd\x8b\x1e\x90\xa2\x18\xfc\nl2f\x01`ŀ+H\xde8\xa1\xa8\xe1\x03\a\xb7\xc3\xd0HK\xca7\xbb\xe1E\x04l\xa4\x1b\x16\xe4Q\xf2\xe1\xdb\xe0\x92_\xc1\x15\xcdb\xb4zZn\xf95\xdb\xcf\x02\xa3)\xfeu&\xfc\x9b\xa6\x98\x17\xbcIA\x98ɗ,#m\xb7Ɉ0J\x17\x00$\x9d\xc7\x15<\xf2\x11^Hd\xd9N\x18\xad\xf2\x05ˡΣ\xfd\xf3\xe7\x87o?md\x8f\x83(B\x00\x85$\x83\xf6Y\xaf\x9e^e-\x82\x80\x1d\x1a\fn\xe9M\xdaj\v\xad\x90\xcf\xc9ם>8\x8f!\xea\xf1V\xfc\xcc\x02=\xc9Nθc'\x8a\x0e(\x0e-\x12\xc4\x1e\xa1\x06\b\x15Pv\x10\\\a\xb1\xd7\x04\x01}@B[\x82\xcdba\xc1\xb5\xffB\x19\x1b\xd8`\xe0\x8d@\xbdKFq\x0e\xec0D\b(\xdd\xd6\xea\u007fO\xd6\b\xa2\xcb\xc7\x18\x11\x91\"h\x1b1Xa\x18\xa6\x84\xbf\aa\x15\fb\x0f\x01\xd9.$;\xb3\x90U\xa8\x81O. h۹\x15\xf41zZ\xdd\xdfou\x1cSX\xbaaHV\xc7\xfd}NDݦ\xe8\x02\xdd+ܡ\xb9'\xbd]\x8a {\x1dQ\xc6\x14\xf0^x\xbd\xcc\xceڜ\xc1͠~\x17j\xbe\xd3\xdd\f\xba\xb8\xe7\xc0R\f\xdan'qΟ7\xf1\xe5D\x02M \xea\xb6\xe2\xff\x01F\x161\x12O\xbfn\xbe\xc0xh\x81\xba\xa0zP\xa5\x03\xc0\f\x8e\xb6\x1d\x86\xa2\xd9\x057d+h\x95w\xda\xc6\xfcC\x1a\x8d6\x02\xa5vБ#\xf7[B\x8a\x8c}\x03\xeb\\\xb0\xd0\"$\xafDD\xd5\xc0\x83\x85\xb5\x18Ь\x05\xe1\xff\x1c^F\x92\x96\f\xdd\xfb\x00\xcfy\xe6X\xb1 4\x89G\x02\xb8\x18\x89\x8dGɁ\xc8\xc8dJ;\xc0\xcd\x1bg\xfb.\xd5\x12?\xa5\xe0\x9e\xd0;\xd2х\xfd\xf1\xea\xc9y\xbf\x9c(\xb3՝VH\xd5\f\xc7u\\b\x9c\xa1s\xa1rH\x03_\tU\x16\f\xc9D\xed\r\x9eojN\x0e\xbf\b\xdd\xc1\xeb\x03\xaf\xbe\xef\xf4\xa4\x9b+7\xa8\x02Z\xd4\x03\xe6\u007f\xaa+/\x82@\nc8w\xbe\xf4\b\x94s\U000ce2a2&H\xe3%6Vx\xea]\x9c잸й0\x88\x98\x19\x1b\x97\xbc\xfb֫Q5\xfc\xf0\xf1\xea\xad6\x93ژ\x00Zq.v\x1aCv\x90E\xa3\xad\xc2t\b;gҀ7\xa3b\xd5├E\x1e{&\xa3ZӅ\xd9\xf05\xbe\x15\x03X?՞\x17\x1dt\xdaD\fp|\xb7\x89\x15^z-{Ny\xcc\f\xd5bǃ\xca\xcc8\xfb\xf0V`\xbeo\x86\xfa^\xd0\xf5\xb0}f\x8dK<\x82c\x979'\x12~Ц\xe1\xd4\xf0\x12\x1e\xf1\xe5L\xf6`?\a\xb7\rH\xa7E\xb9\x1c+\x17\xd5\xd9J9\xf4\xd7\x10\\8\xdf\xc5,\x9a\xfc_rx\xceW3!\xbf\xb9p\x8a\xd05\xf0\x82\x93H\xfc\xf6\xf4\xe8\xd4u\x14\x99\xa0>\x8a(>\t+\xb6\x18\xc0:\x85%\xc1zA\xe0\xb5|Ή4\xc33g\xd8\xe1\x04\xe68M𢍙M\xbc \b\xc89\xcb\u007fg[\xf5\xdc䩝\x87\x12\xb5\xb97\x92\v\xc0\xde\xc5Qo\xee\x02\xb9\x81G}A\u0382\x8e\x93\x03\a\xfb\xed\x1e\x84u\xb1\xaf\xb7\xba\xb9p}\r\xfa\xf5\xec\xabJ\xd0;3v\x0f\x17\x85\x01\x9b\x86\x96+\xac\x83v\xcf\x1d\xf7h\xe2Ƀ\xc7<_g\xda\xe2\xe0wD\xaa\xb0Ja3\xaa\xb5|\x95&o\xc4~r1\x0f\xb7\\~ܔ\x0e\x94U\x87Hn\x9ay\xe9\xf4\xeao\xf5S~\xf2\xe9\x1f\x9d=K\x1b8&\xe1?\xfe|a\xfdm\"Ϋ\f\xd0/l\xff{۾8\x8e\xf0\x93ik풍W\xa3\xf94\xa9\x1d5\xb8Ct\x0e\xf4G9\xf9\x84R<4\x89\x91jk^\x16\x02\xad2\x958'\xc0b|q\xe1\x194Q*\xa1a\xe9o\t\x13\xce\xdeE\x12\xf1\xfbf\x10\xf29۵\n\x14\xb6i\xbb\xe5\xca\xf8.\x9d\x90\xa2\b\xf1\xb6V\xb49R}oBʆoxO92\xfa\xff\x18s.$\x057:\x1dp\xfa\xa4\xb0\x9c\xbf\x9d\x9e\xe8\x1f>\xa3}\x10\xc6\xf7\xe2\xc3A\x96\xf3wY?\x9e͖\xa1\xdc_ͼ\xa4\xe8\x02\x0f Er\x98\x90\x85\x94\xe8#\xaa\xc7\xd3oe?\xfcp\xf49,\xff\x94\xce*]\xbe\xff\xc1?\xfe\xb9(VQ}\x1b\xbda\xe1\u007f\x02\x00\x00\xff\xff\xc6\xfd\"p~\x14\x00\x00"), } var CRDs = crds() -func crds() []*apiextv1.CustomResourceDefinition { +func crds() []*apiextv1beta1.CustomResourceDefinition { apiextinstall.Install(scheme.Scheme) decode := scheme.Codecs.UniversalDeserializer().Decode - var objs []*apiextv1.CustomResourceDefinition + var objs []*apiextv1beta1.CustomResourceDefinition for _, crd := range rawCRDs { gzr, err := gzip.NewReader(bytes.NewReader(crd)) if err != nil { @@ -59,7 +59,7 @@ func crds() []*apiextv1.CustomResourceDefinition { if err != nil { panic(err) } - objs = append(objs, obj.(*apiextv1.CustomResourceDefinition)) + objs = append(objs, obj.(*apiextv1beta1.CustomResourceDefinition)) } return objs } diff --git a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositories.yaml b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositories.yaml index 0ea289ad..70112dba 100644 --- a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositories.yaml +++ b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositories.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,40 +15,41 @@ spec: plural: backuprepositories singular: backuprepository scope: Cluster - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: ' BackupRepository is a cluster-scoped resource. It is controlled by the Backup Driver and referenced by Snapshot, CloneFromSnapshot and Delete. The BackupRespository resource contains the credential for a backup repository. The RepositoryDriver defines the driver that will be used to talk to the repository Only Snapshot,etc. CRs from namespaces that are listed in AllowedNamespaces will be acted on, if the namespace is not in AllowedNamespaces the operation will fail.' - properties: - allowedNamespaces: - items: - type: string - type: array - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - backupRepositoryClaim: - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + validation: + openAPIV3Schema: + description: ' BackupRepository is a cluster-scoped resource. It is controlled by the Backup Driver and referenced by Snapshot, CloneFromSnapshot and Delete. The BackupRespository resource contains the credential for a backup repository. The RepositoryDriver defines the driver that will be used to talk to the repository Only Snapshot,etc. CRs from namespaces that are listed in AllowedNamespaces will be acted on, if the namespace is not in AllowedNamespaces the operation will fail.' + properties: + allowedNamespaces: + items: type: string - metadata: - type: object - repopsitoryParameters: - additionalProperties: - type: string - type: object - repositoryDriver: + type: array + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + backupRepositoryClaim: + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + repopsitoryParameters: + additionalProperties: type: string - svcBackupRepositoryName: - type: string - required: - - allowedNamespaces - - backupRepositoryClaim - - repopsitoryParameters - - repositoryDriver - type: object + type: object + repositoryDriver: + type: string + svcBackupRepositoryName: + type: string + required: + - allowedNamespaces + - backupRepositoryClaim + - repopsitoryParameters + - repositoryDriver + type: object + version: v1alpha1 + versions: + - name: v1alpha1 served: true storage: true status: diff --git a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositoryclaims.yaml b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositoryclaims.yaml index 4357e0d5..b03121fe 100644 --- a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositoryclaims.yaml +++ b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_backuprepositoryclaims.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,36 +15,37 @@ spec: plural: backuprepositoryclaims singular: backuprepositoryclaim scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: ' BackupRepositoryClaim is used to define/access a BackupRepository. A new BackupRepository will be created with the RepositoryDriver, Credential and AllowedNamespaces will either be the namespace that the BackupRepositorySpec was created in or the AllowedNamespaces specified in the BackupRepositorySpec. The BackupRepository field will be updated with the name of the BackupRepository created.' - properties: - allowedNamespaces: - items: - type: string - type: array - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - backupRepository: + validation: + openAPIV3Schema: + description: ' BackupRepositoryClaim is used to define/access a BackupRepository. A new BackupRepository will be created with the RepositoryDriver, Credential and AllowedNamespaces will either be the namespace that the BackupRepositorySpec was created in or the AllowedNamespaces specified in the BackupRepositorySpec. The BackupRepository field will be updated with the name of the BackupRepository created.' + properties: + allowedNamespaces: + items: type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: array + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + backupRepository: + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + repopsitoryParameters: + additionalProperties: type: string - metadata: - type: object - repopsitoryParameters: - additionalProperties: - type: string - type: object - repositoryDriver: - type: string - required: - - repopsitoryParameters - - repositoryDriver - type: object + type: object + repositoryDriver: + type: string + required: + - repopsitoryParameters + - repositoryDriver + type: object + version: v1alpha1 + versions: + - name: v1alpha1 served: true storage: true status: diff --git a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_clonefromsnapshots.yaml b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_clonefromsnapshots.yaml index 85fd8e4a..7cf3b854 100644 --- a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_clonefromsnapshots.yaml +++ b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_clonefromsnapshots.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,84 +15,85 @@ spec: plural: clonefromsnapshots singular: clonefromsnapshot scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: ' CloneFromSnapshot is used to create a new resource (typically a PVC) from a snapshot. Once the Snapshot''s Phase has moved to Snapshotted it is valid to create a new resource from the snapshot ID' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CloneFromSnapshotSpec specifies an object to be cloned from a snapshot ID. The Metadata may be overridden, the format of the metadata is object specific. APIGroup and Kind specify the type of object to create. + properties: + apiGroup: + description: APIGroup of the resource being created + type: string + backupRepository: + description: The backup repository to retrieve the snapshot from. The namespace the Snapshot/PVC lives in must have access to the repository + type: string + cloneCancel: + description: SnapshotCancel indicates request to cancel ongoing snapshot. SnapshotCancel can be set at anytime before the snapshot reaches a terminal phase. If the snapshot has reached a terminal phase + type: boolean + kind: + description: Kind is the type of resource being created + type: string + metadata: + format: byte + type: string + snapshotID: + type: string + required: + - apiGroup + - backupRepository + - cloneCancel + - kind + - snapshotID + type: object + status: + properties: + completionTimestamp: + description: CompletionTimestamp records the time an snapshot was completed. The server's time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + message: + description: Message is a message about the clone's status. + type: string + phase: + description: Phase is the current state of the CloneFromSnapshot. + type: string + resourceHandle: + description: The handle of the resource that was cloned from the snapshot + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + type: object + required: + - spec + type: object + version: v1alpha1 versions: - name: v1alpha1 - schema: - openAPIV3Schema: - description: ' CloneFromSnapshot is used to create a new resource (typically a PVC) from a snapshot. Once the Snapshot''s Phase has moved to Snapshotted it is valid to create a new resource from the snapshot ID' - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: CloneFromSnapshotSpec specifies an object to be cloned from a snapshot ID. The Metadata may be overridden, the format of the metadata is object specific. APIGroup and Kind specify the type of object to create. - properties: - apiGroup: - description: APIGroup of the resource being created - type: string - backupRepository: - description: The backup repository to retrieve the snapshot from. The namespace the Snapshot/PVC lives in must have access to the repository - type: string - cloneCancel: - description: SnapshotCancel indicates request to cancel ongoing snapshot. SnapshotCancel can be set at anytime before the snapshot reaches a terminal phase. If the snapshot has reached a terminal phase - type: boolean - kind: - description: Kind is the type of resource being created - type: string - metadata: - format: byte - type: string - snapshotID: - type: string - required: - - apiGroup - - backupRepository - - cloneCancel - - kind - - snapshotID - type: object - status: - properties: - completionTimestamp: - description: CompletionTimestamp records the time an snapshot was completed. The server's time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - message: - description: Message is a message about the clone's status. - type: string - phase: - description: Phase is the current state of the CloneFromSnapshot. - type: string - resourceHandle: - description: The handle of the resource that was cloned from the snapshot - properties: - apiGroup: - description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - type: object - required: - - spec - type: object served: true storage: true - subresources: - status: {} status: acceptedNames: kind: "" diff --git a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_deletesnapshots.yaml b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_deletesnapshots.yaml index a8292d29..18a4176a 100644 --- a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_deletesnapshots.yaml +++ b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_deletesnapshots.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,53 +15,54 @@ spec: plural: deletesnapshots singular: deletesnapshot scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec is the custom resource spec + properties: + backupRepository: + description: The backup repository to retrieve the snapshot from. The namespace the Snapshot/PVC lives in must have access to the repository + type: string + snapshotID: + type: string + required: + - backupRepository + - snapshotID + type: object + status: + description: Current status of the delete snapshot operation + properties: + completionTimestamp: + description: CompletionTimestamp records the time an deletesnapshot was completed. The server's time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + message: + description: Message is a message about the delete snapshot's status. + type: string + phase: + description: Phase is the current state of the Delete Snapshot. + type: string + type: object + required: + - spec + type: object + version: v1alpha1 versions: - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec is the custom resource spec - properties: - backupRepository: - description: The backup repository to retrieve the snapshot from. The namespace the Snapshot/PVC lives in must have access to the repository - type: string - snapshotID: - type: string - required: - - backupRepository - - snapshotID - type: object - status: - description: Current status of the delete snapshot operation - properties: - completionTimestamp: - description: CompletionTimestamp records the time an deletesnapshot was completed. The server's time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - message: - description: Message is a message about the delete snapshot's status. - type: string - phase: - description: Phase is the current state of the Delete Snapshot. - type: string - type: object - required: - - spec - type: object served: true storage: true - subresources: - status: {} status: acceptedNames: kind: "" diff --git a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_snapshots.yaml b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_snapshots.yaml index 29dc10a4..0910481a 100644 --- a/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_snapshots.yaml +++ b/pkg/generated/crds/manifests/backupdriver.cnsdp.vmware.com_snapshots.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,91 +15,92 @@ spec: plural: snapshots singular: snapshot scope: Namespaced + subresources: + status: {} + validation: + openAPIV3Schema: + description: ' Snapshot is used to request that a snapshot is taken. It is not used to manage the inventory of snapshots and does not need to exist in order to clone the resource from a snapshot' + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec is the custom resource spec + properties: + backupRepository: + description: The backup repository to snapshot into. The namespace the Snapshot/PVC lives in must have access to the repository + type: string + resourceHandle: + description: ResourceHandle refers to a Kubernetes resource, currently a PVC but this may be extended in the future + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + snapshotCancel: + description: SnapshotCancel indicates request to cancel ongoing snapshot. SnapshotCancel can be set at anytime before the snapshot reaches a terminal phase. If the snapshot has reached a terminal phase + type: boolean + required: + - backupRepository + - resourceHandle + type: object + status: + description: Current status of the snapshot operation + properties: + completionTimestamp: + description: CompletionTimestamp records the time an snapshot was completed. The server's time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + message: + description: Message is a message about the snapshot's status. + type: string + metadata: + description: Metadata for the snapshotted object + format: byte + type: string + phase: + description: Phase is the current state of the Snapshot. + type: string + progress: + description: Progress for the upload + properties: + bytesDone: + format: int64 + type: integer + totalBytes: + format: int64 + type: integer + type: object + snapshotID: + description: Snapshot ID that has been taken. This will be filled in when the phase goes to "Snapshotted" + type: string + svcSnapshotName: + description: For guest clusters, save the name of the corresponding supervisor cluster snapshot name. This is used to track the upload status from the supervisor cluster. + type: string + type: object + required: + - spec + type: object + version: v1alpha1 versions: - name: v1alpha1 - schema: - openAPIV3Schema: - description: ' Snapshot is used to request that a snapshot is taken. It is not used to manage the inventory of snapshots and does not need to exist in order to clone the resource from a snapshot' - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec is the custom resource spec - properties: - backupRepository: - description: The backup repository to snapshot into. The namespace the Snapshot/PVC lives in must have access to the repository - type: string - resourceHandle: - description: ResourceHandle refers to a Kubernetes resource, currently a PVC but this may be extended in the future - properties: - apiGroup: - description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - snapshotCancel: - description: SnapshotCancel indicates request to cancel ongoing snapshot. SnapshotCancel can be set at anytime before the snapshot reaches a terminal phase. If the snapshot has reached a terminal phase - type: boolean - required: - - backupRepository - - resourceHandle - type: object - status: - description: Current status of the snapshot operation - properties: - completionTimestamp: - description: CompletionTimestamp records the time an snapshot was completed. The server's time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - message: - description: Message is a message about the snapshot's status. - type: string - metadata: - description: Metadata for the snapshotted object - format: byte - type: string - phase: - description: Phase is the current state of the Snapshot. - type: string - progress: - description: Progress for the upload - properties: - bytesDone: - format: int64 - type: integer - totalBytes: - format: int64 - type: integer - type: object - snapshotID: - description: Snapshot ID that has been taken. This will be filled in when the phase goes to "Snapshotted" - type: string - svcSnapshotName: - description: For guest clusters, save the name of the corresponding supervisor cluster snapshot name. This is used to track the upload status from the supervisor cluster. - type: string - type: object - required: - - spec - type: object served: true storage: true - subresources: - status: {} status: acceptedNames: kind: "" diff --git a/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_downloads.yaml b/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_downloads.yaml index 2cb9d76f..127467b4 100644 --- a/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_downloads.yaml +++ b/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_downloads.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,94 +15,95 @@ spec: plural: downloads singular: download scope: Namespaced + validation: + openAPIV3Schema: + description: Download describe a velero-plugin restore + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec is the custom resource spec + properties: + backupRepositoryName: + description: BackupRepository provides backup repository info for download. BackupRepositoryName is the name of the BackupRepository. + type: string + clonefromSnapshotReference: + description: CloneFromSnapshotReference is the namespace and clonefromsnapshot name for this download request. The format is CloneFromSnapshotNamespace/CloneFromSnapshotName It is used to update the download status in the clonefromsnapshot. + type: string + protectedEntityID: + description: ProtectedEntityID is the identifier for the protected entity. This is needed to overwrite an existing volume. + type: string + restoreTimestamp: + description: RestoreTimestamp records the time the restore was called. The server's time is used for SnapshotTimestamp + format: date-time + type: string + snapshotID: + description: SnapshotID is the identifier for the snapshot of the volume. + type: string + type: object + status: + description: DownloadStatus is the current status of a Download. + properties: + completionTimestamp: + description: CompletionTimestamp records the time an download was completed. Completion time is recorded even on failed downloads. The server's time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + message: + description: Message is a message about the download's status. + type: string + nextRetryTimestamp: + description: NextRetryTimestamp should be the timestamp that indicate the next retry for failed download CR. Used to filter out the download request which comes in before next retry time. + format: date-time + nullable: true + type: string + phase: + description: Phase is the current state of the Download. + enum: + - New + - InProgress + - Completed + - Retry + - Failed + type: string + processingNode: + description: The DataManager node that has picked up the Download for processing. This will be updated as soon as the Download is picked up for processing. If the DataManager couldn't process Download for some reason it will be picked up by another node. + type: string + progress: + description: Progress holds the total number of bytes of the volume and the current number of restore up bytes. This can be used to display progress information about the restore operation. + properties: + bytesDone: + format: int64 + type: integer + totalBytes: + format: int64 + type: integer + type: object + retryCount: + description: RetryCount records the number of retry times for re-adding a failed Download CR which failed due to network issue back to queue. Used for user tracking and debugging. + format: int32 + type: integer + startTimestamp: + description: StartTimestamp records the time an download was started. The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string + volumeID: + description: VolumeID is the identifier for the restored volume. + type: string + type: object + required: + - spec + type: object + version: v1alpha1 versions: - name: v1alpha1 - schema: - openAPIV3Schema: - description: Download describe a velero-plugin restore - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec is the custom resource spec - properties: - backupRepositoryName: - description: BackupRepository provides backup repository info for download. BackupRepositoryName is the name of the BackupRepository. - type: string - clonefromSnapshotReference: - description: CloneFromSnapshotReference is the namespace and clonefromsnapshot name for this download request. The format is CloneFromSnapshotNamespace/CloneFromSnapshotName It is used to update the download status in the clonefromsnapshot. - type: string - protectedEntityID: - description: ProtectedEntityID is the identifier for the protected entity. This is needed to overwrite an existing volume. - type: string - restoreTimestamp: - description: RestoreTimestamp records the time the restore was called. The server's time is used for SnapshotTimestamp - format: date-time - type: string - snapshotID: - description: SnapshotID is the identifier for the snapshot of the volume. - type: string - type: object - status: - description: DownloadStatus is the current status of a Download. - properties: - completionTimestamp: - description: CompletionTimestamp records the time an download was completed. Completion time is recorded even on failed downloads. The server's time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - message: - description: Message is a message about the download's status. - type: string - nextRetryTimestamp: - description: NextRetryTimestamp should be the timestamp that indicate the next retry for failed download CR. Used to filter out the download request which comes in before next retry time. - format: date-time - nullable: true - type: string - phase: - description: Phase is the current state of the Download. - enum: - - New - - InProgress - - Completed - - Retry - - Failed - type: string - processingNode: - description: The DataManager node that has picked up the Download for processing. This will be updated as soon as the Download is picked up for processing. If the DataManager couldn't process Download for some reason it will be picked up by another node. - type: string - progress: - description: Progress holds the total number of bytes of the volume and the current number of restore up bytes. This can be used to display progress information about the restore operation. - properties: - bytesDone: - format: int64 - type: integer - totalBytes: - format: int64 - type: integer - type: object - retryCount: - description: RetryCount records the number of retry times for re-adding a failed Download CR which failed due to network issue back to queue. Used for user tracking and debugging. - format: int32 - type: integer - startTimestamp: - description: StartTimestamp records the time an download was started. The server's time is used for StartTimestamps - format: date-time - nullable: true - type: string - volumeID: - description: VolumeID is the identifier for the restored volume. - type: string - type: object - required: - - spec - type: object served: true storage: true status: diff --git a/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_uploads.yaml b/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_uploads.yaml index b606b339..68435f62 100644 --- a/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_uploads.yaml +++ b/pkg/generated/crds/manifests/datamover.cnsdp.vmware.com_uploads.yaml @@ -1,6 +1,6 @@ --- -apiVersion: apiextensions.k8s.io/v1 +apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: annotations: @@ -15,97 +15,98 @@ spec: plural: uploads singular: upload scope: Namespaced + validation: + openAPIV3Schema: + description: Upload describe a velero-plugin backup + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec is the custom resource spec + properties: + backupRepository: + description: BackupRepository provides backup repository info for upload. Used for multiple backup repository. + type: string + backupTimestamp: + description: BackupTimestamp records the time the backup was called. The server's time is used for SnapshotTimestamp + format: date-time + type: string + snapshotID: + description: SnapshotID is the identifier for the snapshot of the volume. + type: string + snapshotReference: + description: SnapshotReference is the namespace and snapshot name for this upload request. The format is SnapshotNamespace/SnapshotCRName It is used to update the upload status in the snapshot. + type: string + uploadCancel: + description: UploadCancel indicates request to cancel ongoing upload. + type: boolean + type: object + status: + description: UploadStatus is the current status of a Upload. + properties: + completionTimestamp: + description: CompletionTimestamp records the time an upload was completed. Completion time is recorded even on failed uploads. The server's time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + currentBackOff: + description: CurrentBackOff records the backoff on retry for failed upload. Retry on upload should obey exponential backoff mechanism. + format: int32 + type: integer + message: + description: Message is a message about the upload's status. + type: string + nextRetryTimestamp: + description: NextRetryTimestamp should be the timestamp that indicate the next retry for failed upload CR. Used to filter out the upload request which comes in before next retry time. + format: date-time + nullable: true + type: string + phase: + description: Phase is the current state of the Upload. + enum: + - New + - InProgress + - Completed + - UploadError + - CleanupFailed + - Canceled + - Canceling + type: string + processingNode: + description: The DataManager node that has picked up the Upload for processing. This will be updated as soon as the Upload is picked up for processing. If the DataManager couldn't process Upload for some reason it will be picked up by another node. + type: string + progress: + description: Progress holds the total number of bytes of the volume and the current number of backed up bytes. This can be used to display progress information about the backup operation. + properties: + bytesDone: + format: int64 + type: integer + totalBytes: + format: int64 + type: integer + type: object + retryCount: + description: RetryCount records the number of retry times for adding a failed Upload which failed due to network issue back to queue. Used for user tracking and debugging. + format: int32 + type: integer + startTimestamp: + description: StartTimestamp records the time an upload was started. The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string + type: object + required: + - spec + type: object + version: v1alpha1 versions: - name: v1alpha1 - schema: - openAPIV3Schema: - description: Upload describe a velero-plugin backup - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec is the custom resource spec - properties: - backupRepository: - description: BackupRepository provides backup repository info for upload. Used for multiple backup repository. - type: string - backupTimestamp: - description: BackupTimestamp records the time the backup was called. The server's time is used for SnapshotTimestamp - format: date-time - type: string - snapshotID: - description: SnapshotID is the identifier for the snapshot of the volume. - type: string - snapshotReference: - description: SnapshotReference is the namespace and snapshot name for this upload request. The format is SnapshotNamespace/SnapshotCRName It is used to update the upload status in the snapshot. - type: string - uploadCancel: - description: UploadCancel indicates request to cancel ongoing upload. - type: boolean - type: object - status: - description: UploadStatus is the current status of a Upload. - properties: - completionTimestamp: - description: CompletionTimestamp records the time an upload was completed. Completion time is recorded even on failed uploads. The server's time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - currentBackOff: - description: CurrentBackOff records the backoff on retry for failed upload. Retry on upload should obey exponential backoff mechanism. - format: int32 - type: integer - message: - description: Message is a message about the upload's status. - type: string - nextRetryTimestamp: - description: NextRetryTimestamp should be the timestamp that indicate the next retry for failed upload CR. Used to filter out the upload request which comes in before next retry time. - format: date-time - nullable: true - type: string - phase: - description: Phase is the current state of the Upload. - enum: - - New - - InProgress - - Completed - - UploadError - - CleanupFailed - - Canceled - - Canceling - type: string - processingNode: - description: The DataManager node that has picked up the Upload for processing. This will be updated as soon as the Upload is picked up for processing. If the DataManager couldn't process Upload for some reason it will be picked up by another node. - type: string - progress: - description: Progress holds the total number of bytes of the volume and the current number of backed up bytes. This can be used to display progress information about the backup operation. - properties: - bytesDone: - format: int64 - type: integer - totalBytes: - format: int64 - type: integer - type: object - retryCount: - description: RetryCount records the number of retry times for adding a failed Upload which failed due to network issue back to queue. Used for user tracking and debugging. - format: int32 - type: integer - startTimestamp: - description: StartTimestamp records the time an upload was started. The server's time is used for StartTimestamps - format: date-time - nullable: true - type: string - type: object - required: - - spec - type: object served: true storage: true status: diff --git a/pkg/generated/listers/backupdriver/v1alpha1/backuprepository.go b/pkg/generated/listers/backupdriver/v1alpha1/backuprepository.go index 6e117077..37513feb 100644 --- a/pkg/generated/listers/backupdriver/v1alpha1/backuprepository.go +++ b/pkg/generated/listers/backupdriver/v1alpha1/backuprepository.go @@ -26,13 +26,10 @@ import ( ) // BackupRepositoryLister helps list BackupRepositories. -// All objects returned here must be treated as read-only. type BackupRepositoryLister interface { // List lists all BackupRepositories in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.BackupRepository, err error) // Get retrieves the BackupRepository from the index for a given name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.BackupRepository, error) BackupRepositoryListerExpansion } diff --git a/pkg/generated/listers/backupdriver/v1alpha1/backuprepositoryclaim.go b/pkg/generated/listers/backupdriver/v1alpha1/backuprepositoryclaim.go index 0ddee6a7..f87ba6e8 100644 --- a/pkg/generated/listers/backupdriver/v1alpha1/backuprepositoryclaim.go +++ b/pkg/generated/listers/backupdriver/v1alpha1/backuprepositoryclaim.go @@ -26,10 +26,8 @@ import ( ) // BackupRepositoryClaimLister helps list BackupRepositoryClaims. -// All objects returned here must be treated as read-only. type BackupRepositoryClaimLister interface { // List lists all BackupRepositoryClaims in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.BackupRepositoryClaim, err error) // BackupRepositoryClaims returns an object that can list and get BackupRepositoryClaims. BackupRepositoryClaims(namespace string) BackupRepositoryClaimNamespaceLister @@ -60,13 +58,10 @@ func (s *backupRepositoryClaimLister) BackupRepositoryClaims(namespace string) B } // BackupRepositoryClaimNamespaceLister helps list and get BackupRepositoryClaims. -// All objects returned here must be treated as read-only. type BackupRepositoryClaimNamespaceLister interface { // List lists all BackupRepositoryClaims in the indexer for a given namespace. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.BackupRepositoryClaim, err error) // Get retrieves the BackupRepositoryClaim from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.BackupRepositoryClaim, error) BackupRepositoryClaimNamespaceListerExpansion } diff --git a/pkg/generated/listers/backupdriver/v1alpha1/clonefromsnapshot.go b/pkg/generated/listers/backupdriver/v1alpha1/clonefromsnapshot.go index 35a71821..29ba3ad3 100644 --- a/pkg/generated/listers/backupdriver/v1alpha1/clonefromsnapshot.go +++ b/pkg/generated/listers/backupdriver/v1alpha1/clonefromsnapshot.go @@ -26,10 +26,8 @@ import ( ) // CloneFromSnapshotLister helps list CloneFromSnapshots. -// All objects returned here must be treated as read-only. type CloneFromSnapshotLister interface { // List lists all CloneFromSnapshots in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.CloneFromSnapshot, err error) // CloneFromSnapshots returns an object that can list and get CloneFromSnapshots. CloneFromSnapshots(namespace string) CloneFromSnapshotNamespaceLister @@ -60,13 +58,10 @@ func (s *cloneFromSnapshotLister) CloneFromSnapshots(namespace string) CloneFrom } // CloneFromSnapshotNamespaceLister helps list and get CloneFromSnapshots. -// All objects returned here must be treated as read-only. type CloneFromSnapshotNamespaceLister interface { // List lists all CloneFromSnapshots in the indexer for a given namespace. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.CloneFromSnapshot, err error) // Get retrieves the CloneFromSnapshot from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.CloneFromSnapshot, error) CloneFromSnapshotNamespaceListerExpansion } diff --git a/pkg/generated/listers/backupdriver/v1alpha1/deletesnapshot.go b/pkg/generated/listers/backupdriver/v1alpha1/deletesnapshot.go index 329901b4..5952b2b3 100644 --- a/pkg/generated/listers/backupdriver/v1alpha1/deletesnapshot.go +++ b/pkg/generated/listers/backupdriver/v1alpha1/deletesnapshot.go @@ -26,10 +26,8 @@ import ( ) // DeleteSnapshotLister helps list DeleteSnapshots. -// All objects returned here must be treated as read-only. type DeleteSnapshotLister interface { // List lists all DeleteSnapshots in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.DeleteSnapshot, err error) // DeleteSnapshots returns an object that can list and get DeleteSnapshots. DeleteSnapshots(namespace string) DeleteSnapshotNamespaceLister @@ -60,13 +58,10 @@ func (s *deleteSnapshotLister) DeleteSnapshots(namespace string) DeleteSnapshotN } // DeleteSnapshotNamespaceLister helps list and get DeleteSnapshots. -// All objects returned here must be treated as read-only. type DeleteSnapshotNamespaceLister interface { // List lists all DeleteSnapshots in the indexer for a given namespace. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.DeleteSnapshot, err error) // Get retrieves the DeleteSnapshot from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.DeleteSnapshot, error) DeleteSnapshotNamespaceListerExpansion } diff --git a/pkg/generated/listers/backupdriver/v1alpha1/snapshot.go b/pkg/generated/listers/backupdriver/v1alpha1/snapshot.go index 563a8e9b..39229af7 100644 --- a/pkg/generated/listers/backupdriver/v1alpha1/snapshot.go +++ b/pkg/generated/listers/backupdriver/v1alpha1/snapshot.go @@ -26,10 +26,8 @@ import ( ) // SnapshotLister helps list Snapshots. -// All objects returned here must be treated as read-only. type SnapshotLister interface { // List lists all Snapshots in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.Snapshot, err error) // Snapshots returns an object that can list and get Snapshots. Snapshots(namespace string) SnapshotNamespaceLister @@ -60,13 +58,10 @@ func (s *snapshotLister) Snapshots(namespace string) SnapshotNamespaceLister { } // SnapshotNamespaceLister helps list and get Snapshots. -// All objects returned here must be treated as read-only. type SnapshotNamespaceLister interface { // List lists all Snapshots in the indexer for a given namespace. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.Snapshot, err error) // Get retrieves the Snapshot from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.Snapshot, error) SnapshotNamespaceListerExpansion } diff --git a/pkg/generated/listers/datamover/v1alpha1/download.go b/pkg/generated/listers/datamover/v1alpha1/download.go index 6c53925f..293c89bf 100644 --- a/pkg/generated/listers/datamover/v1alpha1/download.go +++ b/pkg/generated/listers/datamover/v1alpha1/download.go @@ -26,10 +26,8 @@ import ( ) // DownloadLister helps list Downloads. -// All objects returned here must be treated as read-only. type DownloadLister interface { // List lists all Downloads in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.Download, err error) // Downloads returns an object that can list and get Downloads. Downloads(namespace string) DownloadNamespaceLister @@ -60,13 +58,10 @@ func (s *downloadLister) Downloads(namespace string) DownloadNamespaceLister { } // DownloadNamespaceLister helps list and get Downloads. -// All objects returned here must be treated as read-only. type DownloadNamespaceLister interface { // List lists all Downloads in the indexer for a given namespace. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.Download, err error) // Get retrieves the Download from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.Download, error) DownloadNamespaceListerExpansion } diff --git a/pkg/generated/listers/datamover/v1alpha1/upload.go b/pkg/generated/listers/datamover/v1alpha1/upload.go index 7a8bc42d..6f12c304 100644 --- a/pkg/generated/listers/datamover/v1alpha1/upload.go +++ b/pkg/generated/listers/datamover/v1alpha1/upload.go @@ -26,10 +26,8 @@ import ( ) // UploadLister helps list Uploads. -// All objects returned here must be treated as read-only. type UploadLister interface { // List lists all Uploads in the indexer. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.Upload, err error) // Uploads returns an object that can list and get Uploads. Uploads(namespace string) UploadNamespaceLister @@ -60,13 +58,10 @@ func (s *uploadLister) Uploads(namespace string) UploadNamespaceLister { } // UploadNamespaceLister helps list and get Uploads. -// All objects returned here must be treated as read-only. type UploadNamespaceLister interface { // List lists all Uploads in the indexer for a given namespace. - // Objects returned here must be treated as read-only. List(selector labels.Selector) (ret []*v1alpha1.Upload, err error) // Get retrieves the Upload from the indexer for a given namespace and name. - // Objects returned here must be treated as read-only. Get(name string) (*v1alpha1.Upload, error) UploadNamespaceListerExpansion }