rename OverrideAppVersion to OverrideMetadata

Signed-off-by: Kevin Labesse <kevin@labesse.me>
pull/5492/head
Kevin Labesse 7 years ago
parent de6b33782c
commit 7e6a1a2cb8

@ -91,6 +91,6 @@ message Metadata {
// KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
string kubeVersion = 17;
// Whether or not the app version can be override by flag --app-version (during install or update)
bool overrideAppVersion = 18;
// During chart install or update, this field determines whether or not the metadata can be overridden by flags like --app-version
bool overrideMetadata = 18;
}

@ -300,8 +300,8 @@ func (i *installCmd) run() error {
}
if i.appVersion != "" {
if !chartRequested.Metadata.OverrideAppVersion {
return fmt.Errorf("override app version is not allowed on this chart")
if !chartRequested.Metadata.OverrideMetadata {
return fmt.Errorf("The chart maintainer has disallowed overriding the chart's package metadata. Please contact the maintainer to set `overrideChartMeta` in their Chart.yaml to `true`.")
}
chartRequested.Metadata.AppVersion = i.appVersion

@ -4,4 +4,4 @@ name: alpine
sources:
- https://github.com/helm/helm
version: 0.1.0
overrideAppVersion: true
overrideMetadata: true

@ -265,8 +265,8 @@ func (u *upgradeCmd) run() error {
}
if u.appVersion != "" {
if !chart.Metadata.OverrideAppVersion {
return fmt.Errorf("override app version is not allowed on this chart")
if !chart.Metadata.OverrideMetadata {
return fmt.Errorf("The chart maintainer has disallowed overriding the chart's package metadata. Please contact the maintainer to set `overrideChartMeta` in their Chart.yaml to `true`.")
}
chart.Metadata.AppVersion = u.appVersion

@ -98,7 +98,7 @@ func TestUpgradeCmd(t *testing.T) {
Name: "testUpgradeChartAppVersion",
Description: "A Helm chart for Kubernetes",
Version: "0.1.0",
OverrideAppVersion: true,
OverrideMetadata: true,
}
chartPath, err = chartutil.Create(cfile, tmpChart2)

@ -12,6 +12,12 @@ var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type Metadata_Engine int32
const (
@ -31,22 +37,46 @@ var Metadata_Engine_value = map[string]int32{
func (x Metadata_Engine) String() string {
return proto.EnumName(Metadata_Engine_name, int32(x))
}
func (Metadata_Engine) EnumDescriptor() ([]byte, []int) { return fileDescriptor2, []int{1, 0} }
func (Metadata_Engine) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_metadata_16a60a1a41d0ad3d, []int{1, 0}
}
// Maintainer describes a Chart maintainer.
type Maintainer struct {
// Name is a user name or organization name
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Email is an optional email address to contact the named maintainer
Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"`
Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
// Url is an optional URL to an address for the named maintainer
Url string `protobuf:"bytes,3,opt,name=url" json:"url,omitempty"`
Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Maintainer) Reset() { *m = Maintainer{} }
func (m *Maintainer) String() string { return proto.CompactTextString(m) }
func (*Maintainer) ProtoMessage() {}
func (*Maintainer) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{0} }
func (*Maintainer) Descriptor() ([]byte, []int) {
return fileDescriptor_metadata_16a60a1a41d0ad3d, []int{0}
}
func (m *Maintainer) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Maintainer.Unmarshal(m, b)
}
func (m *Maintainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Maintainer.Marshal(b, m, deterministic)
}
func (dst *Maintainer) XXX_Merge(src proto.Message) {
xxx_messageInfo_Maintainer.Merge(dst, src)
}
func (m *Maintainer) XXX_Size() int {
return xxx_messageInfo_Maintainer.Size(m)
}
func (m *Maintainer) XXX_DiscardUnknown() {
xxx_messageInfo_Maintainer.DiscardUnknown(m)
}
var xxx_messageInfo_Maintainer proto.InternalMessageInfo
func (m *Maintainer) GetName() string {
if m != nil {
@ -74,49 +104,71 @@ func (m *Maintainer) GetUrl() string {
// Spec: https://k8s.io/helm/blob/master/docs/design/chart_format.md#the-chart-file
type Metadata struct {
// The name of the chart
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The URL to a relevant project page, git repo, or contact person
Home string `protobuf:"bytes,2,opt,name=home" json:"home,omitempty"`
Home string `protobuf:"bytes,2,opt,name=home,proto3" json:"home,omitempty"`
// Source is the URL to the source code of this chart
Sources []string `protobuf:"bytes,3,rep,name=sources" json:"sources,omitempty"`
Sources []string `protobuf:"bytes,3,rep,name=sources,proto3" json:"sources,omitempty"`
// A SemVer 2 conformant version string of the chart
Version string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
// A one-sentence description of the chart
Description string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// A list of string keywords
Keywords []string `protobuf:"bytes,6,rep,name=keywords" json:"keywords,omitempty"`
Keywords []string `protobuf:"bytes,6,rep,name=keywords,proto3" json:"keywords,omitempty"`
// A list of name and URL/email address combinations for the maintainer(s)
Maintainers []*Maintainer `protobuf:"bytes,7,rep,name=maintainers" json:"maintainers,omitempty"`
Maintainers []*Maintainer `protobuf:"bytes,7,rep,name=maintainers,proto3" json:"maintainers,omitempty"`
// The name of the template engine to use. Defaults to 'gotpl'.
Engine string `protobuf:"bytes,8,opt,name=engine" json:"engine,omitempty"`
Engine string `protobuf:"bytes,8,opt,name=engine,proto3" json:"engine,omitempty"`
// The URL to an icon file.
Icon string `protobuf:"bytes,9,opt,name=icon" json:"icon,omitempty"`
Icon string `protobuf:"bytes,9,opt,name=icon,proto3" json:"icon,omitempty"`
// The API Version of this chart.
ApiVersion string `protobuf:"bytes,10,opt,name=apiVersion" json:"apiVersion,omitempty"`
ApiVersion string `protobuf:"bytes,10,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"`
// The condition to check to enable chart
Condition string `protobuf:"bytes,11,opt,name=condition" json:"condition,omitempty"`
Condition string `protobuf:"bytes,11,opt,name=condition,proto3" json:"condition,omitempty"`
// The tags to check to enable chart
Tags string `protobuf:"bytes,12,opt,name=tags" json:"tags,omitempty"`
Tags string `protobuf:"bytes,12,opt,name=tags,proto3" json:"tags,omitempty"`
// The version of the application enclosed inside of this chart.
AppVersion string `protobuf:"bytes,13,opt,name=appVersion" json:"appVersion,omitempty"`
AppVersion string `protobuf:"bytes,13,opt,name=appVersion,proto3" json:"appVersion,omitempty"`
// Whether or not this chart is deprecated
Deprecated bool `protobuf:"varint,14,opt,name=deprecated" json:"deprecated,omitempty"`
Deprecated bool `protobuf:"varint,14,opt,name=deprecated,proto3" json:"deprecated,omitempty"`
// TillerVersion is a SemVer constraints on what version of Tiller is required.
// See SemVer ranges here: https://github.com/Masterminds/semver#basic-comparisons
TillerVersion string `protobuf:"bytes,15,opt,name=tillerVersion" json:"tillerVersion,omitempty"`
TillerVersion string `protobuf:"bytes,15,opt,name=tillerVersion,proto3" json:"tillerVersion,omitempty"`
// Annotations are additional mappings uninterpreted by Tiller,
// made available for inspection by other applications.
Annotations map[string]string `protobuf:"bytes,16,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Annotations map[string]string `protobuf:"bytes,16,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
KubeVersion string `protobuf:"bytes,17,opt,name=kubeVersion" json:"kubeVersion,omitempty"`
// Whether or not the app version can be override by flag --app-version (during install or update)
OverrideAppVersion bool `protobuf:"varint,18,opt,name=overrideAppVersion" json:"overrideAppVersion,omitempty"`
KubeVersion string `protobuf:"bytes,17,opt,name=kubeVersion,proto3" json:"kubeVersion,omitempty"`
// During chart install or update, this field determines whether or not the metadata can be overridden by flags like --app-version
OverrideMetadata bool `protobuf:"varint,18,opt,name=overrideMetadata,proto3" json:"overrideMetadata,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Metadata) Reset() { *m = Metadata{} }
func (m *Metadata) String() string { return proto.CompactTextString(m) }
func (*Metadata) ProtoMessage() {}
func (*Metadata) Descriptor() ([]byte, []int) { return fileDescriptor2, []int{1} }
func (*Metadata) Descriptor() ([]byte, []int) {
return fileDescriptor_metadata_16a60a1a41d0ad3d, []int{1}
}
func (m *Metadata) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Metadata.Unmarshal(m, b)
}
func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Metadata.Marshal(b, m, deterministic)
}
func (dst *Metadata) XXX_Merge(src proto.Message) {
xxx_messageInfo_Metadata.Merge(dst, src)
}
func (m *Metadata) XXX_Size() int {
return xxx_messageInfo_Metadata.Size(m)
}
func (m *Metadata) XXX_DiscardUnknown() {
xxx_messageInfo_Metadata.DiscardUnknown(m)
}
var xxx_messageInfo_Metadata proto.InternalMessageInfo
func (m *Metadata) GetName() string {
if m != nil {
@ -237,9 +289,9 @@ func (m *Metadata) GetKubeVersion() string {
return ""
}
func (m *Metadata) GetOverrideAppVersion() bool {
func (m *Metadata) GetOverrideMetadata() bool {
if m != nil {
return m.OverrideAppVersion
return m.OverrideMetadata
}
return false
}
@ -247,40 +299,41 @@ func (m *Metadata) GetOverrideAppVersion() bool {
func init() {
proto.RegisterType((*Maintainer)(nil), "hapi.chart.Maintainer")
proto.RegisterType((*Metadata)(nil), "hapi.chart.Metadata")
proto.RegisterMapType((map[string]string)(nil), "hapi.chart.Metadata.AnnotationsEntry")
proto.RegisterEnum("hapi.chart.Metadata_Engine", Metadata_Engine_name, Metadata_Engine_value)
}
func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{
// 451 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x6b, 0xd4, 0x40,
0x14, 0x35, 0xcd, 0x66, 0x77, 0x73, 0x63, 0x35, 0x5e, 0xa4, 0x8c, 0x45, 0x24, 0x2c, 0x0a, 0xfb,
0x94, 0x82, 0xbe, 0x14, 0x1f, 0x84, 0x0a, 0xa5, 0x82, 0x76, 0x2b, 0xc1, 0x0f, 0xf0, 0x6d, 0x9a,
0x5c, 0xba, 0xc3, 0x26, 0x33, 0x61, 0x32, 0xbb, 0xb2, 0xbf, 0xce, 0xbf, 0x26, 0x33, 0x49, 0x9a,
0xb4, 0xec, 0xdb, 0x3d, 0xe7, 0x64, 0xce, 0x9d, 0x73, 0xe7, 0x06, 0x5e, 0xad, 0x79, 0x2d, 0xce,
0xf2, 0x35, 0xd7, 0xe6, 0xac, 0x22, 0xc3, 0x0b, 0x6e, 0x78, 0x5a, 0x6b, 0x65, 0x14, 0x82, 0x95,
0x52, 0x27, 0x2d, 0xbe, 0x00, 0x5c, 0x73, 0x21, 0x0d, 0x17, 0x92, 0x34, 0x22, 0x4c, 0x24, 0xaf,
0x88, 0x79, 0x89, 0xb7, 0x0c, 0x33, 0x57, 0xe3, 0x4b, 0x08, 0xa8, 0xe2, 0xa2, 0x64, 0x47, 0x8e,
0x6c, 0x01, 0xc6, 0xe0, 0x6f, 0x75, 0xc9, 0x7c, 0xc7, 0xd9, 0x72, 0xf1, 0x2f, 0x80, 0xf9, 0x75,
0xd7, 0xe8, 0xa0, 0x11, 0xc2, 0x64, 0xad, 0x2a, 0xea, 0x7c, 0x5c, 0x8d, 0x0c, 0x66, 0x8d, 0xda,
0xea, 0x9c, 0x1a, 0xe6, 0x27, 0xfe, 0x32, 0xcc, 0x7a, 0x68, 0x95, 0x1d, 0xe9, 0x46, 0x28, 0xc9,
0x26, 0xee, 0x40, 0x0f, 0x31, 0x81, 0xa8, 0xa0, 0x26, 0xd7, 0xa2, 0x36, 0x56, 0x0d, 0x9c, 0x3a,
0xa6, 0xf0, 0x14, 0xe6, 0x1b, 0xda, 0xff, 0x55, 0xba, 0x68, 0xd8, 0xd4, 0xd9, 0xde, 0x63, 0x3c,
0x87, 0xa8, 0xba, 0x0f, 0xdc, 0xb0, 0x59, 0xe2, 0x2f, 0xa3, 0xf7, 0x27, 0xe9, 0x30, 0x92, 0x74,
0x98, 0x47, 0x36, 0xfe, 0x14, 0x4f, 0x60, 0x4a, 0xf2, 0x4e, 0x48, 0x62, 0x73, 0xd7, 0xb2, 0x43,
0x36, 0x97, 0xc8, 0x95, 0x64, 0x61, 0x9b, 0xcb, 0xd6, 0xf8, 0x06, 0x80, 0xd7, 0xe2, 0x57, 0x17,
0x00, 0x9c, 0x32, 0x62, 0xf0, 0x35, 0x84, 0xb9, 0x92, 0x85, 0x70, 0x09, 0x22, 0x27, 0x0f, 0x84,
0x75, 0x34, 0xfc, 0xae, 0x61, 0x4f, 0x5b, 0x47, 0x5b, 0xb7, 0x8e, 0x75, 0xef, 0x78, 0xdc, 0x3b,
0xf6, 0x8c, 0xd5, 0x0b, 0xaa, 0x35, 0xe5, 0xdc, 0x50, 0xc1, 0x9e, 0x25, 0xde, 0x72, 0x9e, 0x8d,
0x18, 0x7c, 0x0b, 0xc7, 0x46, 0x94, 0x25, 0xe9, 0xde, 0xe2, 0xb9, 0xb3, 0x78, 0x48, 0xe2, 0x15,
0x44, 0x5c, 0x4a, 0x65, 0xb8, 0xbd, 0x47, 0xc3, 0x62, 0x37, 0x9d, 0x77, 0x0f, 0xa6, 0xd3, 0xef,
0xd2, 0xc5, 0xf0, 0xdd, 0xa5, 0x34, 0x7a, 0x9f, 0x8d, 0x4f, 0xda, 0x47, 0xda, 0x6c, 0x6f, 0xa9,
0x6f, 0xf6, 0xa2, 0x7d, 0xa4, 0x11, 0x85, 0x29, 0xa0, 0xda, 0x91, 0xd6, 0xa2, 0xa0, 0x8b, 0x21,
0x18, 0xba, 0x8b, 0x1f, 0x50, 0x4e, 0x3f, 0x41, 0xfc, 0xb8, 0xa5, 0xdd, 0xc2, 0x0d, 0xed, 0xbb,
0x2d, 0xb3, 0xa5, 0xdd, 0xd6, 0x1d, 0x2f, 0xb7, 0xfd, 0x96, 0xb5, 0xe0, 0xe3, 0xd1, 0xb9, 0xb7,
0x48, 0x60, 0x7a, 0xd9, 0x3e, 0x58, 0x04, 0xb3, 0x9f, 0xab, 0xaf, 0xab, 0x9b, 0xdf, 0xab, 0xf8,
0x09, 0x86, 0x10, 0x5c, 0xdd, 0xfc, 0xf8, 0xfe, 0x2d, 0xf6, 0x3e, 0xcf, 0xfe, 0x04, 0x2e, 0xe3,
0xed, 0xd4, 0xfd, 0x27, 0x1f, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x72, 0xe2, 0x55, 0x08, 0x44,
0x03, 0x00, 0x00,
func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor_metadata_16a60a1a41d0ad3d) }
var fileDescriptor_metadata_16a60a1a41d0ad3d = []byte{
// 452 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x8b, 0xd3, 0x40,
0x14, 0x35, 0x9b, 0xa6, 0x6d, 0x6e, 0x5c, 0x8d, 0x17, 0x59, 0xc6, 0x45, 0x24, 0x14, 0x85, 0xe2,
0x43, 0x17, 0xf4, 0x65, 0xf1, 0x41, 0x50, 0x58, 0x56, 0xd0, 0xed, 0x4a, 0xf0, 0x03, 0x7c, 0x9b,
0x4d, 0x2e, 0xdb, 0xa1, 0xc9, 0x4c, 0x98, 0x4c, 0x2b, 0xfd, 0x6d, 0xfe, 0x39, 0x99, 0x49, 0x66,
0x9b, 0xea, 0xbe, 0xdd, 0x73, 0x4e, 0xe6, 0xdc, 0x39, 0x77, 0x6e, 0xe0, 0xd9, 0x8a, 0x37, 0xe2,
0xac, 0x58, 0x71, 0x6d, 0xce, 0x6a, 0x32, 0xbc, 0xe4, 0x86, 0x2f, 0x1a, 0xad, 0x8c, 0x42, 0xb0,
0xd2, 0xc2, 0x49, 0xb3, 0x4f, 0x00, 0x57, 0x5c, 0x48, 0xc3, 0x85, 0x24, 0x8d, 0x08, 0x23, 0xc9,
0x6b, 0x62, 0x41, 0x16, 0xcc, 0xe3, 0xdc, 0xd5, 0xf8, 0x14, 0x22, 0xaa, 0xb9, 0xa8, 0xd8, 0x91,
0x23, 0x3b, 0x80, 0x29, 0x84, 0x1b, 0x5d, 0xb1, 0xd0, 0x71, 0xb6, 0x9c, 0xfd, 0x89, 0x60, 0x7a,
0xd5, 0x37, 0xba, 0xd7, 0x08, 0x61, 0xb4, 0x52, 0x35, 0xf5, 0x3e, 0xae, 0x46, 0x06, 0x93, 0x56,
0x6d, 0x74, 0x41, 0x2d, 0x0b, 0xb3, 0x70, 0x1e, 0xe7, 0x1e, 0x5a, 0x65, 0x4b, 0xba, 0x15, 0x4a,
0xb2, 0x91, 0x3b, 0xe0, 0x21, 0x66, 0x90, 0x94, 0xd4, 0x16, 0x5a, 0x34, 0xc6, 0xaa, 0x91, 0x53,
0x87, 0x14, 0x9e, 0xc2, 0x74, 0x4d, 0xbb, 0xdf, 0x4a, 0x97, 0x2d, 0x1b, 0x3b, 0xdb, 0x3b, 0x8c,
0xe7, 0x90, 0xd4, 0x77, 0x81, 0x5b, 0x36, 0xc9, 0xc2, 0x79, 0xf2, 0xe6, 0x64, 0xb1, 0x1f, 0xc9,
0x62, 0x3f, 0x8f, 0x7c, 0xf8, 0x29, 0x9e, 0xc0, 0x98, 0xe4, 0xad, 0x90, 0xc4, 0xa6, 0xae, 0x65,
0x8f, 0x6c, 0x2e, 0x51, 0x28, 0xc9, 0xe2, 0x2e, 0x97, 0xad, 0xf1, 0x05, 0x00, 0x6f, 0xc4, 0x8f,
0x3e, 0x00, 0x38, 0x65, 0xc0, 0xe0, 0x73, 0x88, 0x0b, 0x25, 0x4b, 0xe1, 0x12, 0x24, 0x4e, 0xde,
0x13, 0xd6, 0xd1, 0xf0, 0xdb, 0x96, 0x3d, 0xec, 0x1c, 0x6d, 0xdd, 0x39, 0x36, 0xde, 0xf1, 0xd8,
0x3b, 0x7a, 0xc6, 0xea, 0x25, 0x35, 0x9a, 0x0a, 0x6e, 0xa8, 0x64, 0x8f, 0xb2, 0x60, 0x3e, 0xcd,
0x07, 0x0c, 0xbe, 0x84, 0x63, 0x23, 0xaa, 0x8a, 0xb4, 0xb7, 0x78, 0xec, 0x2c, 0x0e, 0x49, 0xbc,
0x84, 0x84, 0x4b, 0xa9, 0x0c, 0xb7, 0xf7, 0x68, 0x59, 0xea, 0xa6, 0xf3, 0xea, 0x60, 0x3a, 0x7e,
0x97, 0x3e, 0xec, 0xbf, 0xbb, 0x90, 0x46, 0xef, 0xf2, 0xe1, 0x49, 0xfb, 0x48, 0xeb, 0xcd, 0x0d,
0xf9, 0x66, 0x4f, 0xba, 0x47, 0x1a, 0x50, 0xf8, 0x1a, 0x52, 0xb5, 0x25, 0xad, 0x45, 0x49, 0xde,
0x93, 0xa1, 0xbb, 0xf6, 0x7f, 0xfc, 0xe9, 0x7b, 0x48, 0xff, 0x6d, 0x67, 0x37, 0x70, 0x4d, 0xbb,
0x7e, 0xc3, 0x6c, 0x69, 0x37, 0x75, 0xcb, 0xab, 0x8d, 0xdf, 0xb0, 0x0e, 0xbc, 0x3b, 0x3a, 0x0f,
0x66, 0x19, 0x8c, 0x2f, 0xba, 0xc7, 0x4a, 0x60, 0xf2, 0x7d, 0xf9, 0x79, 0x79, 0xfd, 0x73, 0x99,
0x3e, 0xc0, 0x18, 0xa2, 0xcb, 0xeb, 0x6f, 0x5f, 0xbf, 0xa4, 0xc1, 0xc7, 0xc9, 0xaf, 0xc8, 0xe5,
0xbb, 0x19, 0xbb, 0x7f, 0xe4, 0xed, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2c, 0xa1, 0x61, 0x2a,
0x40, 0x03, 0x00, 0x00,
}

Loading…
Cancel
Save