From 683947f21de11dee1083c0386b678861e6d961b9 Mon Sep 17 00:00:00 2001
From: Daniel
Date: Sun, 18 Dec 2022 17:07:54 +0200
Subject: [PATCH] feat: Expand Slack Trigger Capabilities -
blocks,attachments,threads and more (#2369)
Signed-off-by: Daniel Soifer
---
api/jsonschema/schema.json | 44 +-
api/openapi-spec/swagger.json | 44 +-
api/sensor.html | 138 +-
api/sensor.md | 149 ++-
go.mod | 12 +
go.sum | 65 +
pkg/apis/sensor/v1alpha1/generated.pb.go | 1165 ++++++++++++-----
pkg/apis/sensor/v1alpha1/generated.proto | 38 +-
pkg/apis/sensor/v1alpha1/openapi_generated.go | 86 +-
pkg/apis/sensor/v1alpha1/types.go | 32 +-
.../sensor/v1alpha1/zz_generated.deepcopy.go | 34 +
sensors/triggers/slack/slack.go | 114 +-
12 files changed, 1547 insertions(+), 374 deletions(-)
diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json
index 08801b8bfb..8df52ecd0e 100644
--- a/api/jsonschema/schema.json
+++ b/api/jsonschema/schema.json
@@ -3940,11 +3940,45 @@
},
"type": "object"
},
+ "io.argoproj.sensor.v1alpha1.SlackSender": {
+ "properties": {
+ "icon": {
+ "description": "Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png",
+ "type": "string"
+ },
+ "username": {
+ "description": "Username is the Slack application's username",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "io.argoproj.sensor.v1alpha1.SlackThread": {
+ "properties": {
+ "broadcastMessageToChannel": {
+ "description": "BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel",
+ "type": "boolean"
+ },
+ "messageAggregationKey": {
+ "description": "MessageAggregationKey allows to aggregate the messages to a thread by some key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"io.argoproj.sensor.v1alpha1.SlackTrigger": {
"description": "SlackTrigger refers to the specification of the slack notification trigger.",
"properties": {
+ "attachments": {
+ "description": "Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .",
+ "type": "string"
+ },
+ "blocks": {
+ "description": "Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .",
+ "type": "string"
+ },
"channel": {
- "description": "Channel refers to which Slack channel to send slack message.",
+ "description": "Channel refers to which Slack channel to send Slack message.",
"type": "string"
},
"message": {
@@ -3958,9 +3992,17 @@
},
"type": "array"
},
+ "sender": {
+ "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackSender",
+ "description": "Sender refers to additional configuration of the Slack application that sends the message."
+ },
"slackToken": {
"$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector",
"description": "SlackToken refers to the Kubernetes secret that holds the slack token required to send messages."
+ },
+ "thread": {
+ "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackThread",
+ "description": "Thread refers to additional options for sending messages to a Slack thread."
}
},
"type": "object"
diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json
index 07c5ddd52e..7b70fcc232 100644
--- a/api/openapi-spec/swagger.json
+++ b/api/openapi-spec/swagger.json
@@ -3914,12 +3914,46 @@
}
}
},
+ "io.argoproj.sensor.v1alpha1.SlackSender": {
+ "type": "object",
+ "properties": {
+ "icon": {
+ "description": "Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png",
+ "type": "string"
+ },
+ "username": {
+ "description": "Username is the Slack application's username",
+ "type": "string"
+ }
+ }
+ },
+ "io.argoproj.sensor.v1alpha1.SlackThread": {
+ "type": "object",
+ "properties": {
+ "broadcastMessageToChannel": {
+ "description": "BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel",
+ "type": "boolean"
+ },
+ "messageAggregationKey": {
+ "description": "MessageAggregationKey allows to aggregate the messages to a thread by some key.",
+ "type": "string"
+ }
+ }
+ },
"io.argoproj.sensor.v1alpha1.SlackTrigger": {
"description": "SlackTrigger refers to the specification of the slack notification trigger.",
"type": "object",
"properties": {
+ "attachments": {
+ "description": "Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .",
+ "type": "string"
+ },
+ "blocks": {
+ "description": "Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .",
+ "type": "string"
+ },
"channel": {
- "description": "Channel refers to which Slack channel to send slack message.",
+ "description": "Channel refers to which Slack channel to send Slack message.",
"type": "string"
},
"message": {
@@ -3933,9 +3967,17 @@
"$ref": "#/definitions/io.argoproj.sensor.v1alpha1.TriggerParameter"
}
},
+ "sender": {
+ "description": "Sender refers to additional configuration of the Slack application that sends the message.",
+ "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackSender"
+ },
"slackToken": {
"description": "SlackToken refers to the Kubernetes secret that holds the slack token required to send messages.",
"$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector"
+ },
+ "thread": {
+ "description": "Thread refers to additional options for sending messages to a Slack thread.",
+ "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.SlackThread"
}
}
},
diff --git a/api/sensor.html b/api/sensor.html
index f487cb4056..1f022d634f 100644
--- a/api/sensor.html
+++ b/api/sensor.html
@@ -2621,6 +2621,90 @@ SensorStatus
+SlackSender
+
+
+(Appears on:
+SlackTrigger)
+
+
+
+
+
+
+Field |
+Description |
+
+
+
+
+
+username
+
+string
+
+ |
+
+(Optional)
+ Username is the Slack application’s username
+ |
+
+
+
+icon
+
+string
+
+ |
+
+(Optional)
+ Icon is the Slack application’s icon, e.g. :robot_face: or https://example.com/image.png
+ |
+
+
+
+SlackThread
+
+
+(Appears on:
+SlackTrigger)
+
+
+
+
+
+
+Field |
+Description |
+
+
+
+
+
+messageAggregationKey
+
+string
+
+ |
+
+(Optional)
+ MessageAggregationKey allows to aggregate the messages to a thread by some key.
+ |
+
+
+
+broadcastMessageToChannel
+
+bool
+
+ |
+
+(Optional)
+ BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel
+ |
+
+
+
SlackTrigger
@@ -2675,7 +2759,7 @@
SlackTrigger
(Optional)
- Channel refers to which Slack channel to send slack message.
+Channel refers to which Slack channel to send Slack message.
|
@@ -2690,6 +2774,58 @@ SlackTrigger
Message refers to the message to send to the Slack channel.
+
+
+attachments
+
+string
+
+ |
+
+(Optional)
+ Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .
+ |
+
+
+
+blocks
+
+string
+
+ |
+
+(Optional)
+ Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .
+ |
+
+
+
+thread
+
+
+SlackThread
+
+
+ |
+
+(Optional)
+ Thread refers to additional options for sending messages to a Slack thread.
+ |
+
+
+
+sender
+
+
+SlackSender
+
+
+ |
+
+(Optional)
+ Sender refers to additional configuration of the Slack application that sends the message.
+ |
+
StandardK8STrigger
diff --git a/api/sensor.md b/api/sensor.md
index d12679314f..e8a9ea4518 100644
--- a/api/sensor.md
+++ b/api/sensor.md
@@ -2721,6 +2721,99 @@ github.com/argoproj/argo-events/pkg/apis/common.Status
+
+SlackSender
+
+
+(Appears on:
+SlackTrigger)
+
+
+
+
+
+
+
+Field
+ |
+
+Description
+ |
+
+
+
+
+
+username string
+ |
+
+(Optional)
+
+Username is the Slack application’s username
+
+ |
+
+
+
+icon string
+ |
+
+(Optional)
+
+Icon is the Slack application’s icon, e.g. :robot_face: or
+https://example.com/image.png
+
+ |
+
+
+
+
+SlackThread
+
+
+(Appears on:
+SlackTrigger)
+
+
+
+
+
+
+
+Field
+ |
+
+Description
+ |
+
+
+
+
+
+messageAggregationKey string
+ |
+
+(Optional)
+
+MessageAggregationKey allows to aggregate the messages to a thread by
+some key.
+
+ |
+
+
+
+broadcastMessageToChannel bool
+ |
+
+(Optional)
+
+BroadcastMessageToChannel allows to also broadcast the message from the
+thread to the channel
+
+ |
+
+
+
SlackTrigger
@@ -2780,7 +2873,7 @@ required to send messages.
(Optional)
-Channel refers to which Slack channel to send slack message.
+Channel refers to which Slack channel to send Slack message.
|
@@ -2795,6 +2888,60 @@ Message refers to the message to send to the Slack channel.
+
+
+attachments string
+ |
+
+(Optional)
+
+Attachments is a JSON format string that represents an array of Slack
+attachments according to the attachments API:
+https://api.slack.com/reference/messaging/attachments
+.
+
+ |
+
+
+
+blocks string
+ |
+
+(Optional)
+
+Blocks is a JSON format string that represents an array of Slack blocks
+according to the blocks API:
+https://api.slack.com/reference/block-kit/blocks
+.
+
+ |
+
+
+
+thread
+ SlackThread
+ |
+
+(Optional)
+
+Thread refers to additional options for sending messages to a Slack
+thread.
+
+ |
+
+
+
+sender
+ SlackSender
+ |
+
+(Optional)
+
+Sender refers to additional configuration of the Slack application that
+sends the message.
+
+ |
+
diff --git a/go.mod b/go.mod
index 27c5607e55..dc4260c8da 100644
--- a/go.mod
+++ b/go.mod
@@ -19,6 +19,7 @@ require (
github.com/antonmedv/expr v1.9.0
github.com/apache/openwhisk-client-go v0.0.0-20190915054138-716c6f973eb2
github.com/apache/pulsar-client-go v0.8.1
+ github.com/argoproj/notifications-engine v0.3.1-0.20221203221941-490d98afd1d6
github.com/argoproj/pkg v0.13.6
github.com/aws/aws-sdk-go v1.44.162
github.com/blushft/go-diagrams v0.0.0-20201006005127-c78c821223d9
@@ -94,6 +95,8 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect
github.com/DataDog/zstd v1.5.0 // indirect
+ github.com/PagerDuty/go-pagerduty v1.6.0 // indirect
+ github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20210112200207-10ab4d695d60 // indirect
github.com/andybalholm/brotli v1.0.4 // indirect
github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e // indirect
github.com/cyphar/filepath-securejoin v0.2.3 // indirect
@@ -103,11 +106,14 @@ require (
github.com/emicklei/go-restful/v3 v3.8.0 // indirect
github.com/felixge/httpsnoop v1.0.3 // indirect
github.com/go-openapi/spec v0.20.4 // indirect
+ github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/google/gnostic v0.5.7-v3refs // indirect
+ github.com/google/go-github/v41 v41.0.0 // indirect
github.com/google/go-github/v45 v45.2.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect
+ github.com/gregdel/pushover v1.1.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
@@ -119,12 +125,18 @@ require (
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 // indirect
+ github.com/opsgenie/opsgenie-go-sdk-v2 v1.0.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.5 // indirect
github.com/pierrec/lz4/v4 v4.1.17 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/sanity-io/litter v1.5.5 // indirect
+ github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 // indirect
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
github.com/xdg-go/stringprep v1.0.4 // indirect
+ gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect
+ gomodules.xyz/notify v0.1.1 // indirect
+ gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
+ gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect
moul.io/http2curl/v2 v2.3.0 // indirect
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
)
diff --git a/go.sum b/go.sum
index a58449f645..5fb85cfb55 100644
--- a/go.sum
+++ b/go.sum
@@ -114,6 +114,8 @@ github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q
github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo=
github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
+github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo=
+github.com/Jeffail/gabs v1.4.0/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
@@ -128,6 +130,8 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
+github.com/PagerDuty/go-pagerduty v1.6.0 h1:am81SzvG5Pw+s3JZ5yEy6kGvsXXklTNRrGr3d8WKpsU=
+github.com/PagerDuty/go-pagerduty v1.6.0/go.mod h1:7eaBLzsDpK7VUvU0SJ5mohczQkoWrrr5CjDaw5gh1as=
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ=
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
@@ -137,6 +141,8 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
+github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20210112200207-10ab4d695d60 h1:prBTRx78AQnXzivNT9Crhu564W/zPPr3ibSlpT9xKcE=
+github.com/RocketChat/Rocket.Chat.Go.SDK v0.0.0-20210112200207-10ab4d695d60/go.mod h1:rjP7sIipbZcagro/6TCk6X0ZeFT2eyudH5+fve/cbBA=
github.com/Shopify/sarama v1.37.0 h1:WmHgUY/omLM9SCr9nhRwVhL7Kln+4RmVujW1ffZUDjs=
github.com/Shopify/sarama v1.37.0/go.mod h1:smFYoF2zzSNsxF2V9MXRew2PrMfBGAJUJOA0Edd+v4s=
github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc=
@@ -172,9 +178,12 @@ github.com/apache/pulsar-client-go v0.8.1 h1:UZINLbH3I5YtNzqkju7g9vrl4CKrEgYSx2r
github.com/apache/pulsar-client-go v0.8.1/go.mod h1:yJNcvn/IurarFDxwmoZvb2Ieylg630ifxeO/iXpk27I=
github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e h1:EqiJ0Xil8NmcXyupNqXV9oYDBeWntEIegxLahrTr8DY=
github.com/apache/pulsar-client-go/oauth2 v0.0.0-20220120090717-25e59572242e/go.mod h1:Xee4tgYLFpYcPMcTfBYWE1uKRzeciodGTSEDMzsR6i8=
+github.com/appscode/go v0.0.0-20191119085241-0887d8ec2ecc/go.mod h1:OawnOmAL4ZX3YaPdN+8HTNwBveT1jMsqP74moa9XUbE=
github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4=
github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI=
github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk=
+github.com/argoproj/notifications-engine v0.3.1-0.20221203221941-490d98afd1d6 h1:b92Xft7MQv/SP56FW08zt5CMTE1rySH8UPDKOAgSzOM=
+github.com/argoproj/notifications-engine v0.3.1-0.20221203221941-490d98afd1d6/go.mod h1:pgPU59KCsBOMhyw9amRWPoSuBmUWvx3Xsc5r0mUriLg=
github.com/argoproj/pkg v0.13.6 h1:36WPD9MNYECHcO1/R1pj6teYspiK7uMQLCgLGft2abM=
github.com/argoproj/pkg v0.13.6/go.mod h1:I698DoJBKuvNFaixh4vFl2C88cNIT1WS7KCbz5ewyF8=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
@@ -199,6 +208,7 @@ github.com/aws/aws-sdk-go v1.44.39/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4
github.com/aws/aws-sdk-go v1.44.162 h1:hKAd+X+/BLxVMzH+4zKxbQcQQGrk2UhFX0OTu1Mhon8=
github.com/aws/aws-sdk-go v1.44.162/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/beefsack/go-rate v0.0.0-20220214233405-116f4ca011a0/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA=
+github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg=
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -216,6 +226,8 @@ github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvF
github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q=
github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kfDfZN/92gkDlLwGVA=
github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU=
+github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q=
+github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
@@ -240,6 +252,8 @@ github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWH
github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo=
github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA=
github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
+github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
+github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
github.com/colinmarc/hdfs v1.1.4-0.20180802165501-48eb8d6c34a9 h1:N98Et5DzDoJ1IO1cd8cZkXXT81W5+CR5S8rDU2I0HnM=
github.com/colinmarc/hdfs v1.1.4-0.20180802165501-48eb8d6c34a9/go.mod h1:0DumPviB681UcSuJErAbDIOx6SIaJWj463TymfZG02I=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
@@ -263,6 +277,7 @@ github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
github.com/devigned/tab v0.1.1 h1:3mD6Kb1mUOYeLpJvTVSDwSg5ZsfSxfvxGRTxRsJsITA=
github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
@@ -315,6 +330,9 @@ github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
+github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64=
+github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg=
+github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0=
github.com/fasthttp/websocket v1.4.3-rc.6 h1:omHqsl8j+KXpmzRjF8bmzOSYJ8GnS0E3efi1wYT+niY=
github.com/fasthttp/websocket v1.4.3-rc.6/go.mod h1:43W9OM2T8FeXpCWMsBd9Cb7nE2CACNqNvCqQCoty/Lc=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
@@ -499,6 +517,8 @@ github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP
github.com/go-swagger/go-swagger v0.29.0 h1:z3YoZtLvS1Y8TE/PCat1VypcZxM0IgKLt0NvZxQyNl8=
github.com/go-swagger/go-swagger v0.29.0/go.mod h1:Z4GJzI+bHKKkGB2Ji1rawpi3/ldXX8CkzGIa9HAC5EE=
github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013 h1:l9rI6sNaZgNC0LnF3MiE+qTmyBA/tZAg1rtyrGbUMK0=
+github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc=
+github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8=
github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho=
github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
@@ -564,6 +584,7 @@ github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
+github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -606,12 +627,15 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-github/v31 v31.0.0 h1:JJUxlP9lFK+ziXKimTCprajMApV1ecWD4NB6CCb0plo=
github.com/google/go-github/v31 v31.0.0/go.mod h1:NQPZol8/1sMoWYGN2yaALIBytu17gAWfhbweiEed3pM=
+github.com/google/go-github/v41 v41.0.0 h1:HseJrM2JFf2vfiZJ8anY2hqBjdfY1Vlj/K27ueww4gg=
+github.com/google/go-github/v41 v41.0.0/go.mod h1:XgmCA5H323A9rtgExdTcnDkcqp6S30AVACCBDOonIxg=
github.com/google/go-github/v45 v45.2.0 h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI=
github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
@@ -653,6 +677,8 @@ github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsC
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
+github.com/gopackage/ddp v0.0.0-20170117053602-652027933df4 h1:4EZlYQIiyecYJlUbVkFXCXHz1QPhVXcHnQKAzBTPfQo=
+github.com/gopackage/ddp v0.0.0-20170117053602-652027933df4/go.mod h1:lEO7XoHJ/xNRBCxrn4h/CEB67h0kW1B0t4ooP2yrjUA=
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0=
@@ -664,8 +690,11 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
+github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
+github.com/gregdel/pushover v1.1.0 h1:dwHyvrcpZCOS9V1fAnKPaGRRI5OC55cVaKhMybqNsKQ=
+github.com/gregdel/pushover v1.1.0/go.mod h1:EcaO66Nn1StkpEm1iKtBTV3d2A16SoMsVER1PthX7to=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
@@ -696,6 +725,7 @@ github.com/hashicorp/go-msgpack v1.1.5/go.mod h1:gWVc3sv/wbDmR3rQsj1CAktEZzoz1YN
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
+github.com/hashicorp/go-retryablehttp v0.5.1/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ=
github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
@@ -721,6 +751,7 @@ github.com/hashicorp/raft v1.3.6/go.mod h1:4Ak7FSPnuvmb0GV6vgIAJ4vYT4bek9bb6Q+7H
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/hokaccha/go-prettyjson v0.0.0-20190818114111-108c894c2c0e h1:0aewS5NTyxftZHSnFaJmWE5oCCrj4DyEXkAiMa1iZJM=
github.com/hokaccha/go-prettyjson v0.0.0-20190818114111-108c894c2c0e/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI=
+github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4=
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
@@ -743,6 +774,7 @@ github.com/itchyny/timefmt-go v0.1.5 h1:G0INE2la8S6ru/ZI5JecgyzbbJNs5lG1RcBqa7Jm
github.com/itchyny/timefmt-go v0.1.5/go.mod h1:nEP7L+2YmAbT2kZ2HfSs1d8Xtw9LY8D2stDBckWakZ8=
github.com/jawher/mow.cli v1.0.4/go.mod h1:5hQj2V8g+qYmLUVWqu4Wuja1pI57M83EChYLVZ0sMKk=
github.com/jawher/mow.cli v1.2.0/go.mod h1:y+pcA3jBAdo/GIZx/0rFjw/K2bVEODP9rfZOfaiq8Ko=
+github.com/jaytaylor/html2text v0.0.0-20190408195923-01ec452cbe43/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=
@@ -842,10 +874,13 @@ github.com/linkedin/goavro/v2 v2.9.8 h1:jN50elxBsGBDGVDEKqUlDuU1cFwJ11K/yrJCBMe/
github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA=
github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s=
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
+github.com/lusis/go-slackbot v0.0.0-20180109053408-401027ccfef5/go.mod h1:c2mYKRyMb1BPkO5St0c/ps62L4S0W2NAkaTXj9qEI+0=
+github.com/lusis/slack-test v0.0.0-20190426140909-c40012f20018/go.mod h1:sFlOUpQL1YcjhFVXhg1CG8ZASEs/Mf1oVb6H75JL/zg=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
+github.com/mailgun/mailgun-go v2.0.0+incompatible/go.mod h1:NWTyU+O4aczg/nsGhQnvHL6v2n5Gy6Sv5tNDVvC6FbU=
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
@@ -932,6 +967,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
@@ -966,6 +1002,7 @@ github.com/nats-io/stan.go v0.10.3/go.mod h1:Cgf5zk6kKpOCqqUIJeuBz6ZDz9osT791VhS
github.com/nicksnyder/go-i18n v1.10.1-0.20190510212457-b280125b035a h1:WsVgYECoTBctNmskVv/BZ8gh/TWP1xJf61PSW9HBdRY=
github.com/nicksnyder/go-i18n v1.10.1-0.20190510212457-b280125b035a/go.mod h1:e4Di5xjP9oTVrC6y3C7C0HoSYXjSbhh/dU0eUV32nB4=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/nlopes/slack v0.5.0/go.mod h1:jVI4BBK3lSktibKahxBF74txcK2vyvkza1z/+rRnVAM=
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
github.com/nsqio/go-nsq v1.1.0 h1:PQg+xxiUjA7V+TLdXw7nVrJ5Jbl3sN86EhGCQj4+FYE=
github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
@@ -973,22 +1010,29 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
+github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 h1:Yl0tPBa8QPjGmesFh1D0rDy+q1Twx6FyU7VWHi8wZbI=
github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852/go.mod h1:eqOVx5Vwu4gd2mmMZvVZsgIqNSaW3xxRThUJ0k/TPk4=
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
+github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY=
github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
+github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/opsgenie/opsgenie-go-sdk-v2 v1.0.5 h1:AnS8ZCC5dle8P4X4FZ+IOlX9v0jAkCMiZDIzRnYwBbs=
+github.com/opsgenie/opsgenie-go-sdk-v2 v1.0.5/go.mod h1:f0ezb0R/mrB9Hpm5RrIS6EX3ydjsR2nAB88nYYXZcNY=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
@@ -1109,11 +1153,14 @@ github.com/slack-go/slack v0.12.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQ
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs=
github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
+github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg=
github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
+github.com/sony/sonyflake v1.0.0 h1:MpU6Ro7tfXwgn2l5eluf9xQvQJDROTBImNCfRXn/YeM=
+github.com/sony/sonyflake v1.0.0/go.mod h1:Jv3cfhf/UFtolOTTRd3q4Nl6ENqM+KfyZ5PseKfZGF4=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
@@ -1143,6 +1190,7 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q
github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU=
github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As=
+github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM=
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -1192,6 +1240,8 @@ github.com/valyala/fasthttp v1.34.0/go.mod h1:epZA5N+7pY6ZaEKRmstzOuYJx9HI8DI1oa
github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
+github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0 h1:qqllXPzXh+So+mmANlX/gCJrgo+1kQyshMoQ+NASzm0=
+github.com/whilp/git-urls v0.0.0-20191001220047-6db9661140c0/go.mod h1:2rx5KE5FLD0HRfkkpyn8JwbVLBdhgeiOb2D2D9LLKM4=
github.com/xanzy/go-gitlab v0.76.0 h1:mkmuB27RDVZY/iXR61pEUfIqJ15Iivfu1kc3KZtBICI=
github.com/xanzy/go-gitlab v0.76.0/go.mod h1:d/a0vswScO7Agg1CZNz15Ic6SSvBG9vfw8egL99t4kA=
github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI=
@@ -1299,11 +1349,13 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
+golang.org/x/crypto v0.0.0-20190422183909-d864b10871cd/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -1389,6 +1441,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190607181551-461777fb6f67/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1412,6 +1465,7 @@ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
@@ -1487,6 +1541,7 @@ golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1571,6 +1626,7 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220406155245-289d7a0edf71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -1690,8 +1746,13 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 h1:juzzlx91nWAOsHuOVfXZPMXHtJEKouZvY9bBbwlOeYs=
+gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45/go.mod h1:41y72mzHT7+jFNgyBpJRrZWuZJcLmLrTpq6iGgOFJMQ=
gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY=
gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY=
+gomodules.xyz/notify v0.1.1 h1:1tTuoyswmPvzqPCTEDQK8SZ3ukCxLsonAAwst2+y1a0=
+gomodules.xyz/notify v0.1.1/go.mod h1:QgQyU4xEA/plJcDeT66J2Go2V7U4c0pD9wjo7HfFil4=
+gomodules.xyz/version v0.1.0/go.mod h1:Y8xuV02mL/45psyPKG3NCVOwvAOy6T5Kx0l3rCjKSjU=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -1814,6 +1875,8 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
+gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
+gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -1822,6 +1885,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
+gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
diff --git a/pkg/apis/sensor/v1alpha1/generated.pb.go b/pkg/apis/sensor/v1alpha1/generated.pb.go
index 434cb5220a..0145d60df0 100644
--- a/pkg/apis/sensor/v1alpha1/generated.pb.go
+++ b/pkg/apis/sensor/v1alpha1/generated.pb.go
@@ -944,10 +944,66 @@ func (m *SensorStatus) XXX_DiscardUnknown() {
var xxx_messageInfo_SensorStatus proto.InternalMessageInfo
+func (m *SlackSender) Reset() { *m = SlackSender{} }
+func (*SlackSender) ProtoMessage() {}
+func (*SlackSender) Descriptor() ([]byte, []int) {
+ return fileDescriptor_6c4bded897df1f16, []int{32}
+}
+func (m *SlackSender) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *SlackSender) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+}
+func (m *SlackSender) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SlackSender.Merge(m, src)
+}
+func (m *SlackSender) XXX_Size() int {
+ return m.Size()
+}
+func (m *SlackSender) XXX_DiscardUnknown() {
+ xxx_messageInfo_SlackSender.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SlackSender proto.InternalMessageInfo
+
+func (m *SlackThread) Reset() { *m = SlackThread{} }
+func (*SlackThread) ProtoMessage() {}
+func (*SlackThread) Descriptor() ([]byte, []int) {
+ return fileDescriptor_6c4bded897df1f16, []int{33}
+}
+func (m *SlackThread) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *SlackThread) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+}
+func (m *SlackThread) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_SlackThread.Merge(m, src)
+}
+func (m *SlackThread) XXX_Size() int {
+ return m.Size()
+}
+func (m *SlackThread) XXX_DiscardUnknown() {
+ xxx_messageInfo_SlackThread.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SlackThread proto.InternalMessageInfo
+
func (m *SlackTrigger) Reset() { *m = SlackTrigger{} }
func (*SlackTrigger) ProtoMessage() {}
func (*SlackTrigger) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{32}
+ return fileDescriptor_6c4bded897df1f16, []int{34}
}
func (m *SlackTrigger) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -975,7 +1031,7 @@ var xxx_messageInfo_SlackTrigger proto.InternalMessageInfo
func (m *StandardK8STrigger) Reset() { *m = StandardK8STrigger{} }
func (*StandardK8STrigger) ProtoMessage() {}
func (*StandardK8STrigger) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{33}
+ return fileDescriptor_6c4bded897df1f16, []int{35}
}
func (m *StandardK8STrigger) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1003,7 +1059,7 @@ var xxx_messageInfo_StandardK8STrigger proto.InternalMessageInfo
func (m *StatusPolicy) Reset() { *m = StatusPolicy{} }
func (*StatusPolicy) ProtoMessage() {}
func (*StatusPolicy) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{34}
+ return fileDescriptor_6c4bded897df1f16, []int{36}
}
func (m *StatusPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1031,7 +1087,7 @@ var xxx_messageInfo_StatusPolicy proto.InternalMessageInfo
func (m *Template) Reset() { *m = Template{} }
func (*Template) ProtoMessage() {}
func (*Template) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{35}
+ return fileDescriptor_6c4bded897df1f16, []int{37}
}
func (m *Template) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1059,7 +1115,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo
func (m *TimeFilter) Reset() { *m = TimeFilter{} }
func (*TimeFilter) ProtoMessage() {}
func (*TimeFilter) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{36}
+ return fileDescriptor_6c4bded897df1f16, []int{38}
}
func (m *TimeFilter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1087,7 +1143,7 @@ var xxx_messageInfo_TimeFilter proto.InternalMessageInfo
func (m *Trigger) Reset() { *m = Trigger{} }
func (*Trigger) ProtoMessage() {}
func (*Trigger) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{37}
+ return fileDescriptor_6c4bded897df1f16, []int{39}
}
func (m *Trigger) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1115,7 +1171,7 @@ var xxx_messageInfo_Trigger proto.InternalMessageInfo
func (m *TriggerParameter) Reset() { *m = TriggerParameter{} }
func (*TriggerParameter) ProtoMessage() {}
func (*TriggerParameter) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{38}
+ return fileDescriptor_6c4bded897df1f16, []int{40}
}
func (m *TriggerParameter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1143,7 +1199,7 @@ var xxx_messageInfo_TriggerParameter proto.InternalMessageInfo
func (m *TriggerParameterSource) Reset() { *m = TriggerParameterSource{} }
func (*TriggerParameterSource) ProtoMessage() {}
func (*TriggerParameterSource) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{39}
+ return fileDescriptor_6c4bded897df1f16, []int{41}
}
func (m *TriggerParameterSource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1171,7 +1227,7 @@ var xxx_messageInfo_TriggerParameterSource proto.InternalMessageInfo
func (m *TriggerPolicy) Reset() { *m = TriggerPolicy{} }
func (*TriggerPolicy) ProtoMessage() {}
func (*TriggerPolicy) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{40}
+ return fileDescriptor_6c4bded897df1f16, []int{42}
}
func (m *TriggerPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1199,7 +1255,7 @@ var xxx_messageInfo_TriggerPolicy proto.InternalMessageInfo
func (m *TriggerTemplate) Reset() { *m = TriggerTemplate{} }
func (*TriggerTemplate) ProtoMessage() {}
func (*TriggerTemplate) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{41}
+ return fileDescriptor_6c4bded897df1f16, []int{43}
}
func (m *TriggerTemplate) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1227,7 +1283,7 @@ var xxx_messageInfo_TriggerTemplate proto.InternalMessageInfo
func (m *URLArtifact) Reset() { *m = URLArtifact{} }
func (*URLArtifact) ProtoMessage() {}
func (*URLArtifact) Descriptor() ([]byte, []int) {
- return fileDescriptor_6c4bded897df1f16, []int{42}
+ return fileDescriptor_6c4bded897df1f16, []int{44}
}
func (m *URLArtifact) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -1289,6 +1345,8 @@ func init() {
proto.RegisterType((*SensorSpec)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SensorSpec")
proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SensorSpec.LoggingFieldsEntry")
proto.RegisterType((*SensorStatus)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SensorStatus")
+ proto.RegisterType((*SlackSender)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SlackSender")
+ proto.RegisterType((*SlackThread)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SlackThread")
proto.RegisterType((*SlackTrigger)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.SlackTrigger")
proto.RegisterType((*StandardK8STrigger)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.StandardK8STrigger")
proto.RegisterType((*StatusPolicy)(nil), "github.com.argoproj.argo_events.pkg.apis.sensor.v1alpha1.StatusPolicy")
@@ -1308,291 +1366,302 @@ func init() {
}
var fileDescriptor_6c4bded897df1f16 = []byte{
- // 4537 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3c, 0x4b, 0x8c, 0x63, 0xc7,
- 0x71, 0x4b, 0x0e, 0x39, 0x43, 0xd6, 0xcc, 0xec, 0xcc, 0xf6, 0x6a, 0x25, 0x7a, 0x2c, 0x0d, 0x17,
- 0x34, 0xa2, 0xac, 0x0d, 0x9b, 0x23, 0xad, 0x92, 0x78, 0xad, 0x20, 0xb6, 0x38, 0x9c, 0x19, 0xed,
- 0x87, 0xbb, 0x3b, 0xaa, 0xc7, 0x91, 0x90, 0x0f, 0x20, 0xbd, 0x79, 0x6c, 0x92, 0x6f, 0xe7, 0xf1,
- 0x3d, 0x6e, 0xf7, 0xe3, 0xac, 0xc6, 0x80, 0x13, 0x27, 0x46, 0x02, 0x18, 0x01, 0xe4, 0x1c, 0x7c,
- 0xc8, 0xc9, 0xc8, 0x25, 0x87, 0x20, 0x39, 0x04, 0xc8, 0x31, 0x37, 0x9f, 0x74, 0x54, 0x6e, 0x3e,
- 0x24, 0x44, 0x44, 0x9f, 0x72, 0x30, 0x12, 0x9f, 0x02, 0xec, 0x29, 0xe8, 0xdf, 0xfb, 0x91, 0xab,
- 0x9d, 0x59, 0xae, 0x66, 0x03, 0xf8, 0xc6, 0x57, 0x55, 0x5d, 0xd5, 0x5d, 0x5d, 0x5d, 0x5d, 0x55,
- 0xdd, 0x4d, 0xb8, 0xd9, 0x73, 0xc3, 0xfe, 0xe8, 0xb0, 0xee, 0x04, 0x83, 0x2d, 0x9b, 0xf5, 0x82,
- 0x21, 0x0b, 0x1e, 0xc8, 0x1f, 0xdf, 0xa2, 0xc7, 0xd4, 0x0f, 0xf9, 0xd6, 0xf0, 0xa8, 0xb7, 0x65,
- 0x0f, 0x5d, 0xbe, 0xc5, 0xa9, 0xcf, 0x03, 0xb6, 0x75, 0xfc, 0xa6, 0xed, 0x0d, 0xfb, 0xf6, 0x9b,
- 0x5b, 0x3d, 0xea, 0x53, 0x66, 0x87, 0xb4, 0x53, 0x1f, 0xb2, 0x20, 0x0c, 0xc8, 0x8d, 0x98, 0x53,
- 0xdd, 0x70, 0x92, 0x3f, 0x3e, 0x54, 0x9c, 0xea, 0xc3, 0xa3, 0x5e, 0x5d, 0x70, 0xaa, 0x2b, 0x4e,
- 0x75, 0xc3, 0x69, 0xe3, 0x7b, 0xa7, 0xee, 0x83, 0x13, 0x0c, 0x06, 0x81, 0x9f, 0x15, 0xbd, 0xf1,
- 0xad, 0x04, 0x83, 0x5e, 0xd0, 0x0b, 0xb6, 0x24, 0xf8, 0x70, 0xd4, 0x95, 0x5f, 0xf2, 0x43, 0xfe,
- 0xd2, 0xe4, 0xb5, 0xa3, 0x1b, 0xbc, 0xee, 0x06, 0x82, 0xe5, 0x96, 0x13, 0x30, 0xba, 0x75, 0x3c,
- 0x35, 0x9a, 0x8d, 0xdf, 0x89, 0x69, 0x06, 0xb6, 0xd3, 0x77, 0x7d, 0xca, 0x4e, 0xe2, 0x7e, 0x0c,
- 0x68, 0x68, 0xcf, 0x6a, 0xb5, 0xf5, 0xa4, 0x56, 0x6c, 0xe4, 0x87, 0xee, 0x80, 0x4e, 0x35, 0xf8,
- 0xbd, 0xa7, 0x35, 0xe0, 0x4e, 0x9f, 0x0e, 0xec, 0x6c, 0xbb, 0xda, 0xe3, 0x02, 0xac, 0x37, 0x3e,
- 0xb0, 0x5a, 0xf6, 0xe0, 0xb0, 0x63, 0xb7, 0x99, 0xdb, 0xeb, 0x51, 0x46, 0x6e, 0xc0, 0x4a, 0x77,
- 0xe4, 0x3b, 0xa1, 0x1b, 0xf8, 0xf7, 0xec, 0x01, 0xad, 0xe4, 0xae, 0xe6, 0xae, 0x95, 0xb7, 0x5f,
- 0xfa, 0x74, 0x5c, 0xbd, 0x30, 0x19, 0x57, 0x57, 0xf6, 0x12, 0x38, 0x4c, 0x51, 0x12, 0x84, 0xb2,
- 0xed, 0x38, 0x94, 0xf3, 0x3b, 0xf4, 0xa4, 0x92, 0xbf, 0x9a, 0xbb, 0xb6, 0x7c, 0xfd, 0xb7, 0xea,
- 0xaa, 0x6b, 0x62, 0xca, 0xea, 0x42, 0x4b, 0xf5, 0xe3, 0x37, 0xeb, 0x16, 0x75, 0x18, 0x0d, 0xef,
- 0xd0, 0x13, 0x8b, 0x7a, 0xd4, 0x09, 0x03, 0xb6, 0xbd, 0x3a, 0x19, 0x57, 0xcb, 0x0d, 0xd3, 0x16,
- 0x63, 0x36, 0x82, 0x27, 0x37, 0xe4, 0x95, 0x85, 0x33, 0xf3, 0x8c, 0xc0, 0x18, 0xb3, 0x21, 0xaf,
- 0xc3, 0x22, 0xa3, 0x3d, 0x37, 0xf0, 0x2b, 0x05, 0x39, 0xb6, 0x8b, 0x7a, 0x6c, 0x8b, 0x28, 0xa1,
- 0xa8, 0xb1, 0x64, 0x04, 0x4b, 0x43, 0xfb, 0xc4, 0x0b, 0xec, 0x4e, 0xa5, 0x78, 0x75, 0xe1, 0xda,
- 0xf2, 0xf5, 0xdb, 0xf5, 0x67, 0xb5, 0xce, 0xba, 0xd6, 0xee, 0xbe, 0xcd, 0xec, 0x01, 0x0d, 0x29,
- 0xdb, 0x5e, 0xd3, 0x42, 0x97, 0xf6, 0x95, 0x08, 0x34, 0xb2, 0xc8, 0x9f, 0x02, 0x0c, 0x0d, 0x19,
- 0xaf, 0x2c, 0x3e, 0x77, 0xc9, 0x44, 0x4b, 0x86, 0x08, 0xc4, 0x31, 0x21, 0x91, 0xbc, 0x0d, 0x17,
- 0x5d, 0xff, 0x38, 0x70, 0x6c, 0x31, 0xb1, 0xed, 0x93, 0x21, 0xad, 0x2c, 0x49, 0x35, 0x91, 0xc9,
- 0xb8, 0x7a, 0xf1, 0x56, 0x0a, 0x83, 0x19, 0x4a, 0xf2, 0x75, 0x58, 0x62, 0x81, 0x47, 0x1b, 0x78,
- 0xaf, 0x52, 0x92, 0x8d, 0xa2, 0x61, 0xa2, 0x02, 0xa3, 0xc1, 0xd7, 0x7e, 0x95, 0x87, 0xcb, 0x0d,
- 0xd6, 0x0b, 0x3e, 0x08, 0xd8, 0x51, 0xd7, 0x0b, 0x1e, 0x19, 0xfb, 0xf3, 0x61, 0x91, 0x07, 0x23,
- 0xe6, 0x28, 0xcb, 0x9b, 0x6b, 0xe8, 0x0d, 0x16, 0xba, 0x5d, 0xdb, 0x09, 0x5b, 0xba, 0x8b, 0xdb,
- 0x20, 0x66, 0xd9, 0x92, 0xdc, 0x51, 0x4b, 0x21, 0x37, 0xa1, 0x1c, 0x0c, 0xc5, 0xb2, 0x10, 0x06,
- 0x91, 0x97, 0x9d, 0xfe, 0x86, 0xee, 0x74, 0xf9, 0xbe, 0x41, 0x3c, 0x1e, 0x57, 0xaf, 0x24, 0x3b,
- 0x1b, 0x21, 0x30, 0x6e, 0x9c, 0x99, 0xb8, 0x85, 0x73, 0x9f, 0xb8, 0x57, 0xa1, 0x60, 0xb3, 0x1e,
- 0xaf, 0x14, 0xae, 0x2e, 0x5c, 0x2b, 0x6f, 0x97, 0x26, 0xe3, 0x6a, 0xa1, 0xc1, 0x7a, 0x1c, 0x25,
- 0xb4, 0xf6, 0x6b, 0xb1, 0xd8, 0x33, 0x0a, 0x21, 0x16, 0xe4, 0xf9, 0x5b, 0x5a, 0xd1, 0xbf, 0x7f,
- 0xfa, 0xae, 0x2a, 0x0f, 0x5a, 0xb7, 0xde, 0x32, 0x0c, 0xb7, 0x17, 0x27, 0xe3, 0x6a, 0xde, 0x7a,
- 0x0b, 0xf3, 0xfc, 0x2d, 0x52, 0x83, 0x45, 0xd7, 0xf7, 0x5c, 0x9f, 0x6a, 0x75, 0x4a, 0xad, 0xdf,
- 0x92, 0x10, 0xd4, 0x18, 0xd2, 0x81, 0x42, 0xd7, 0xf5, 0xa8, 0x5e, 0xd2, 0x7b, 0xcf, 0xae, 0xa5,
- 0x3d, 0xd7, 0xa3, 0x51, 0x2f, 0xe4, 0x98, 0x05, 0x04, 0x25, 0x77, 0xf2, 0x11, 0x2c, 0x8c, 0x98,
- 0x27, 0x97, 0xf9, 0xf2, 0xf5, 0xdd, 0x67, 0x17, 0x72, 0x80, 0xad, 0x48, 0xc6, 0xd2, 0x64, 0x5c,
- 0x5d, 0x38, 0xc0, 0x16, 0x0a, 0xd6, 0xe4, 0x00, 0xca, 0x4e, 0xe0, 0x77, 0xdd, 0xde, 0xc0, 0x1e,
- 0x56, 0x8a, 0x52, 0xce, 0xb5, 0x59, 0xfe, 0xa9, 0x29, 0x89, 0xee, 0xda, 0xc3, 0x29, 0x17, 0xd5,
- 0x34, 0xcd, 0x31, 0xe6, 0x24, 0x3a, 0xde, 0x73, 0xc3, 0xca, 0xe2, 0xbc, 0x1d, 0x7f, 0xd7, 0x0d,
- 0xd3, 0x1d, 0x7f, 0xd7, 0x0d, 0x51, 0xb0, 0x26, 0x0e, 0x94, 0x18, 0xd5, 0x0b, 0x6d, 0x49, 0x8a,
- 0xf9, 0xce, 0x99, 0xe7, 0x1f, 0x35, 0x83, 0xed, 0x95, 0xc9, 0xb8, 0x5a, 0x32, 0x5f, 0x18, 0x31,
- 0xae, 0xfd, 0x4b, 0x01, 0xae, 0x34, 0xbe, 0x3f, 0x62, 0x74, 0x57, 0x30, 0xb8, 0x39, 0x3a, 0xe4,
- 0x66, 0x95, 0x5f, 0x85, 0x42, 0xf7, 0x61, 0xc7, 0xd7, 0xbb, 0xcb, 0x8a, 0xb6, 0xec, 0xc2, 0xde,
- 0x7b, 0x3b, 0xf7, 0x50, 0x62, 0x84, 0x2b, 0xe9, 0x8f, 0x0e, 0xe5, 0x16, 0x94, 0x4f, 0xbb, 0x92,
- 0x9b, 0x0a, 0x8c, 0x06, 0x4f, 0x86, 0x70, 0x99, 0xf7, 0x6d, 0x46, 0x3b, 0xd1, 0x16, 0x22, 0x9b,
- 0x9d, 0x69, 0xbb, 0x78, 0x65, 0x32, 0xae, 0x5e, 0xb6, 0xa6, 0xb9, 0xe0, 0x2c, 0xd6, 0xa4, 0x03,
- 0x6b, 0x19, 0xb0, 0x36, 0xb2, 0x53, 0x4a, 0xbb, 0x3c, 0x19, 0x57, 0xd7, 0x32, 0xd2, 0x30, 0xcb,
- 0xf2, 0x37, 0x74, 0x03, 0xaa, 0xfd, 0x6f, 0x01, 0x5e, 0x96, 0x56, 0x63, 0x51, 0x76, 0xec, 0x3a,
- 0x74, 0x7b, 0x14, 0x99, 0x4d, 0x0f, 0xd6, 0x9d, 0xc0, 0xf7, 0xa9, 0x0c, 0x3a, 0xac, 0x90, 0xb9,
- 0x7e, 0x4f, 0x7b, 0xaf, 0x53, 0x2a, 0xfe, 0xa5, 0xc9, 0xb8, 0xba, 0xde, 0xcc, 0xb0, 0xc0, 0x29,
- 0xa6, 0x64, 0x0b, 0xca, 0x0f, 0x47, 0x74, 0x44, 0x13, 0xf6, 0x77, 0xc9, 0xec, 0x0a, 0xef, 0x19,
- 0x04, 0xc6, 0x34, 0xa2, 0x41, 0x18, 0x0c, 0x5d, 0x27, 0xb2, 0xbc, 0x44, 0x83, 0xb6, 0x41, 0x60,
- 0x4c, 0x43, 0x76, 0x60, 0x9d, 0x8f, 0x0e, 0xb9, 0xc3, 0xdc, 0x61, 0x14, 0x6b, 0xa9, 0x78, 0xa4,
- 0xa2, 0xdb, 0xad, 0x5b, 0x19, 0x3c, 0x4e, 0xb5, 0x20, 0x07, 0xb0, 0x10, 0x7a, 0x5c, 0x7b, 0x9e,
- 0xb7, 0xcf, 0xbc, 0x82, 0xdb, 0x2d, 0x4b, 0xf9, 0x1f, 0xe5, 0x1d, 0xda, 0x2d, 0x0b, 0x05, 0xbf,
- 0xa4, 0xe5, 0x2d, 0xbe, 0x30, 0xcb, 0x5b, 0x3a, 0x77, 0xcb, 0xeb, 0xc1, 0x95, 0x66, 0xe0, 0x77,
- 0x5c, 0xa1, 0x5e, 0x8e, 0x94, 0xd3, 0x70, 0xfb, 0xa4, 0xed, 0x0e, 0xa8, 0x70, 0x57, 0x0e, 0x0b,
- 0xa6, 0xdc, 0x55, 0x93, 0x05, 0x3e, 0x4a, 0x0c, 0xf9, 0x26, 0x94, 0x44, 0xa8, 0xfd, 0xfd, 0x20,
- 0xda, 0xf6, 0xd6, 0x35, 0x55, 0xa9, 0xad, 0xe1, 0x18, 0x51, 0xd4, 0x3e, 0xc9, 0xc1, 0x2b, 0x19,
- 0x49, 0x4d, 0xe6, 0x86, 0x94, 0xb9, 0x36, 0xe1, 0xb0, 0x78, 0x28, 0xa5, 0x6a, 0xcb, 0xbe, 0xff,
- 0xec, 0x0a, 0x98, 0x39, 0x18, 0xb5, 0x1f, 0xab, 0xdf, 0xa8, 0x45, 0xd5, 0xfe, 0xb9, 0x08, 0xab,
- 0xcd, 0x11, 0x0f, 0x83, 0x81, 0x59, 0x6a, 0x5b, 0x22, 0xf2, 0x66, 0xc7, 0x94, 0x1d, 0x60, 0x4b,
- 0x8f, 0x3b, 0x32, 0x68, 0xcb, 0x20, 0x30, 0xa6, 0x11, 0x61, 0x35, 0xa7, 0xce, 0x88, 0xa9, 0xf1,
- 0x97, 0xe2, 0xb0, 0xda, 0x92, 0x50, 0xd4, 0x58, 0x72, 0x00, 0xe0, 0x50, 0x16, 0xaa, 0xb5, 0x79,
- 0x36, 0x27, 0x7d, 0x51, 0xcc, 0x5d, 0x33, 0x6a, 0x8c, 0x09, 0x46, 0xe4, 0x36, 0x10, 0xd5, 0x17,
- 0xb1, 0x2e, 0xee, 0x1f, 0x53, 0xc6, 0xdc, 0x8e, 0x59, 0x51, 0x1b, 0xba, 0x2b, 0xc4, 0x9a, 0xa2,
- 0xc0, 0x19, 0xad, 0x08, 0x87, 0x02, 0x1f, 0x52, 0x47, 0x7b, 0xdd, 0xf7, 0xe6, 0x98, 0x80, 0xa4,
- 0x4a, 0xeb, 0xd6, 0x90, 0x3a, 0xbb, 0x7e, 0xc8, 0x4e, 0x62, 0x0b, 0x12, 0x20, 0x94, 0xc2, 0x5e,
- 0x78, 0xdc, 0x9f, 0x58, 0xf3, 0x4b, 0xe7, 0xb7, 0xe6, 0x37, 0xbe, 0x0d, 0xe5, 0x48, 0x2f, 0x64,
- 0x1d, 0x16, 0x8e, 0xe8, 0x89, 0x32, 0x37, 0x14, 0x3f, 0xc9, 0x4b, 0x50, 0x3c, 0xb6, 0xbd, 0x91,
- 0x5e, 0x54, 0xa8, 0x3e, 0xde, 0xce, 0xdf, 0xc8, 0xd5, 0x7e, 0x95, 0x03, 0xd8, 0xb1, 0x43, 0x7b,
- 0xcf, 0xf5, 0x42, 0x15, 0x51, 0x0c, 0xed, 0xb0, 0x9f, 0x5d, 0xa2, 0xfb, 0x76, 0xd8, 0x47, 0x89,
- 0x21, 0xdf, 0x84, 0x42, 0x28, 0xd2, 0x99, 0x7c, 0xca, 0xcb, 0x16, 0x44, 0xe2, 0xf2, 0x78, 0x5c,
- 0x2d, 0xdd, 0xb6, 0xee, 0xdf, 0x93, 0x49, 0x8d, 0xa4, 0x22, 0x55, 0x23, 0x78, 0x41, 0x86, 0xd3,
- 0xe5, 0xc9, 0xb8, 0x5a, 0x7c, 0x5f, 0x00, 0x74, 0x1f, 0xc8, 0x3b, 0x00, 0x4e, 0x30, 0x10, 0x0a,
- 0x0c, 0x03, 0xa6, 0x0d, 0xed, 0xaa, 0xd1, 0x71, 0x33, 0xc2, 0x3c, 0x4e, 0x7d, 0x61, 0xa2, 0x8d,
- 0xf4, 0x19, 0x74, 0x30, 0xf4, 0xec, 0x90, 0x4a, 0x0f, 0x9e, 0xf4, 0x19, 0x1a, 0x8e, 0x11, 0x45,
- 0xed, 0x67, 0x39, 0x28, 0xca, 0x38, 0x8a, 0x0c, 0x60, 0xc9, 0x09, 0xfc, 0x90, 0x7e, 0x1c, 0x6a,
- 0x17, 0x31, 0x47, 0xfc, 0x2c, 0x39, 0x36, 0x15, 0xb7, 0xed, 0x65, 0x31, 0x43, 0xfa, 0x03, 0x8d,
- 0x0c, 0x91, 0x57, 0x74, 0xec, 0xd0, 0x96, 0x7a, 0x5b, 0x51, 0x31, 0xb6, 0xd0, 0x3b, 0x4a, 0xe8,
- 0xdb, 0xa5, 0xbf, 0xfd, 0xbb, 0xea, 0x85, 0x1f, 0xfe, 0xfb, 0xd5, 0x0b, 0xb5, 0x5f, 0xe7, 0x61,
- 0x25, 0xc9, 0x8e, 0x6c, 0x40, 0xde, 0xed, 0xe8, 0x09, 0x01, 0x3d, 0xb2, 0xfc, 0xad, 0x1d, 0xcc,
- 0xbb, 0x1d, 0xe9, 0x2d, 0x54, 0xf4, 0x99, 0x4f, 0x27, 0xe1, 0x99, 0xf4, 0xec, 0x77, 0x61, 0x59,
- 0xac, 0x8e, 0x63, 0xca, 0xb8, 0x48, 0xd0, 0xd4, 0xce, 0x7a, 0x59, 0x13, 0x2f, 0x0b, 0xcb, 0x79,
- 0x5f, 0xa1, 0x30, 0x49, 0x27, 0xac, 0x41, 0xce, 0x75, 0x21, 0x6d, 0x0d, 0x89, 0xf9, 0x6d, 0xc0,
- 0x9a, 0xe8, 0xbf, 0x1c, 0xa4, 0x1f, 0x4a, 0x62, 0x35, 0x07, 0xaf, 0x68, 0xe2, 0x35, 0x31, 0xc8,
- 0xa6, 0x42, 0xcb, 0x76, 0x59, 0x7a, 0x11, 0xa2, 0xf2, 0xd1, 0xe1, 0x03, 0xea, 0xa8, 0x48, 0x3d,
- 0x11, 0xa2, 0x5a, 0x0a, 0x8c, 0x06, 0x4f, 0x5a, 0x50, 0x10, 0xce, 0x5f, 0x87, 0xda, 0xdf, 0x48,
- 0xb8, 0xbb, 0xa8, 0x62, 0x13, 0xcf, 0xd1, 0x80, 0x86, 0xb6, 0x70, 0x80, 0xd2, 0x5b, 0xc7, 0x7d,
- 0x17, 0xfe, 0x5a, 0x72, 0x49, 0xe8, 0xfc, 0x93, 0x02, 0xac, 0x49, 0x9d, 0xef, 0xd0, 0x21, 0xf5,
- 0x3b, 0xd4, 0x77, 0x4e, 0xc4, 0xd8, 0xfd, 0xb8, 0x72, 0x13, 0xb5, 0x97, 0x11, 0x84, 0xc4, 0x88,
- 0xb1, 0x4b, 0xbb, 0x50, 0xba, 0x4e, 0xc4, 0x38, 0xd1, 0xd8, 0x77, 0xd3, 0x68, 0xcc, 0xd2, 0x8b,
- 0xed, 0x41, 0x82, 0x66, 0xc5, 0x3b, 0xbb, 0x06, 0x81, 0x31, 0x0d, 0x39, 0x86, 0xa5, 0xae, 0x5c,
- 0xa9, 0x5c, 0x87, 0xca, 0xf7, 0xe7, 0x34, 0xda, 0x78, 0xc4, 0xca, 0x03, 0x28, 0xeb, 0x55, 0xbf,
- 0x39, 0x1a, 0x61, 0xe4, 0xcf, 0x73, 0x50, 0x0e, 0x99, 0xed, 0xf3, 0x6e, 0xc0, 0x06, 0x3a, 0x50,
- 0x6a, 0x3f, 0x37, 0xd1, 0x6d, 0xc3, 0x99, 0xea, 0x74, 0x2e, 0x02, 0x60, 0x2c, 0x95, 0xb8, 0xf0,
- 0xb2, 0xee, 0x4e, 0x2b, 0xe8, 0xb9, 0x8e, 0xed, 0xa9, 0xfa, 0x41, 0xc0, 0xb4, 0xdd, 0xbc, 0xa9,
- 0x35, 0xf7, 0xf2, 0xde, 0x4c, 0xaa, 0xc7, 0xe3, 0xea, 0x5a, 0x06, 0x84, 0x4f, 0x60, 0x58, 0xfb,
- 0x87, 0x22, 0x5c, 0x99, 0xa9, 0x1e, 0x72, 0xa8, 0x4d, 0x50, 0xb9, 0x8c, 0x9d, 0x39, 0x9c, 0xbb,
- 0x3b, 0xa0, 0x5a, 0xe5, 0xa5, 0xb4, 0x61, 0x26, 0x3d, 0x53, 0xfe, 0x1c, 0x3c, 0x53, 0x57, 0x7b,
- 0x26, 0x55, 0x6b, 0x99, 0x63, 0x48, 0xf1, 0x3e, 0x12, 0xaf, 0x97, 0xd8, 0xc7, 0x11, 0x17, 0x8a,
- 0xf4, 0xe3, 0x21, 0x53, 0xa5, 0x95, 0xb9, 0x04, 0xed, 0x7e, 0x3c, 0x64, 0x5a, 0xd0, 0xaa, 0x16,
- 0x54, 0x14, 0x30, 0x8e, 0x4a, 0x02, 0xf9, 0x08, 0x2e, 0x0b, 0x91, 0x59, 0x3b, 0x51, 0xae, 0xa9,
- 0xae, 0x9b, 0x5c, 0xde, 0x99, 0x26, 0x99, 0x65, 0x24, 0xb3, 0x58, 0x09, 0x09, 0x42, 0xd4, 0x6c,
- 0x4b, 0x8c, 0x24, 0xec, 0x4e, 0x93, 0xcc, 0x94, 0x30, 0x83, 0x95, 0xf4, 0xed, 0x32, 0x4b, 0xd1,
- 0x95, 0xc3, 0xd8, 0xb7, 0x4b, 0x28, 0x6a, 0x6c, 0xed, 0x23, 0xd8, 0x78, 0xf2, 0x72, 0x12, 0xbb,
- 0xc7, 0x83, 0x87, 0xd9, 0xdd, 0xe3, 0xf6, 0x7b, 0x98, 0x7f, 0xf0, 0x30, 0x21, 0x21, 0xff, 0x85,
- 0x12, 0x7e, 0x96, 0x03, 0x88, 0x55, 0x2e, 0x3c, 0xa3, 0xe8, 0x6f, 0xd6, 0x33, 0x0a, 0x0a, 0x94,
- 0x18, 0xe2, 0xc3, 0x62, 0xd7, 0xa5, 0x5e, 0x87, 0x57, 0xf2, 0x72, 0xaa, 0xe7, 0xb0, 0x5f, 0x1d,
- 0xe9, 0xec, 0x09, 0x76, 0x71, 0x07, 0xe5, 0x27, 0x47, 0x2d, 0xa5, 0xf6, 0x06, 0xac, 0x24, 0x2b,
- 0x58, 0x4f, 0x8f, 0x62, 0x6a, 0x7f, 0x55, 0x84, 0xe5, 0x44, 0x59, 0x87, 0xbc, 0xa6, 0x6a, 0x5c,
- 0xaa, 0xc1, 0xb2, 0x6e, 0x10, 0x17, 0xa8, 0xbe, 0x0b, 0x17, 0x1d, 0x2f, 0xf0, 0xe9, 0x8e, 0xcb,
- 0x64, 0x0c, 0x7d, 0xa2, 0x35, 0xf6, 0xb2, 0xa6, 0xbc, 0xd8, 0x4c, 0x61, 0x31, 0x43, 0x4d, 0x1c,
- 0x28, 0x3a, 0x8c, 0x76, 0xb8, 0x0e, 0xd4, 0xb7, 0xe7, 0xaa, 0x45, 0x35, 0x05, 0x27, 0x15, 0x4a,
- 0xc9, 0x9f, 0xa8, 0x78, 0x93, 0x3f, 0x86, 0x15, 0xce, 0xfb, 0x32, 0xd2, 0x97, 0x49, 0xc1, 0x99,
- 0x6a, 0x29, 0xeb, 0x93, 0x71, 0x75, 0xc5, 0xb2, 0x6e, 0x46, 0xcd, 0x31, 0xc5, 0x4c, 0x44, 0x59,
- 0x5d, 0xd7, 0xa3, 0x42, 0x85, 0xd9, 0x28, 0x6b, 0x4f, 0xc3, 0x31, 0xa2, 0x10, 0x96, 0x75, 0xc8,
- 0x6c, 0xdf, 0xe9, 0xeb, 0x05, 0x11, 0x4d, 0xdc, 0xb6, 0x84, 0xa2, 0xc6, 0x0a, 0xb5, 0x87, 0x76,
- 0x4f, 0x1b, 0x78, 0xa4, 0xf6, 0xb6, 0xdd, 0x43, 0x01, 0x17, 0x68, 0x46, 0xbb, 0xba, 0x08, 0x1e,
- 0xa1, 0x91, 0x76, 0x51, 0xc0, 0xc9, 0x00, 0x16, 0x19, 0x1d, 0x04, 0x21, 0xad, 0x94, 0xe5, 0x50,
- 0x6f, 0xcd, 0xa5, 0x56, 0x94, 0xac, 0x74, 0x22, 0x0f, 0xea, 0x24, 0x43, 0x40, 0x50, 0x0b, 0x21,
- 0x16, 0x5c, 0x71, 0x7d, 0x95, 0x7e, 0xdd, 0xea, 0xf9, 0x01, 0xa3, 0x37, 0x03, 0x2e, 0x4f, 0x54,
- 0x40, 0x66, 0x6a, 0xaf, 0xe9, 0xfe, 0x5d, 0xb9, 0x35, 0x8b, 0x08, 0x67, 0xb7, 0xad, 0xfd, 0x53,
- 0x0e, 0x4a, 0x66, 0x4e, 0xc9, 0x7d, 0x28, 0x8d, 0x38, 0x65, 0x51, 0xdc, 0x71, 0xea, 0xd9, 0x93,
- 0xa5, 0xc3, 0x03, 0xdd, 0x14, 0x23, 0x26, 0x82, 0xe1, 0xd0, 0xe6, 0xfc, 0x51, 0xc0, 0x3a, 0x67,
- 0x3b, 0x4b, 0x92, 0x0c, 0xf7, 0x75, 0x53, 0x8c, 0x98, 0xd4, 0xde, 0x83, 0xb5, 0x8c, 0xaa, 0x4e,
- 0x11, 0x28, 0xbd, 0x0a, 0x85, 0x11, 0xf3, 0x94, 0x33, 0xd0, 0x25, 0xf5, 0x03, 0x6c, 0x59, 0x28,
- 0xa1, 0xb5, 0xff, 0x5a, 0x84, 0xe5, 0x9b, 0xed, 0xf6, 0xbe, 0x49, 0x99, 0x9f, 0xb2, 0x14, 0x13,
- 0x09, 0x56, 0xfe, 0x1c, 0x8b, 0x2a, 0xba, 0x44, 0xb4, 0xf0, 0x9c, 0x4b, 0x44, 0xaf, 0xc3, 0xe2,
- 0x80, 0x86, 0xfd, 0xa0, 0x93, 0x3d, 0x45, 0xbb, 0x2b, 0xa1, 0xa8, 0xb1, 0x99, 0xb4, 0xb6, 0x78,
- 0xee, 0x69, 0xed, 0xd7, 0x61, 0x49, 0x84, 0x26, 0xc1, 0x48, 0x05, 0xe9, 0x0b, 0xb1, 0xa6, 0xda,
- 0x0a, 0x8c, 0x06, 0x4f, 0x7a, 0x50, 0x3e, 0xb4, 0xb9, 0xeb, 0x34, 0x46, 0x61, 0x5f, 0x47, 0xea,
- 0x67, 0xd7, 0xd7, 0xb6, 0xe1, 0xa0, 0xe2, 0xc1, 0xe8, 0x13, 0x63, 0xde, 0xe4, 0x07, 0xb0, 0xd4,
- 0xa7, 0x76, 0x47, 0x28, 0xa4, 0x24, 0x15, 0x82, 0xcf, 0xae, 0x90, 0x84, 0x01, 0xd6, 0x6f, 0x2a,
- 0xa6, 0xaa, 0xc6, 0x10, 0xd7, 0xcb, 0x15, 0x14, 0x8d, 0x4c, 0x72, 0x0c, 0xab, 0x6a, 0x41, 0x6b,
- 0x4c, 0xa5, 0x2c, 0x3b, 0xf1, 0x07, 0x67, 0x3f, 0x00, 0x4a, 0x70, 0xd9, 0xbe, 0x34, 0x19, 0x57,
- 0x57, 0x93, 0x10, 0x8e, 0x69, 0x31, 0x1b, 0x6f, 0xc3, 0x4a, 0xb2, 0x87, 0x67, 0xca, 0xf6, 0xff,
- 0x72, 0x01, 0x2e, 0xdd, 0xb9, 0x61, 0x99, 0x43, 0x86, 0xfd, 0xc0, 0x73, 0x9d, 0x13, 0xf2, 0x67,
- 0xb0, 0xe8, 0xd9, 0x87, 0xd4, 0xe3, 0x95, 0x9c, 0x1c, 0xc2, 0x07, 0xcf, 0xae, 0xc7, 0x29, 0xe6,
- 0xf5, 0x96, 0xe4, 0xac, 0x94, 0x19, 0x59, 0xb7, 0x02, 0xa2, 0x16, 0x4b, 0x3e, 0x84, 0xa5, 0x43,
- 0xdb, 0x39, 0x0a, 0xba, 0x5d, 0xed, 0xa5, 0x6e, 0x3c, 0x83, 0xc1, 0xc8, 0xf6, 0x2a, 0xc4, 0xd5,
- 0x1f, 0x68, 0xb8, 0x0a, 0xd7, 0x4d, 0x19, 0x0b, 0xd8, 0x7d, 0x5f, 0xa3, 0xb4, 0xd5, 0xca, 0xf5,
- 0x9c, 0x70, 0xdd, 0xbb, 0xb3, 0x88, 0x70, 0x76, 0xdb, 0x8d, 0xef, 0xc0, 0x72, 0x62, 0x70, 0x67,
- 0x9a, 0x87, 0x9f, 0x2f, 0xc2, 0xca, 0x1d, 0xbb, 0x7b, 0x64, 0x9f, 0xd2, 0xe9, 0x7d, 0x0d, 0x8a,
- 0xb2, 0xe6, 0xad, 0xc3, 0x8e, 0x28, 0xe8, 0x95, 0x35, 0x71, 0x54, 0x38, 0x91, 0x4c, 0x0e, 0x6d,
- 0x16, 0xca, 0x52, 0xa5, 0x1c, 0x58, 0x31, 0x4e, 0x26, 0xf7, 0x0d, 0x02, 0x63, 0x9a, 0x8c, 0x53,
- 0x29, 0x9c, 0xbb, 0x53, 0xb9, 0x01, 0x2b, 0x8c, 0x3e, 0x1c, 0xb9, 0xf2, 0xb8, 0xe6, 0x48, 0xd5,
- 0xdf, 0x8b, 0xf1, 0x25, 0x09, 0x4c, 0xe0, 0x30, 0x45, 0x29, 0xa2, 0x11, 0x27, 0x18, 0x0c, 0x19,
- 0xe5, 0x5c, 0xfa, 0xa3, 0x52, 0x1c, 0x8d, 0x34, 0x35, 0x1c, 0x23, 0x0a, 0x11, 0xbd, 0x75, 0xbd,
- 0x11, 0xef, 0xef, 0x09, 0x1e, 0x22, 0x40, 0x96, 0x6e, 0xa9, 0x18, 0x47, 0x6f, 0x7b, 0x29, 0x2c,
- 0x66, 0xa8, 0x8d, 0xef, 0x2f, 0x7d, 0x79, 0xc7, 0x03, 0xe5, 0x73, 0xdc, 0xc9, 0x1a, 0xb0, 0x16,
- 0x99, 0x80, 0xeb, 0xf7, 0x4c, 0x00, 0x93, 0x28, 0x5b, 0xec, 0xa7, 0xd1, 0x98, 0xa5, 0x17, 0xbb,
- 0x81, 0x29, 0x25, 0x2d, 0xa7, 0x4b, 0x36, 0xa6, 0x8c, 0x64, 0xf0, 0xe4, 0x0f, 0xa1, 0xc0, 0x6d,
- 0xee, 0x55, 0x56, 0x9e, 0xf5, 0x74, 0xbc, 0x61, 0xb5, 0xb4, 0xf6, 0x64, 0xe0, 0x20, 0xbe, 0x51,
- 0xb2, 0xac, 0xdd, 0x07, 0x68, 0x05, 0x3d, 0xb3, 0x82, 0x1a, 0xb0, 0xe6, 0xfa, 0x21, 0x65, 0xc7,
- 0xb6, 0x67, 0x51, 0x27, 0xf0, 0x3b, 0x5c, 0xae, 0xa6, 0x42, 0x3c, 0xac, 0x5b, 0x69, 0x34, 0x66,
- 0xe9, 0x6b, 0x7f, 0xbf, 0x00, 0xcb, 0xf7, 0x1a, 0x6d, 0xeb, 0x94, 0x8b, 0x32, 0x51, 0xb8, 0xca,
- 0x3f, 0xa5, 0x70, 0x95, 0x98, 0xea, 0x85, 0x17, 0x76, 0x12, 0x74, 0xfe, 0x0b, 0xfc, 0xcb, 0x39,
- 0x57, 0xab, 0xfd, 0xa4, 0x00, 0xeb, 0xf7, 0x87, 0xd4, 0xff, 0xa0, 0xef, 0xf2, 0xa3, 0xc4, 0x59,
- 0x78, 0x3f, 0xe0, 0x61, 0x36, 0x0c, 0x15, 0x71, 0x36, 0x4a, 0x4c, 0xd2, 0x6a, 0xf3, 0x4f, 0xb1,
- 0xda, 0x2d, 0x28, 0x8b, 0xc8, 0x95, 0x0f, 0x6d, 0x67, 0xaa, 0x2e, 0x77, 0xcf, 0x20, 0x30, 0xa6,
- 0x91, 0xb7, 0xb6, 0x46, 0x61, 0xbf, 0x1d, 0x1c, 0x51, 0xff, 0x6c, 0x89, 0x97, 0xba, 0xb5, 0x65,
- 0xda, 0x62, 0xcc, 0x86, 0x5c, 0x07, 0xb0, 0xe3, 0x1b, 0x64, 0x2a, 0xe9, 0x8a, 0x34, 0xde, 0x88,
- 0xef, 0x8f, 0x25, 0xa8, 0x7e, 0x53, 0x8f, 0x1c, 0x11, 0x56, 0x92, 0x85, 0x82, 0x53, 0x1c, 0x63,
- 0x98, 0xac, 0x25, 0xff, 0xa4, 0xac, 0xa5, 0xf6, 0x8f, 0x4b, 0xb0, 0xba, 0x3f, 0xf2, 0xb8, 0xcd,
- 0x9e, 0xe7, 0x26, 0xfd, 0xa2, 0xaf, 0x37, 0x25, 0x0c, 0xa4, 0x70, 0x8e, 0x06, 0x32, 0x84, 0xcb,
- 0xa1, 0xc7, 0xdb, 0x6c, 0xc4, 0xc3, 0x26, 0x65, 0x21, 0xd7, 0x25, 0x8a, 0xe2, 0x99, 0x2f, 0x97,
- 0xb4, 0x5b, 0x56, 0x96, 0x0b, 0xce, 0x62, 0x4d, 0x0e, 0x61, 0x23, 0xf4, 0x78, 0xc3, 0xf3, 0x82,
- 0x47, 0x26, 0x21, 0x8f, 0x6f, 0x2c, 0xe8, 0xa0, 0xa1, 0xa6, 0xfb, 0xbb, 0xd1, 0x6e, 0x59, 0x4f,
- 0xa0, 0xc4, 0x2f, 0xe0, 0x42, 0xee, 0xca, 0x51, 0xbd, 0x6f, 0x7b, 0x6e, 0xc7, 0x0e, 0x65, 0x4a,
- 0x2f, 0x6d, 0x6a, 0x49, 0x32, 0xff, 0xaa, 0x29, 0x02, 0xb6, 0x5b, 0x56, 0x96, 0x04, 0x67, 0xb5,
- 0xfb, 0xb2, 0xe2, 0x8c, 0x0e, 0xac, 0x45, 0x4e, 0x45, 0xeb, 0xbd, 0x7c, 0xe6, 0x6b, 0x36, 0x8d,
- 0x34, 0x07, 0xcc, 0xb2, 0x24, 0x3f, 0x80, 0x4b, 0xf1, 0xfd, 0x0f, 0x1d, 0x29, 0xcb, 0xc0, 0x62,
- 0x9e, 0x68, 0xfe, 0xca, 0x64, 0x5c, 0xbd, 0xd4, 0xcc, 0xb2, 0xc5, 0x69, 0x49, 0xb5, 0xbf, 0xc8,
- 0x41, 0x19, 0xed, 0x90, 0xb6, 0xdc, 0x81, 0x1b, 0x92, 0xeb, 0x50, 0x18, 0xf9, 0xae, 0xd9, 0x0c,
- 0x36, 0xcd, 0xea, 0x3e, 0xf0, 0xdd, 0xf0, 0xf1, 0xb8, 0x7a, 0x31, 0x22, 0xa4, 0x02, 0x82, 0x92,
- 0x56, 0x04, 0x10, 0x32, 0xe2, 0xe3, 0x21, 0xdf, 0xa7, 0x4c, 0x20, 0xe4, 0x42, 0x2e, 0xc6, 0x01,
- 0x04, 0xa6, 0xd1, 0x98, 0xa5, 0xaf, 0xfd, 0x3c, 0x0f, 0x8b, 0x96, 0x5c, 0x24, 0xe4, 0x23, 0x28,
- 0x0d, 0x68, 0x68, 0xcb, 0xc2, 0xba, 0x2a, 0xe5, 0xbc, 0x71, 0xba, 0xe3, 0xaa, 0xfb, 0x32, 0x62,
- 0xb8, 0x4b, 0x43, 0x3b, 0x5e, 0xcb, 0x31, 0x0c, 0x23, 0xae, 0xa4, 0xab, 0x8f, 0xd7, 0xf3, 0xf3,
- 0x9e, 0x44, 0xa8, 0x1e, 0x5b, 0x43, 0xea, 0xcc, 0x3c, 0x51, 0xf7, 0x61, 0x91, 0x87, 0x76, 0x38,
- 0xe2, 0xf3, 0x5f, 0x33, 0xd4, 0x92, 0x24, 0xb7, 0x44, 0xb5, 0x59, 0x7e, 0xa3, 0x96, 0x52, 0xfb,
- 0xb7, 0x1c, 0x80, 0x22, 0x6c, 0xb9, 0x3c, 0x24, 0x7f, 0x32, 0xa5, 0xc8, 0xfa, 0xe9, 0x14, 0x29,
- 0x5a, 0x4b, 0x35, 0x46, 0xa9, 0x81, 0x81, 0x24, 0x94, 0x48, 0xa1, 0xe8, 0x86, 0x74, 0x60, 0x0a,
- 0xd5, 0xef, 0xcc, 0x3b, 0xb6, 0xd8, 0xeb, 0xdf, 0x12, 0x6c, 0x51, 0x71, 0xaf, 0x7d, 0xba, 0x68,
- 0xc6, 0x24, 0x14, 0x4b, 0x7e, 0x94, 0x83, 0x95, 0x8e, 0x29, 0xd7, 0xbb, 0xd4, 0xe4, 0xdd, 0xb7,
- 0x9e, 0xdb, 0x81, 0x5a, 0x9c, 0x44, 0xed, 0x24, 0xc4, 0x60, 0x4a, 0x28, 0x09, 0xa0, 0x14, 0x2a,
- 0x0f, 0x6e, 0x86, 0xdf, 0x98, 0x7b, 0x2f, 0x48, 0x9c, 0xbd, 0x6b, 0xd6, 0x18, 0x09, 0x21, 0x5e,
- 0xe2, 0xa4, 0x7e, 0xee, 0x42, 0xb8, 0x39, 0xdb, 0x57, 0xa5, 0xca, 0xe9, 0x93, 0x7e, 0x72, 0x1b,
- 0x88, 0xce, 0xdb, 0xf7, 0x6c, 0xd7, 0xa3, 0x1d, 0x0c, 0x46, 0xbe, 0x2a, 0xb3, 0x95, 0xe2, 0xab,
- 0x2c, 0xbb, 0x53, 0x14, 0x38, 0xa3, 0x95, 0xc8, 0x54, 0x65, 0x7f, 0xb6, 0x47, 0x3c, 0x11, 0x8c,
- 0x45, 0x4a, 0xde, 0x4d, 0xe0, 0x30, 0x45, 0x49, 0xae, 0x41, 0x89, 0xd1, 0xa1, 0xe7, 0x3a, 0xb6,
- 0xca, 0x54, 0x8b, 0xe6, 0x9a, 0xa7, 0x82, 0x61, 0x84, 0x25, 0x2d, 0x78, 0x89, 0xd1, 0x63, 0x57,
- 0xc4, 0x9f, 0x37, 0x5d, 0x1e, 0x06, 0xec, 0x44, 0xba, 0x28, 0x9d, 0xab, 0x56, 0x26, 0xe3, 0xea,
- 0x4b, 0x38, 0x03, 0x8f, 0x33, 0x5b, 0x91, 0x9f, 0xe6, 0x60, 0xd5, 0x0b, 0x7a, 0x3d, 0xd7, 0xef,
- 0xa9, 0xc3, 0x12, 0x5d, 0x23, 0xfb, 0xe0, 0x79, 0xf8, 0x89, 0x7a, 0x2b, 0xc9, 0x59, 0xd5, 0x76,
- 0xae, 0x68, 0x65, 0xac, 0xa6, 0x70, 0x98, 0xee, 0xc4, 0xc6, 0x3b, 0x40, 0xa6, 0xdb, 0x9e, 0xa9,
- 0x74, 0x12, 0xc0, 0x4a, 0xd2, 0x8d, 0x90, 0x0f, 0x23, 0xf7, 0xa4, 0xbc, 0xc3, 0xb7, 0xcf, 0x9e,
- 0x62, 0x7e, 0xb1, 0x3f, 0xfa, 0xd7, 0x3c, 0xac, 0x58, 0x9e, 0xed, 0x44, 0x99, 0x46, 0x3a, 0x84,
- 0xcb, 0xbd, 0x80, 0xac, 0x0a, 0xb8, 0xec, 0x8f, 0x4c, 0x36, 0xf2, 0x67, 0xbe, 0xfa, 0x65, 0x45,
- 0x8d, 0x31, 0xc1, 0x48, 0xa4, 0x47, 0x4e, 0xdf, 0xf6, 0x7d, 0xea, 0xe9, 0x8c, 0x27, 0x8a, 0xe6,
- 0x9a, 0x0a, 0x8c, 0x06, 0x2f, 0x48, 0x07, 0x94, 0x73, 0xbb, 0x67, 0xae, 0x86, 0x44, 0xa4, 0x77,
- 0x15, 0x18, 0x0d, 0xbe, 0xf6, 0x3f, 0x0b, 0x40, 0xac, 0xd0, 0xf6, 0x3b, 0x36, 0xeb, 0xdc, 0xb9,
- 0x61, 0xbd, 0xa8, 0xf7, 0x09, 0xf7, 0xa6, 0xdf, 0x27, 0xbc, 0x31, 0xeb, 0x7d, 0xc2, 0x57, 0xef,
- 0x8c, 0x0e, 0x29, 0xf3, 0x69, 0x48, 0xb9, 0xa9, 0x63, 0xfe, 0xbf, 0x7c, 0xa5, 0xd0, 0x85, 0xd5,
- 0xa1, 0x1d, 0x3a, 0x7d, 0x2b, 0x64, 0x76, 0x48, 0x7b, 0x27, 0x7a, 0x1e, 0xde, 0x31, 0x8b, 0x70,
- 0x3f, 0x89, 0x7c, 0x3c, 0xae, 0xfe, 0xf6, 0x93, 0x1e, 0x37, 0x85, 0x27, 0x43, 0xca, 0xeb, 0x92,
- 0x5c, 0x5e, 0xcf, 0x49, 0xb3, 0x15, 0x39, 0xa8, 0xe7, 0x1e, 0x53, 0x15, 0x80, 0x48, 0xb7, 0x57,
- 0x8a, 0xfb, 0xd6, 0x8a, 0x30, 0x98, 0xa0, 0xaa, 0x6d, 0xc1, 0x8a, 0x5a, 0x42, 0xba, 0xbc, 0x5c,
- 0x85, 0xa2, 0x2d, 0x02, 0x68, 0xb9, 0x54, 0x8a, 0xea, 0xe0, 0x52, 0x46, 0xd4, 0xa8, 0xe0, 0xb5,
- 0x1f, 0x97, 0x20, 0x72, 0xe0, 0xc4, 0x99, 0xda, 0xef, 0xcf, 0x7e, 0xa5, 0xfe, 0xae, 0x66, 0xa0,
- 0x7c, 0xad, 0xf9, 0x4a, 0x6c, 0xfb, 0xfa, 0x9a, 0xa3, 0xeb, 0xd0, 0x86, 0xe3, 0x04, 0x23, 0x7d,
- 0x01, 0x27, 0x3f, 0x7d, 0xcd, 0x31, 0x4d, 0x81, 0x33, 0x5a, 0x91, 0xdb, 0xf2, 0xf1, 0x42, 0x68,
- 0x0b, 0x9d, 0xea, 0x6d, 0xed, 0xb5, 0x27, 0x3c, 0x5e, 0x50, 0x44, 0xd1, 0x8b, 0x05, 0xf5, 0x89,
- 0x71, 0x73, 0xb2, 0x0b, 0x4b, 0xc7, 0x81, 0x37, 0x1a, 0x50, 0x53, 0xad, 0xd9, 0x98, 0xc5, 0xe9,
- 0x7d, 0x49, 0x92, 0x28, 0x5f, 0xa8, 0x26, 0x68, 0xda, 0x12, 0x0a, 0x6b, 0x32, 0x57, 0x71, 0xc3,
- 0x13, 0x7d, 0xdb, 0x43, 0x67, 0x5a, 0xaf, 0xcf, 0x62, 0xb7, 0x1f, 0x74, 0xac, 0x34, 0xb5, 0xbe,
- 0x59, 0x9f, 0x06, 0x62, 0x96, 0x27, 0xf9, 0x24, 0x07, 0x2b, 0x7e, 0xd0, 0xa1, 0xc6, 0xbd, 0xe8,
- 0x92, 0x43, 0x7b, 0xfe, 0x4d, 0xbd, 0x7e, 0x2f, 0xc1, 0x56, 0xed, 0x2f, 0xd1, 0x66, 0x9b, 0x44,
- 0x61, 0x4a, 0x3e, 0x39, 0x80, 0xe5, 0x30, 0xf0, 0xf4, 0x1a, 0x35, 0x75, 0x88, 0xcd, 0x59, 0x63,
- 0x6e, 0x47, 0x64, 0xf1, 0x35, 0xb8, 0x18, 0xc6, 0x31, 0xc9, 0x87, 0xf8, 0xb0, 0xee, 0x0e, 0xec,
- 0x1e, 0xdd, 0x1f, 0x79, 0x9e, 0xf2, 0xa9, 0x66, 0x37, 0x9d, 0xf9, 0x4a, 0x45, 0x38, 0x22, 0x4f,
- 0xaf, 0x0b, 0xda, 0xa5, 0x8c, 0xfa, 0x0e, 0x8d, 0xaf, 0xa3, 0xdf, 0xca, 0x70, 0xc2, 0x29, 0xde,
- 0xe4, 0x5d, 0xb8, 0x34, 0x64, 0x6e, 0x20, 0x55, 0xed, 0xd9, 0x5c, 0x85, 0x1c, 0x65, 0x69, 0x9c,
- 0x5f, 0xd1, 0x6c, 0x2e, 0xed, 0x67, 0x09, 0x70, 0xba, 0x8d, 0x08, 0x3e, 0x0c, 0x50, 0xa6, 0x62,
- 0x3a, 0xf8, 0x30, 0x6d, 0x31, 0xc2, 0x92, 0x3d, 0x28, 0xd9, 0xdd, 0xae, 0xeb, 0x0b, 0xca, 0x65,
- 0x69, 0x2a, 0xaf, 0xce, 0x1a, 0x5a, 0x43, 0xd3, 0x28, 0x3e, 0xe6, 0x0b, 0xa3, 0xb6, 0x1b, 0xdf,
- 0x83, 0x4b, 0x53, 0x53, 0x77, 0xa6, 0xed, 0xdd, 0x02, 0x88, 0x6f, 0x46, 0x91, 0xaf, 0x41, 0x91,
- 0x87, 0x36, 0x33, 0x89, 0x5c, 0x14, 0x5c, 0x5b, 0x02, 0x88, 0x0a, 0x47, 0xae, 0x42, 0x81, 0x87,
- 0xc1, 0x30, 0x5b, 0xca, 0xb1, 0xc2, 0x60, 0x88, 0x12, 0x53, 0xfb, 0xac, 0x00, 0x4b, 0x66, 0xe7,
- 0xe1, 0x89, 0x20, 0x34, 0x37, 0xef, 0xb5, 0x01, 0xcd, 0xf4, 0xa9, 0xb1, 0x68, 0x7a, 0xbb, 0xc8,
- 0x9f, 0xfb, 0x76, 0x71, 0x04, 0x8b, 0x43, 0xe9, 0x8c, 0xb5, 0x83, 0x7a, 0x77, 0x7e, 0xd9, 0x92,
- 0x9d, 0xda, 0x6b, 0xd5, 0x6f, 0xd4, 0x22, 0xc8, 0x43, 0x58, 0x65, 0x34, 0x64, 0x27, 0xa9, 0xbd,
- 0x69, 0x9e, 0x2a, 0x80, 0x3c, 0x13, 0xc5, 0x24, 0x4b, 0x4c, 0x4b, 0x20, 0x43, 0x28, 0x33, 0x93,
- 0xd3, 0x6b, 0x57, 0xd7, 0x7c, 0xf6, 0x21, 0x46, 0xe5, 0x01, 0xe5, 0xa9, 0xa3, 0x4f, 0x8c, 0x85,
- 0xd4, 0xfe, 0x3b, 0x07, 0xeb, 0xd9, 0x69, 0x20, 0x47, 0xb0, 0xc0, 0x99, 0xa3, 0xcd, 0x6a, 0xff,
- 0xf9, 0xcd, 0xaf, 0x0a, 0x66, 0x54, 0x59, 0xc7, 0x62, 0x0e, 0x0a, 0x29, 0xc2, 0xec, 0x3b, 0x94,
- 0x87, 0x59, 0xb3, 0xdf, 0xa1, 0x3c, 0x44, 0x89, 0x21, 0xad, 0x64, 0xd0, 0xb3, 0x90, 0xba, 0x99,
- 0x96, 0x0a, 0x7a, 0xbe, 0x92, 0x95, 0x37, 0x2b, 0xe4, 0xa9, 0xfd, 0x78, 0x01, 0x5e, 0x9e, 0xdd,
- 0x31, 0xf2, 0x5d, 0xb8, 0x18, 0x65, 0x96, 0x27, 0x89, 0xf7, 0xce, 0xd1, 0x01, 0xdb, 0x4e, 0x0a,
- 0x8b, 0x19, 0x6a, 0x11, 0x65, 0xe8, 0xcb, 0x88, 0xe6, 0xd1, 0x73, 0xa2, 0xd2, 0xdd, 0x8c, 0x30,
- 0x98, 0xa0, 0x22, 0x0d, 0x58, 0xd3, 0x5f, 0xed, 0x64, 0x4e, 0x99, 0x38, 0xc6, 0x6a, 0xa6, 0xd1,
- 0x98, 0xa5, 0x17, 0x61, 0xac, 0x88, 0x06, 0xcc, 0xbb, 0xb3, 0x44, 0x18, 0xbb, 0xa3, 0xc0, 0x68,
- 0xf0, 0x22, 0x01, 0x14, 0x3f, 0xdb, 0xe9, 0x8b, 0xe6, 0x71, 0x96, 0x9d, 0xc0, 0x61, 0x8a, 0x32,
- 0xbe, 0x01, 0xaf, 0x6e, 0x42, 0x4d, 0xdf, 0x80, 0xbf, 0x0e, 0x30, 0xe2, 0x14, 0xed, 0x47, 0x82,
- 0x89, 0xae, 0x1d, 0x46, 0x83, 0x3f, 0x88, 0x30, 0x98, 0xa0, 0xaa, 0xfd, 0x32, 0x07, 0xab, 0xa9,
- 0x85, 0x48, 0xba, 0xb0, 0x70, 0x74, 0xc3, 0xe4, 0x40, 0x77, 0x9e, 0xe3, 0x01, 0xbe, 0xb2, 0xba,
- 0x3b, 0x37, 0x38, 0x0a, 0x01, 0xe4, 0x41, 0x94, 0x6e, 0xcd, 0x7d, 0x35, 0x35, 0x19, 0x24, 0xea,
- 0xa0, 0x3d, 0x9d, 0x79, 0xfd, 0xc7, 0x2a, 0xac, 0x65, 0x3c, 0xec, 0x29, 0x6e, 0x1b, 0x29, 0x63,
- 0xd2, 0x2f, 0x76, 0x66, 0x18, 0x93, 0x79, 0xcb, 0x93, 0xa0, 0x22, 0x3d, 0xa5, 0x3d, 0xe5, 0x1c,
- 0x5b, 0x73, 0x0d, 0x29, 0x93, 0xe9, 0x64, 0xd4, 0xf7, 0xa3, 0x1c, 0xac, 0xd8, 0x89, 0x27, 0xd0,
- 0xda, 0x37, 0xde, 0x9d, 0x27, 0xfd, 0x99, 0x7a, 0xfd, 0xad, 0x2e, 0xf3, 0x25, 0x11, 0x98, 0x12,
- 0x4a, 0x1c, 0x28, 0xf4, 0xc3, 0xd0, 0x3c, 0xb5, 0xdd, 0x7d, 0x2e, 0xd7, 0x66, 0xd4, 0xf1, 0xac,
- 0x00, 0xa0, 0x64, 0x4e, 0x1e, 0x41, 0xd9, 0x7e, 0xc4, 0xd5, 0xdf, 0x22, 0xe8, 0x37, 0xb8, 0xf3,
- 0x64, 0x79, 0x99, 0x7f, 0x58, 0xd0, 0xe7, 0x66, 0x06, 0x8a, 0xb1, 0x2c, 0xc2, 0x60, 0xd1, 0x91,
- 0x2f, 0x86, 0xf4, 0xed, 0xa3, 0x77, 0x9f, 0xd3, 0xcb, 0x23, 0xb5, 0x0f, 0xa5, 0x40, 0xa8, 0x25,
- 0x91, 0x1e, 0x14, 0x8f, 0xec, 0xee, 0x91, 0xad, 0x8b, 0xf7, 0x73, 0xac, 0x8a, 0xe4, 0xb5, 0x10,
- 0xe5, 0x2d, 0x24, 0x04, 0x15, 0x7f, 0x31, 0x75, 0xbe, 0x1d, 0x72, 0x5d, 0xc1, 0x9f, 0x63, 0xea,
- 0x12, 0x07, 0xdd, 0x6a, 0xea, 0x04, 0x00, 0x25, 0x73, 0x31, 0x1a, 0x59, 0x18, 0xd0, 0xf5, 0xfb,
- 0x79, 0xd6, 0x78, 0xa2, 0x70, 0xa2, 0x46, 0x23, 0x21, 0xa8, 0xf8, 0x0b, 0x1b, 0x09, 0xcc, 0x41,
- 0xae, 0x8e, 0x3b, 0xe7, 0xb0, 0x91, 0xec, 0x99, 0xb0, 0xb2, 0x91, 0x08, 0x8a, 0xb1, 0x2c, 0xf2,
- 0x21, 0x2c, 0x78, 0x41, 0x4f, 0xdf, 0x4a, 0x98, 0xa3, 0x76, 0x1e, 0x5f, 0x40, 0x50, 0x0b, 0xbd,
- 0x15, 0xf4, 0x50, 0x70, 0x26, 0x7f, 0x9d, 0x83, 0x8b, 0x76, 0xea, 0xd1, 0x76, 0x65, 0x75, 0xde,
- 0x07, 0x1b, 0x33, 0x1f, 0x81, 0xab, 0x7f, 0x94, 0x48, 0xa3, 0x30, 0x23, 0x5a, 0xc6, 0x7f, 0xf2,
- 0x28, 0xb3, 0x72, 0x71, 0xde, 0x25, 0x91, 0x3a, 0x12, 0xd5, 0xf1, 0x9f, 0x04, 0xa1, 0x16, 0x41,
- 0x7e, 0x9a, 0x93, 0x5b, 0x73, 0xf2, 0xcd, 0x64, 0x65, 0x6d, 0xee, 0x37, 0x80, 0xb3, 0xdf, 0x79,
- 0xa6, 0x76, 0xfb, 0x24, 0x01, 0x66, 0xbb, 0x40, 0x7e, 0x92, 0x83, 0x35, 0x3b, 0xfd, 0x20, 0xba,
- 0xb2, 0x3e, 0x6f, 0xa4, 0x36, 0xfb, 0x85, 0xb5, 0x3e, 0x32, 0x4b, 0xe3, 0x30, 0x2b, 0xbd, 0xe6,
- 0xc0, 0x72, 0xe2, 0x3f, 0x11, 0x4e, 0x71, 0x68, 0x7d, 0x1d, 0xe0, 0x98, 0x32, 0xb7, 0x7b, 0xd2,
- 0xa4, 0x2c, 0xd4, 0x0f, 0x44, 0xa3, 0xad, 0xed, 0xfd, 0x08, 0x83, 0x09, 0xaa, 0xed, 0xfa, 0xa7,
- 0x9f, 0x6f, 0x5e, 0xf8, 0xec, 0xf3, 0xcd, 0x0b, 0xbf, 0xf8, 0x7c, 0xf3, 0xc2, 0x0f, 0x27, 0x9b,
- 0xb9, 0x4f, 0x27, 0x9b, 0xb9, 0xcf, 0x26, 0x9b, 0xb9, 0x5f, 0x4c, 0x36, 0x73, 0xff, 0x39, 0xd9,
- 0xcc, 0xfd, 0xcd, 0x2f, 0x37, 0x2f, 0xfc, 0x51, 0xc9, 0x8c, 0xe8, 0xff, 0x02, 0x00, 0x00, 0xff,
- 0xff, 0x1c, 0xa6, 0xc1, 0xf8, 0x86, 0x48, 0x00, 0x00,
+ // 4708 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3c, 0x4d, 0x73, 0x63, 0xc7,
+ 0x71, 0x0b, 0x10, 0x20, 0xc1, 0x26, 0xb8, 0xe4, 0xce, 0x6a, 0x65, 0x88, 0x96, 0x88, 0x0d, 0x5c,
+ 0x51, 0xd6, 0x2e, 0x1b, 0x94, 0x56, 0x71, 0x4c, 0x2b, 0x15, 0x5b, 0x20, 0x48, 0x6a, 0xb9, 0x8b,
+ 0xdd, 0xa5, 0xfa, 0x81, 0x52, 0xe5, 0xab, 0xa4, 0xe1, 0xc3, 0x00, 0x78, 0xe2, 0xc3, 0x7b, 0xd8,
+ 0x99, 0x07, 0xae, 0xe8, 0x2a, 0x27, 0x4e, 0x5c, 0x49, 0x95, 0x2b, 0x55, 0x72, 0x0e, 0x3e, 0xe4,
+ 0xe4, 0xca, 0x25, 0x87, 0x54, 0x72, 0x48, 0x55, 0xfe, 0x81, 0x73, 0xd1, 0x51, 0xb9, 0xf9, 0x90,
+ 0xa0, 0x22, 0xfa, 0x94, 0x83, 0x2b, 0xf1, 0x29, 0xa9, 0x3d, 0xa5, 0xe6, 0xe3, 0x7d, 0x02, 0xab,
+ 0x25, 0x17, 0x2b, 0x6e, 0xaa, 0x7c, 0xc3, 0xeb, 0xee, 0xe9, 0x9e, 0xe9, 0xe9, 0xe9, 0xe9, 0xee,
+ 0x99, 0x01, 0xdc, 0xea, 0x39, 0x41, 0x7f, 0x74, 0x58, 0xb7, 0xfd, 0xc1, 0x06, 0xe5, 0x3d, 0x7f,
+ 0xc8, 0xfd, 0x0f, 0xd5, 0x8f, 0x6f, 0xb0, 0x63, 0xe6, 0x05, 0x62, 0x63, 0x78, 0xd4, 0xdb, 0xa0,
+ 0x43, 0x47, 0x6c, 0x08, 0xe6, 0x09, 0x9f, 0x6f, 0x1c, 0xbf, 0x4e, 0xdd, 0x61, 0x9f, 0xbe, 0xbe,
+ 0xd1, 0x63, 0x1e, 0xe3, 0x34, 0x60, 0x9d, 0xfa, 0x90, 0xfb, 0x81, 0x4f, 0x36, 0x63, 0x4e, 0xf5,
+ 0x90, 0x93, 0xfa, 0xf1, 0xbe, 0xe6, 0x54, 0x1f, 0x1e, 0xf5, 0xea, 0x92, 0x53, 0x5d, 0x73, 0xaa,
+ 0x87, 0x9c, 0xd6, 0xbe, 0x7b, 0xe6, 0x3e, 0xd8, 0xfe, 0x60, 0xe0, 0x7b, 0x59, 0xd1, 0x6b, 0xdf,
+ 0x48, 0x30, 0xe8, 0xf9, 0x3d, 0x7f, 0x43, 0x81, 0x0f, 0x47, 0x5d, 0xf5, 0xa5, 0x3e, 0xd4, 0x2f,
+ 0x43, 0x5e, 0x3b, 0xda, 0x14, 0x75, 0xc7, 0x97, 0x2c, 0x37, 0x6c, 0x9f, 0xb3, 0x8d, 0xe3, 0x89,
+ 0xd1, 0xac, 0xfd, 0x76, 0x4c, 0x33, 0xa0, 0x76, 0xdf, 0xf1, 0x18, 0x3f, 0x89, 0xfb, 0x31, 0x60,
+ 0x01, 0x9d, 0xd6, 0x6a, 0xe3, 0x71, 0xad, 0xf8, 0xc8, 0x0b, 0x9c, 0x01, 0x9b, 0x68, 0xf0, 0x3b,
+ 0x4f, 0x6a, 0x20, 0xec, 0x3e, 0x1b, 0xd0, 0x6c, 0xbb, 0xda, 0xa3, 0x02, 0xac, 0x36, 0xde, 0xb3,
+ 0x5a, 0x74, 0x70, 0xd8, 0xa1, 0x6d, 0xee, 0xf4, 0x7a, 0x8c, 0x93, 0x4d, 0x28, 0x77, 0x47, 0x9e,
+ 0x1d, 0x38, 0xbe, 0x77, 0x8f, 0x0e, 0x58, 0x25, 0x77, 0x3d, 0x77, 0x63, 0x71, 0xeb, 0x85, 0x4f,
+ 0xc6, 0xd5, 0x4b, 0xa7, 0xe3, 0x6a, 0x79, 0x37, 0x81, 0xc3, 0x14, 0x25, 0x41, 0x58, 0xa4, 0xb6,
+ 0xcd, 0x84, 0xb8, 0xc3, 0x4e, 0x2a, 0xf9, 0xeb, 0xb9, 0x1b, 0x4b, 0x37, 0x7f, 0xb3, 0xae, 0xbb,
+ 0x26, 0xa7, 0xac, 0x2e, 0xb5, 0x54, 0x3f, 0x7e, 0xbd, 0x6e, 0x31, 0x9b, 0xb3, 0xe0, 0x0e, 0x3b,
+ 0xb1, 0x98, 0xcb, 0xec, 0xc0, 0xe7, 0x5b, 0xcb, 0xa7, 0xe3, 0xea, 0x62, 0x23, 0x6c, 0x8b, 0x31,
+ 0x1b, 0xc9, 0x53, 0x84, 0xe4, 0x95, 0xb9, 0x73, 0xf3, 0x8c, 0xc0, 0x18, 0xb3, 0x21, 0xaf, 0xc2,
+ 0x3c, 0x67, 0x3d, 0xc7, 0xf7, 0x2a, 0x05, 0x35, 0xb6, 0xcb, 0x66, 0x6c, 0xf3, 0xa8, 0xa0, 0x68,
+ 0xb0, 0x64, 0x04, 0x0b, 0x43, 0x7a, 0xe2, 0xfa, 0xb4, 0x53, 0x29, 0x5e, 0x9f, 0xbb, 0xb1, 0x74,
+ 0xf3, 0x76, 0xfd, 0x69, 0xad, 0xb3, 0x6e, 0xb4, 0xbb, 0x4f, 0x39, 0x1d, 0xb0, 0x80, 0xf1, 0xad,
+ 0x15, 0x23, 0x74, 0x61, 0x5f, 0x8b, 0xc0, 0x50, 0x16, 0xf9, 0x13, 0x80, 0x61, 0x48, 0x26, 0x2a,
+ 0xf3, 0xcf, 0x5c, 0x32, 0x31, 0x92, 0x21, 0x02, 0x09, 0x4c, 0x48, 0x24, 0x6f, 0xc2, 0x65, 0xc7,
+ 0x3b, 0xf6, 0x6d, 0x2a, 0x27, 0xb6, 0x7d, 0x32, 0x64, 0x95, 0x05, 0xa5, 0x26, 0x72, 0x3a, 0xae,
+ 0x5e, 0xde, 0x4b, 0x61, 0x30, 0x43, 0x49, 0xbe, 0x0a, 0x0b, 0xdc, 0x77, 0x59, 0x03, 0xef, 0x55,
+ 0x4a, 0xaa, 0x51, 0x34, 0x4c, 0xd4, 0x60, 0x0c, 0xf1, 0xb5, 0x5f, 0xe6, 0xe1, 0x6a, 0x83, 0xf7,
+ 0xfc, 0xf7, 0x7c, 0x7e, 0xd4, 0x75, 0xfd, 0x87, 0xa1, 0xfd, 0x79, 0x30, 0x2f, 0xfc, 0x11, 0xb7,
+ 0xb5, 0xe5, 0xcd, 0x34, 0xf4, 0x06, 0x0f, 0x9c, 0x2e, 0xb5, 0x83, 0x96, 0xe9, 0xe2, 0x16, 0xc8,
+ 0x59, 0xb6, 0x14, 0x77, 0x34, 0x52, 0xc8, 0x2d, 0x58, 0xf4, 0x87, 0x72, 0x59, 0x48, 0x83, 0xc8,
+ 0xab, 0x4e, 0x7f, 0xcd, 0x74, 0x7a, 0xf1, 0x7e, 0x88, 0x78, 0x34, 0xae, 0x5e, 0x4b, 0x76, 0x36,
+ 0x42, 0x60, 0xdc, 0x38, 0x33, 0x71, 0x73, 0x17, 0x3e, 0x71, 0x2f, 0x43, 0x81, 0xf2, 0x9e, 0xa8,
+ 0x14, 0xae, 0xcf, 0xdd, 0x58, 0xdc, 0x2a, 0x9d, 0x8e, 0xab, 0x85, 0x06, 0xef, 0x09, 0x54, 0xd0,
+ 0xda, 0xaf, 0xe4, 0x62, 0xcf, 0x28, 0x84, 0x58, 0x90, 0x17, 0x6f, 0x18, 0x45, 0xff, 0xee, 0xd9,
+ 0xbb, 0xaa, 0x3d, 0x68, 0xdd, 0x7a, 0x23, 0x64, 0xb8, 0x35, 0x7f, 0x3a, 0xae, 0xe6, 0xad, 0x37,
+ 0x30, 0x2f, 0xde, 0x20, 0x35, 0x98, 0x77, 0x3c, 0xd7, 0xf1, 0x98, 0x51, 0xa7, 0xd2, 0xfa, 0x9e,
+ 0x82, 0xa0, 0xc1, 0x90, 0x0e, 0x14, 0xba, 0x8e, 0xcb, 0xcc, 0x92, 0xde, 0x7d, 0x7a, 0x2d, 0xed,
+ 0x3a, 0x2e, 0x8b, 0x7a, 0xa1, 0xc6, 0x2c, 0x21, 0xa8, 0xb8, 0x93, 0x0f, 0x60, 0x6e, 0xc4, 0x5d,
+ 0xb5, 0xcc, 0x97, 0x6e, 0xee, 0x3c, 0xbd, 0x90, 0x03, 0x6c, 0x45, 0x32, 0x16, 0x4e, 0xc7, 0xd5,
+ 0xb9, 0x03, 0x6c, 0xa1, 0x64, 0x4d, 0x0e, 0x60, 0xd1, 0xf6, 0xbd, 0xae, 0xd3, 0x1b, 0xd0, 0x61,
+ 0xa5, 0xa8, 0xe4, 0xdc, 0x98, 0xe6, 0x9f, 0x9a, 0x8a, 0xe8, 0x2e, 0x1d, 0x4e, 0xb8, 0xa8, 0x66,
+ 0xd8, 0x1c, 0x63, 0x4e, 0xb2, 0xe3, 0x3d, 0x27, 0xa8, 0xcc, 0xcf, 0xda, 0xf1, 0xb7, 0x9d, 0x20,
+ 0xdd, 0xf1, 0xb7, 0x9d, 0x00, 0x25, 0x6b, 0x62, 0x43, 0x89, 0x33, 0xb3, 0xd0, 0x16, 0x94, 0x98,
+ 0x6f, 0x9f, 0x7b, 0xfe, 0xd1, 0x30, 0xd8, 0x2a, 0x9f, 0x8e, 0xab, 0xa5, 0xf0, 0x0b, 0x23, 0xc6,
+ 0xb5, 0x7f, 0x2e, 0xc0, 0xb5, 0xc6, 0xf7, 0x46, 0x9c, 0xed, 0x48, 0x06, 0xb7, 0x46, 0x87, 0x22,
+ 0x5c, 0xe5, 0xd7, 0xa1, 0xd0, 0x7d, 0xd0, 0xf1, 0xcc, 0xee, 0x52, 0x36, 0x96, 0x5d, 0xd8, 0x7d,
+ 0x67, 0xfb, 0x1e, 0x2a, 0x8c, 0x74, 0x25, 0xfd, 0xd1, 0xa1, 0xda, 0x82, 0xf2, 0x69, 0x57, 0x72,
+ 0x4b, 0x83, 0x31, 0xc4, 0x93, 0x21, 0x5c, 0x15, 0x7d, 0xca, 0x59, 0x27, 0xda, 0x42, 0x54, 0xb3,
+ 0x73, 0x6d, 0x17, 0x5f, 0x3a, 0x1d, 0x57, 0xaf, 0x5a, 0x93, 0x5c, 0x70, 0x1a, 0x6b, 0xd2, 0x81,
+ 0x95, 0x0c, 0xd8, 0x18, 0xd9, 0x19, 0xa5, 0x5d, 0x3d, 0x1d, 0x57, 0x57, 0x32, 0xd2, 0x30, 0xcb,
+ 0xf2, 0xd7, 0x74, 0x03, 0xaa, 0xfd, 0x4f, 0x01, 0x5e, 0x54, 0x56, 0x63, 0x31, 0x7e, 0xec, 0xd8,
+ 0x6c, 0x6b, 0x14, 0x99, 0x4d, 0x0f, 0x56, 0x6d, 0xdf, 0xf3, 0x98, 0x0a, 0x3a, 0xac, 0x80, 0x3b,
+ 0x5e, 0xcf, 0x78, 0xaf, 0x33, 0x2a, 0xfe, 0x85, 0xd3, 0x71, 0x75, 0xb5, 0x99, 0x61, 0x81, 0x13,
+ 0x4c, 0xc9, 0x06, 0x2c, 0x3e, 0x18, 0xb1, 0x11, 0x4b, 0xd8, 0xdf, 0x95, 0x70, 0x57, 0x78, 0x27,
+ 0x44, 0x60, 0x4c, 0x23, 0x1b, 0x04, 0xfe, 0xd0, 0xb1, 0x23, 0xcb, 0x4b, 0x34, 0x68, 0x87, 0x08,
+ 0x8c, 0x69, 0xc8, 0x36, 0xac, 0x8a, 0xd1, 0xa1, 0xb0, 0xb9, 0x33, 0x8c, 0x62, 0x2d, 0x1d, 0x8f,
+ 0x54, 0x4c, 0xbb, 0x55, 0x2b, 0x83, 0xc7, 0x89, 0x16, 0xe4, 0x00, 0xe6, 0x02, 0x57, 0x18, 0xcf,
+ 0xf3, 0xe6, 0xb9, 0x57, 0x70, 0xbb, 0x65, 0x69, 0xff, 0xa3, 0xbd, 0x43, 0xbb, 0x65, 0xa1, 0xe4,
+ 0x97, 0xb4, 0xbc, 0xf9, 0xe7, 0x66, 0x79, 0x0b, 0x17, 0x6e, 0x79, 0x3d, 0xb8, 0xd6, 0xf4, 0xbd,
+ 0x8e, 0x23, 0xd5, 0x2b, 0x90, 0x09, 0x16, 0x6c, 0x9d, 0xb4, 0x9d, 0x01, 0x93, 0xee, 0xca, 0xe6,
+ 0xfe, 0x84, 0xbb, 0x6a, 0x72, 0xdf, 0x43, 0x85, 0x21, 0x5f, 0x87, 0x92, 0x0c, 0xb5, 0xbf, 0xe7,
+ 0x47, 0xdb, 0xde, 0xaa, 0xa1, 0x2a, 0xb5, 0x0d, 0x1c, 0x23, 0x8a, 0xda, 0xc7, 0x39, 0xf8, 0x52,
+ 0x46, 0x52, 0x93, 0x3b, 0x01, 0xe3, 0x0e, 0x25, 0x02, 0xe6, 0x0f, 0x95, 0x54, 0x63, 0xd9, 0xf7,
+ 0x9f, 0x5e, 0x01, 0x53, 0x07, 0xa3, 0xf7, 0x63, 0xfd, 0x1b, 0x8d, 0xa8, 0xda, 0x3f, 0x15, 0x61,
+ 0xb9, 0x39, 0x12, 0x81, 0x3f, 0x08, 0x97, 0xda, 0x86, 0x8c, 0xbc, 0xf9, 0x31, 0xe3, 0x07, 0xd8,
+ 0x32, 0xe3, 0x8e, 0x0c, 0xda, 0x0a, 0x11, 0x18, 0xd3, 0xc8, 0xb0, 0x5a, 0x30, 0x7b, 0xc4, 0xf5,
+ 0xf8, 0x4b, 0x71, 0x58, 0x6d, 0x29, 0x28, 0x1a, 0x2c, 0x39, 0x00, 0xb0, 0x19, 0x0f, 0xf4, 0xda,
+ 0x3c, 0x9f, 0x93, 0xbe, 0x2c, 0xe7, 0xae, 0x19, 0x35, 0xc6, 0x04, 0x23, 0x72, 0x1b, 0x88, 0xee,
+ 0x8b, 0x5c, 0x17, 0xf7, 0x8f, 0x19, 0xe7, 0x4e, 0x27, 0x5c, 0x51, 0x6b, 0xa6, 0x2b, 0xc4, 0x9a,
+ 0xa0, 0xc0, 0x29, 0xad, 0x88, 0x80, 0x82, 0x18, 0x32, 0xdb, 0x78, 0xdd, 0x77, 0x66, 0x98, 0x80,
+ 0xa4, 0x4a, 0xeb, 0xd6, 0x90, 0xd9, 0x3b, 0x5e, 0xc0, 0x4f, 0x62, 0x0b, 0x92, 0x20, 0x54, 0xc2,
+ 0x9e, 0x7b, 0xdc, 0x9f, 0x58, 0xf3, 0x0b, 0x17, 0xb7, 0xe6, 0xd7, 0xbe, 0x05, 0x8b, 0x91, 0x5e,
+ 0xc8, 0x2a, 0xcc, 0x1d, 0xb1, 0x13, 0x6d, 0x6e, 0x28, 0x7f, 0x92, 0x17, 0xa0, 0x78, 0x4c, 0xdd,
+ 0x91, 0x59, 0x54, 0xa8, 0x3f, 0xde, 0xcc, 0x6f, 0xe6, 0x6a, 0xbf, 0xcc, 0x01, 0x6c, 0xd3, 0x80,
+ 0xee, 0x3a, 0x6e, 0xa0, 0x23, 0x8a, 0x21, 0x0d, 0xfa, 0xd9, 0x25, 0xba, 0x4f, 0x83, 0x3e, 0x2a,
+ 0x0c, 0xf9, 0x3a, 0x14, 0x02, 0x99, 0xce, 0xe4, 0x53, 0x5e, 0xb6, 0x20, 0x13, 0x97, 0x47, 0xe3,
+ 0x6a, 0xe9, 0xb6, 0x75, 0xff, 0x9e, 0x4a, 0x6a, 0x14, 0x15, 0xa9, 0x86, 0x82, 0xe7, 0x54, 0x38,
+ 0xbd, 0x78, 0x3a, 0xae, 0x16, 0xdf, 0x95, 0x00, 0xd3, 0x07, 0xf2, 0x16, 0x80, 0xed, 0x0f, 0xa4,
+ 0x02, 0x03, 0x9f, 0x1b, 0x43, 0xbb, 0x1e, 0xea, 0xb8, 0x19, 0x61, 0x1e, 0xa5, 0xbe, 0x30, 0xd1,
+ 0x46, 0xf9, 0x0c, 0x36, 0x18, 0xba, 0x34, 0x60, 0xca, 0x83, 0x27, 0x7d, 0x86, 0x81, 0x63, 0x44,
+ 0x51, 0xfb, 0x69, 0x0e, 0x8a, 0x2a, 0x8e, 0x22, 0x03, 0x58, 0xb0, 0x7d, 0x2f, 0x60, 0x1f, 0x05,
+ 0xc6, 0x45, 0xcc, 0x10, 0x3f, 0x2b, 0x8e, 0x4d, 0xcd, 0x6d, 0x6b, 0x49, 0xce, 0x90, 0xf9, 0xc0,
+ 0x50, 0x86, 0xcc, 0x2b, 0x3a, 0x34, 0xa0, 0x4a, 0x6f, 0x65, 0x1d, 0x63, 0x4b, 0xbd, 0xa3, 0x82,
+ 0xbe, 0x59, 0xfa, 0x9b, 0xbf, 0xad, 0x5e, 0xfa, 0xc1, 0xbf, 0x5d, 0xbf, 0x54, 0xfb, 0x55, 0x1e,
+ 0xca, 0x49, 0x76, 0x64, 0x0d, 0xf2, 0x4e, 0xc7, 0x4c, 0x08, 0x98, 0x91, 0xe5, 0xf7, 0xb6, 0x31,
+ 0xef, 0x74, 0x94, 0xb7, 0xd0, 0xd1, 0x67, 0x3e, 0x9d, 0x84, 0x67, 0xd2, 0xb3, 0x6f, 0xc2, 0x92,
+ 0x5c, 0x1d, 0xc7, 0x8c, 0x0b, 0x99, 0xa0, 0xe9, 0x9d, 0xf5, 0xaa, 0x21, 0x5e, 0x92, 0x96, 0xf3,
+ 0xae, 0x46, 0x61, 0x92, 0x4e, 0x5a, 0x83, 0x9a, 0xeb, 0x42, 0xda, 0x1a, 0x12, 0xf3, 0xdb, 0x80,
+ 0x15, 0xd9, 0x7f, 0x35, 0x48, 0x2f, 0x50, 0xc4, 0x7a, 0x0e, 0xbe, 0x64, 0x88, 0x57, 0xe4, 0x20,
+ 0x9b, 0x1a, 0xad, 0xda, 0x65, 0xe9, 0x65, 0x88, 0x2a, 0x46, 0x87, 0x1f, 0x32, 0x5b, 0x47, 0xea,
+ 0x89, 0x10, 0xd5, 0xd2, 0x60, 0x0c, 0xf1, 0xa4, 0x05, 0x05, 0xe9, 0xfc, 0x4d, 0xa8, 0xfd, 0xb5,
+ 0x84, 0xbb, 0x8b, 0x2a, 0x36, 0xf1, 0x1c, 0x0d, 0x58, 0x40, 0xa5, 0x03, 0x54, 0xde, 0x3a, 0xee,
+ 0xbb, 0xf4, 0xd7, 0x8a, 0x4b, 0x42, 0xe7, 0x1f, 0x17, 0x60, 0x45, 0xe9, 0x7c, 0x9b, 0x0d, 0x99,
+ 0xd7, 0x61, 0x9e, 0x7d, 0x22, 0xc7, 0xee, 0xc5, 0x95, 0x9b, 0xa8, 0xbd, 0x8a, 0x20, 0x14, 0x46,
+ 0x8e, 0x5d, 0xd9, 0x85, 0xd6, 0x75, 0x22, 0xc6, 0x89, 0xc6, 0xbe, 0x93, 0x46, 0x63, 0x96, 0x5e,
+ 0x6e, 0x0f, 0x0a, 0x34, 0x2d, 0xde, 0xd9, 0x09, 0x11, 0x18, 0xd3, 0x90, 0x63, 0x58, 0xe8, 0xaa,
+ 0x95, 0x2a, 0x4c, 0xa8, 0x7c, 0x7f, 0x46, 0xa3, 0x8d, 0x47, 0xac, 0x3d, 0x80, 0xb6, 0x5e, 0xfd,
+ 0x5b, 0x60, 0x28, 0x8c, 0xfc, 0x59, 0x0e, 0x16, 0x03, 0x4e, 0x3d, 0xd1, 0xf5, 0xf9, 0xc0, 0x04,
+ 0x4a, 0xed, 0x67, 0x26, 0xba, 0x1d, 0x72, 0x66, 0x26, 0x9d, 0x8b, 0x00, 0x18, 0x4b, 0x25, 0x0e,
+ 0xbc, 0x68, 0xba, 0xd3, 0xf2, 0x7b, 0x8e, 0x4d, 0x5d, 0x5d, 0x3f, 0xf0, 0xb9, 0xb1, 0x9b, 0xd7,
+ 0x8d, 0xe6, 0x5e, 0xdc, 0x9d, 0x4a, 0xf5, 0x68, 0x5c, 0x5d, 0xc9, 0x80, 0xf0, 0x31, 0x0c, 0x6b,
+ 0x7f, 0x5f, 0x84, 0x6b, 0x53, 0xd5, 0x43, 0x0e, 0x8d, 0x09, 0x6a, 0x97, 0xb1, 0x3d, 0x83, 0x73,
+ 0x77, 0x06, 0xcc, 0xa8, 0xbc, 0x94, 0x36, 0xcc, 0xa4, 0x67, 0xca, 0x5f, 0x80, 0x67, 0xea, 0x1a,
+ 0xcf, 0xa4, 0x6b, 0x2d, 0x33, 0x0c, 0x29, 0xde, 0x47, 0xe2, 0xf5, 0x12, 0xfb, 0x38, 0xe2, 0x40,
+ 0x91, 0x7d, 0x34, 0xe4, 0xba, 0xb4, 0x32, 0x93, 0xa0, 0x9d, 0x8f, 0x86, 0xdc, 0x08, 0x5a, 0x36,
+ 0x82, 0x8a, 0x12, 0x26, 0x50, 0x4b, 0x20, 0x1f, 0xc0, 0x55, 0x29, 0x32, 0x6b, 0x27, 0xda, 0x35,
+ 0xd5, 0x4d, 0x93, 0xab, 0xdb, 0x93, 0x24, 0xd3, 0x8c, 0x64, 0x1a, 0x2b, 0x29, 0x41, 0x8a, 0x9a,
+ 0x6e, 0x89, 0x91, 0x84, 0x9d, 0x49, 0x92, 0xa9, 0x12, 0xa6, 0xb0, 0x52, 0xbe, 0x5d, 0x65, 0x29,
+ 0xa6, 0x72, 0x18, 0xfb, 0x76, 0x05, 0x45, 0x83, 0xad, 0x7d, 0x00, 0x6b, 0x8f, 0x5f, 0x4e, 0x72,
+ 0xf7, 0xf8, 0xf0, 0x41, 0x76, 0xf7, 0xb8, 0xfd, 0x0e, 0xe6, 0x3f, 0x7c, 0x90, 0x90, 0x90, 0xff,
+ 0x5c, 0x09, 0x3f, 0xcd, 0x01, 0xc4, 0x2a, 0x97, 0x9e, 0x51, 0xf6, 0x37, 0xeb, 0x19, 0x25, 0x05,
+ 0x2a, 0x0c, 0xf1, 0x60, 0xbe, 0xeb, 0x30, 0xb7, 0x23, 0x2a, 0x79, 0x35, 0xd5, 0x33, 0xd8, 0xaf,
+ 0x89, 0x74, 0x76, 0x25, 0xbb, 0xb8, 0x83, 0xea, 0x53, 0xa0, 0x91, 0x52, 0x7b, 0x0d, 0xca, 0xc9,
+ 0x0a, 0xd6, 0x93, 0xa3, 0x98, 0xda, 0x5f, 0x16, 0x61, 0x29, 0x51, 0xd6, 0x21, 0xaf, 0xe8, 0x1a,
+ 0x97, 0x6e, 0xb0, 0x64, 0x1a, 0xc4, 0x05, 0xaa, 0xef, 0xc0, 0x65, 0xdb, 0xf5, 0x3d, 0xb6, 0xed,
+ 0x70, 0x15, 0x43, 0x9f, 0x18, 0x8d, 0xbd, 0x68, 0x28, 0x2f, 0x37, 0x53, 0x58, 0xcc, 0x50, 0x13,
+ 0x1b, 0x8a, 0x36, 0x67, 0x1d, 0x61, 0x02, 0xf5, 0xad, 0x99, 0x6a, 0x51, 0x4d, 0xc9, 0x49, 0x87,
+ 0x52, 0xea, 0x27, 0x6a, 0xde, 0xe4, 0x0f, 0xa1, 0x2c, 0x44, 0x5f, 0x45, 0xfa, 0x2a, 0x29, 0x38,
+ 0x57, 0x2d, 0x65, 0xf5, 0x74, 0x5c, 0x2d, 0x5b, 0xd6, 0xad, 0xa8, 0x39, 0xa6, 0x98, 0xc9, 0x28,
+ 0xab, 0xeb, 0xb8, 0x4c, 0xaa, 0x30, 0x1b, 0x65, 0xed, 0x1a, 0x38, 0x46, 0x14, 0xd2, 0xb2, 0x0e,
+ 0x39, 0xf5, 0xec, 0xbe, 0x59, 0x10, 0xd1, 0xc4, 0x6d, 0x29, 0x28, 0x1a, 0xac, 0x54, 0x7b, 0x40,
+ 0x7b, 0xc6, 0xc0, 0x23, 0xb5, 0xb7, 0x69, 0x0f, 0x25, 0x5c, 0xa2, 0x39, 0xeb, 0x9a, 0x22, 0x78,
+ 0x84, 0x46, 0xd6, 0x45, 0x09, 0x27, 0x03, 0x98, 0xe7, 0x6c, 0xe0, 0x07, 0xac, 0xb2, 0xa8, 0x86,
+ 0xba, 0x37, 0x93, 0x5a, 0x51, 0xb1, 0x32, 0x89, 0x3c, 0xe8, 0x93, 0x0c, 0x09, 0x41, 0x23, 0x84,
+ 0x58, 0x70, 0xcd, 0xf1, 0x74, 0xfa, 0xb5, 0xd7, 0xf3, 0x7c, 0xce, 0x6e, 0xf9, 0x42, 0x9d, 0xa8,
+ 0x80, 0xca, 0xd4, 0x5e, 0x31, 0xfd, 0xbb, 0xb6, 0x37, 0x8d, 0x08, 0xa7, 0xb7, 0xad, 0xfd, 0x63,
+ 0x0e, 0x4a, 0xe1, 0x9c, 0x92, 0xfb, 0x50, 0x1a, 0x09, 0xc6, 0xa3, 0xb8, 0xe3, 0xcc, 0xb3, 0xa7,
+ 0x4a, 0x87, 0x07, 0xa6, 0x29, 0x46, 0x4c, 0x24, 0xc3, 0x21, 0x15, 0xe2, 0xa1, 0xcf, 0x3b, 0xe7,
+ 0x3b, 0x4b, 0x52, 0x0c, 0xf7, 0x4d, 0x53, 0x8c, 0x98, 0xd4, 0xde, 0x81, 0x95, 0x8c, 0xaa, 0xce,
+ 0x10, 0x28, 0xbd, 0x0c, 0x85, 0x11, 0x77, 0xb5, 0x33, 0x30, 0x25, 0xf5, 0x03, 0x6c, 0x59, 0xa8,
+ 0xa0, 0xb5, 0xff, 0x9c, 0x87, 0xa5, 0x5b, 0xed, 0xf6, 0x7e, 0x98, 0x32, 0x3f, 0x61, 0x29, 0x26,
+ 0x12, 0xac, 0xfc, 0x05, 0x16, 0x55, 0x4c, 0x89, 0x68, 0xee, 0x19, 0x97, 0x88, 0x5e, 0x85, 0xf9,
+ 0x01, 0x0b, 0xfa, 0x7e, 0x27, 0x7b, 0x8a, 0x76, 0x57, 0x41, 0xd1, 0x60, 0x33, 0x69, 0x6d, 0xf1,
+ 0xc2, 0xd3, 0xda, 0xaf, 0xc2, 0x82, 0x0c, 0x4d, 0xfc, 0x91, 0x0e, 0xd2, 0xe7, 0x62, 0x4d, 0xb5,
+ 0x35, 0x18, 0x43, 0x3c, 0xe9, 0xc1, 0xe2, 0x21, 0x15, 0x8e, 0xdd, 0x18, 0x05, 0x7d, 0x13, 0xa9,
+ 0x9f, 0x5f, 0x5f, 0x5b, 0x21, 0x07, 0x1d, 0x0f, 0x46, 0x9f, 0x18, 0xf3, 0x26, 0xdf, 0x87, 0x85,
+ 0x3e, 0xa3, 0x1d, 0xa9, 0x90, 0x92, 0x52, 0x08, 0x3e, 0xbd, 0x42, 0x12, 0x06, 0x58, 0xbf, 0xa5,
+ 0x99, 0xea, 0x1a, 0x43, 0x5c, 0x2f, 0xd7, 0x50, 0x0c, 0x65, 0x92, 0x63, 0x58, 0xd6, 0x0b, 0xda,
+ 0x60, 0x2a, 0x8b, 0xaa, 0x13, 0xbf, 0x77, 0xfe, 0x03, 0xa0, 0x04, 0x97, 0xad, 0x2b, 0xa7, 0xe3,
+ 0xea, 0x72, 0x12, 0x22, 0x30, 0x2d, 0x66, 0xed, 0x4d, 0x28, 0x27, 0x7b, 0x78, 0xae, 0x6c, 0xff,
+ 0x2f, 0xe6, 0xe0, 0xca, 0x9d, 0x4d, 0x2b, 0x3c, 0x64, 0xd8, 0xf7, 0x5d, 0xc7, 0x3e, 0x21, 0x7f,
+ 0x0a, 0xf3, 0x2e, 0x3d, 0x64, 0xae, 0xa8, 0xe4, 0xd4, 0x10, 0xde, 0x7b, 0x7a, 0x3d, 0x4e, 0x30,
+ 0xaf, 0xb7, 0x14, 0x67, 0xad, 0xcc, 0xc8, 0xba, 0x35, 0x10, 0x8d, 0x58, 0xf2, 0x3e, 0x2c, 0x1c,
+ 0x52, 0xfb, 0xc8, 0xef, 0x76, 0x8d, 0x97, 0xda, 0x7c, 0x0a, 0x83, 0x51, 0xed, 0x75, 0x88, 0x6b,
+ 0x3e, 0x30, 0xe4, 0x2a, 0x5d, 0x37, 0xe3, 0xdc, 0xe7, 0xf7, 0x3d, 0x83, 0x32, 0x56, 0xab, 0xd6,
+ 0x73, 0xc2, 0x75, 0xef, 0x4c, 0x23, 0xc2, 0xe9, 0x6d, 0xd7, 0xbe, 0x0d, 0x4b, 0x89, 0xc1, 0x9d,
+ 0x6b, 0x1e, 0x7e, 0x36, 0x0f, 0xe5, 0x3b, 0xb4, 0x7b, 0x44, 0xcf, 0xe8, 0xf4, 0xbe, 0x02, 0x45,
+ 0x55, 0xf3, 0x36, 0x61, 0x47, 0x14, 0xf4, 0xaa, 0x9a, 0x38, 0x6a, 0x9c, 0x4c, 0x26, 0x87, 0x94,
+ 0x07, 0xaa, 0x54, 0xa9, 0x06, 0x56, 0x8c, 0x93, 0xc9, 0xfd, 0x10, 0x81, 0x31, 0x4d, 0xc6, 0xa9,
+ 0x14, 0x2e, 0xdc, 0xa9, 0x6c, 0x42, 0x99, 0xb3, 0x07, 0x23, 0x47, 0x1d, 0xd7, 0x1c, 0xe9, 0xfa,
+ 0x7b, 0x31, 0xbe, 0x24, 0x81, 0x09, 0x1c, 0xa6, 0x28, 0x65, 0x34, 0x62, 0xfb, 0x83, 0x21, 0x67,
+ 0x42, 0x28, 0x7f, 0x54, 0x8a, 0xa3, 0x91, 0xa6, 0x81, 0x63, 0x44, 0x21, 0xa3, 0xb7, 0xae, 0x3b,
+ 0x12, 0xfd, 0x5d, 0xc9, 0x43, 0x06, 0xc8, 0xca, 0x2d, 0x15, 0xe3, 0xe8, 0x6d, 0x37, 0x85, 0xc5,
+ 0x0c, 0x75, 0xe8, 0xfb, 0x4b, 0x5f, 0xdc, 0xf1, 0xc0, 0xe2, 0x05, 0xee, 0x64, 0x0d, 0x58, 0x89,
+ 0x4c, 0xc0, 0xf1, 0x7a, 0x61, 0x00, 0x93, 0x28, 0x5b, 0xec, 0xa7, 0xd1, 0x98, 0xa5, 0x97, 0xbb,
+ 0x41, 0x58, 0x4a, 0x5a, 0x4a, 0x97, 0x6c, 0xc2, 0x32, 0x52, 0x88, 0x27, 0xbf, 0x0f, 0x05, 0x41,
+ 0x85, 0x5b, 0x29, 0x3f, 0xed, 0xe9, 0x78, 0xc3, 0x6a, 0x19, 0xed, 0xa9, 0xc0, 0x41, 0x7e, 0xa3,
+ 0x62, 0x59, 0xbb, 0x0f, 0xd0, 0xf2, 0x7b, 0xe1, 0x0a, 0x6a, 0xc0, 0x8a, 0xe3, 0x05, 0x8c, 0x1f,
+ 0x53, 0xd7, 0x62, 0xb6, 0xef, 0x75, 0x84, 0x5a, 0x4d, 0x85, 0x78, 0x58, 0x7b, 0x69, 0x34, 0x66,
+ 0xe9, 0x6b, 0x7f, 0x37, 0x07, 0x4b, 0xf7, 0x1a, 0x6d, 0xeb, 0x8c, 0x8b, 0x32, 0x51, 0xb8, 0xca,
+ 0x3f, 0xa1, 0x70, 0x95, 0x98, 0xea, 0xb9, 0xe7, 0x76, 0x12, 0x74, 0xf1, 0x0b, 0xfc, 0x8b, 0x39,
+ 0x57, 0xab, 0xfd, 0xb8, 0x00, 0xab, 0xf7, 0x87, 0xcc, 0x7b, 0xaf, 0xef, 0x88, 0xa3, 0xc4, 0x59,
+ 0x78, 0xdf, 0x17, 0x41, 0x36, 0x0c, 0x95, 0x71, 0x36, 0x2a, 0x4c, 0xd2, 0x6a, 0xf3, 0x4f, 0xb0,
+ 0xda, 0x0d, 0x58, 0x94, 0x91, 0xab, 0x18, 0x52, 0x7b, 0xa2, 0x2e, 0x77, 0x2f, 0x44, 0x60, 0x4c,
+ 0xa3, 0x6e, 0x6d, 0x8d, 0x82, 0x7e, 0xdb, 0x3f, 0x62, 0xde, 0xf9, 0x12, 0x2f, 0x7d, 0x6b, 0x2b,
+ 0x6c, 0x8b, 0x31, 0x1b, 0x72, 0x13, 0x80, 0xc6, 0x37, 0xc8, 0x74, 0xd2, 0x15, 0x69, 0xbc, 0x11,
+ 0xdf, 0x1f, 0x4b, 0x50, 0xfd, 0xba, 0x1e, 0x39, 0x22, 0x94, 0x93, 0x85, 0x82, 0x33, 0x1c, 0x63,
+ 0x84, 0x59, 0x4b, 0xfe, 0x71, 0x59, 0x4b, 0xed, 0x1f, 0x16, 0x60, 0x79, 0x7f, 0xe4, 0x0a, 0xca,
+ 0x9f, 0xe5, 0x26, 0xfd, 0xbc, 0xaf, 0x37, 0x25, 0x0c, 0xa4, 0x70, 0x81, 0x06, 0x32, 0x84, 0xab,
+ 0x81, 0x2b, 0xda, 0x7c, 0x24, 0x82, 0x26, 0xe3, 0x81, 0x30, 0x25, 0x8a, 0xe2, 0xb9, 0x2f, 0x97,
+ 0xb4, 0x5b, 0x56, 0x96, 0x0b, 0x4e, 0x63, 0x4d, 0x0e, 0x61, 0x2d, 0x70, 0x45, 0xc3, 0x75, 0xfd,
+ 0x87, 0x61, 0x42, 0x1e, 0xdf, 0x58, 0x30, 0x41, 0x43, 0xcd, 0xf4, 0x77, 0xad, 0xdd, 0xb2, 0x1e,
+ 0x43, 0x89, 0x9f, 0xc3, 0x85, 0xdc, 0x55, 0xa3, 0x7a, 0x97, 0xba, 0x4e, 0x87, 0x06, 0x2a, 0xa5,
+ 0x57, 0x36, 0xb5, 0xa0, 0x98, 0x7f, 0x39, 0x2c, 0x02, 0xb6, 0x5b, 0x56, 0x96, 0x04, 0xa7, 0xb5,
+ 0xfb, 0xa2, 0xe2, 0x8c, 0x0e, 0xac, 0x44, 0x4e, 0xc5, 0xe8, 0x7d, 0xf1, 0xdc, 0xd7, 0x6c, 0x1a,
+ 0x69, 0x0e, 0x98, 0x65, 0x49, 0xbe, 0x0f, 0x57, 0xe2, 0xfb, 0x1f, 0x26, 0x52, 0x56, 0x81, 0xc5,
+ 0x2c, 0xd1, 0xfc, 0xb5, 0xd3, 0x71, 0xf5, 0x4a, 0x33, 0xcb, 0x16, 0x27, 0x25, 0xd5, 0xfe, 0x3c,
+ 0x07, 0x8b, 0x48, 0x03, 0xd6, 0x72, 0x06, 0x4e, 0x40, 0x6e, 0x42, 0x61, 0xe4, 0x39, 0xe1, 0x66,
+ 0xb0, 0x1e, 0xae, 0xee, 0x03, 0xcf, 0x09, 0x1e, 0x8d, 0xab, 0x97, 0x23, 0x42, 0x26, 0x21, 0xa8,
+ 0x68, 0x65, 0x00, 0xa1, 0x22, 0x3e, 0x11, 0x88, 0x7d, 0xc6, 0x25, 0x42, 0x2d, 0xe4, 0x62, 0x1c,
+ 0x40, 0x60, 0x1a, 0x8d, 0x59, 0xfa, 0xda, 0xcf, 0xf2, 0x30, 0x6f, 0xa9, 0x45, 0x42, 0x3e, 0x80,
+ 0xd2, 0x80, 0x05, 0x54, 0x15, 0xd6, 0x75, 0x29, 0xe7, 0xb5, 0xb3, 0x1d, 0x57, 0xdd, 0x57, 0x11,
+ 0xc3, 0x5d, 0x16, 0xd0, 0x78, 0x2d, 0xc7, 0x30, 0x8c, 0xb8, 0x92, 0xae, 0x39, 0x5e, 0xcf, 0xcf,
+ 0x7a, 0x12, 0xa1, 0x7b, 0x6c, 0x0d, 0x99, 0x3d, 0xf5, 0x44, 0xdd, 0x83, 0x79, 0x11, 0xd0, 0x60,
+ 0x24, 0x66, 0xbf, 0x66, 0x68, 0x24, 0x29, 0x6e, 0x89, 0x6a, 0xb3, 0xfa, 0x46, 0x23, 0xa5, 0xf6,
+ 0xaf, 0x39, 0x00, 0x4d, 0xd8, 0x72, 0x44, 0x40, 0xfe, 0x68, 0x42, 0x91, 0xf5, 0xb3, 0x29, 0x52,
+ 0xb6, 0x56, 0x6a, 0x8c, 0x52, 0x83, 0x10, 0x92, 0x50, 0x22, 0x83, 0xa2, 0x13, 0xb0, 0x41, 0x58,
+ 0xa8, 0x7e, 0x6b, 0xd6, 0xb1, 0xc5, 0x5e, 0x7f, 0x4f, 0xb2, 0x45, 0xcd, 0xbd, 0xf6, 0xc9, 0x7c,
+ 0x38, 0x26, 0xa9, 0x58, 0xf2, 0xc3, 0x1c, 0x94, 0x3b, 0x61, 0xb9, 0xde, 0x61, 0x61, 0xde, 0xbd,
+ 0xf7, 0xcc, 0x0e, 0xd4, 0xe2, 0x24, 0x6a, 0x3b, 0x21, 0x06, 0x53, 0x42, 0x89, 0x0f, 0xa5, 0x40,
+ 0x7b, 0xf0, 0x70, 0xf8, 0x8d, 0x99, 0xf7, 0x82, 0xc4, 0xd9, 0xbb, 0x61, 0x8d, 0x91, 0x10, 0xe2,
+ 0x26, 0x4e, 0xea, 0x67, 0x2e, 0x84, 0x87, 0x67, 0xfb, 0xba, 0x54, 0x39, 0x79, 0xd2, 0x4f, 0x6e,
+ 0x03, 0x31, 0x79, 0xfb, 0x2e, 0x75, 0x5c, 0xd6, 0x41, 0x7f, 0xe4, 0xe9, 0x32, 0x5b, 0x29, 0xbe,
+ 0xca, 0xb2, 0x33, 0x41, 0x81, 0x53, 0x5a, 0xc9, 0x4c, 0x55, 0xf5, 0x67, 0x6b, 0x24, 0x12, 0xc1,
+ 0x58, 0xa4, 0xe4, 0x9d, 0x04, 0x0e, 0x53, 0x94, 0xe4, 0x06, 0x94, 0x38, 0x1b, 0xba, 0x8e, 0x4d,
+ 0x75, 0xa6, 0x5a, 0x0c, 0xaf, 0x79, 0x6a, 0x18, 0x46, 0x58, 0xd2, 0x82, 0x17, 0x38, 0x3b, 0x76,
+ 0x64, 0xfc, 0x79, 0xcb, 0x11, 0x81, 0xcf, 0x4f, 0x94, 0x8b, 0x32, 0xb9, 0x6a, 0xe5, 0x74, 0x5c,
+ 0x7d, 0x01, 0xa7, 0xe0, 0x71, 0x6a, 0x2b, 0xf2, 0x93, 0x1c, 0x2c, 0xbb, 0x7e, 0xaf, 0xe7, 0x78,
+ 0x3d, 0x7d, 0x58, 0x62, 0x6a, 0x64, 0xef, 0x3d, 0x0b, 0x3f, 0x51, 0x6f, 0x25, 0x39, 0xeb, 0xda,
+ 0xce, 0x35, 0xa3, 0x8c, 0xe5, 0x14, 0x0e, 0xd3, 0x9d, 0x58, 0x7b, 0x0b, 0xc8, 0x64, 0xdb, 0x73,
+ 0x95, 0x4e, 0x7c, 0x28, 0x27, 0xdd, 0x08, 0x79, 0x3f, 0x72, 0x4f, 0xda, 0x3b, 0x7c, 0xeb, 0xfc,
+ 0x29, 0xe6, 0xe7, 0xfb, 0xa3, 0x3f, 0x86, 0x25, 0xcb, 0xa5, 0xf6, 0x91, 0x25, 0x57, 0x8e, 0xba,
+ 0x6e, 0x92, 0xaa, 0xd1, 0x27, 0x0e, 0x42, 0xa6, 0x14, 0xe0, 0xaf, 0x43, 0xc1, 0xb1, 0xa3, 0x84,
+ 0x23, 0x72, 0xaf, 0x7b, 0xb6, 0xef, 0xa1, 0xc2, 0xd4, 0xfe, 0x25, 0x67, 0xf8, 0xb7, 0xfb, 0x9c,
+ 0xd1, 0x0e, 0xb1, 0xe0, 0xda, 0x80, 0x09, 0x41, 0x7b, 0xac, 0xd1, 0xeb, 0x71, 0xd6, 0x53, 0x57,
+ 0xcc, 0xef, 0x84, 0xda, 0x89, 0x4b, 0x55, 0x77, 0xa7, 0x11, 0xe1, 0xf4, 0xb6, 0xe4, 0x7d, 0x78,
+ 0xe9, 0x90, 0xfb, 0xb4, 0x63, 0x53, 0xe9, 0x01, 0x15, 0x45, 0xdb, 0x6f, 0xf6, 0xa9, 0xe7, 0x31,
+ 0xd7, 0x5c, 0x34, 0xfb, 0x0d, 0xc3, 0xf8, 0xa5, 0xad, 0xc7, 0x11, 0xe2, 0xe3, 0x79, 0xd4, 0xfe,
+ 0xb7, 0x00, 0x65, 0x3d, 0x0a, 0x13, 0x2b, 0xa7, 0xe3, 0xdc, 0xdc, 0x73, 0x48, 0x3d, 0x41, 0xa8,
+ 0xfe, 0xa8, 0x8c, 0x2c, 0x7f, 0xee, 0xfb, 0x71, 0x56, 0xd4, 0x18, 0x13, 0x8c, 0x64, 0x0e, 0x69,
+ 0x1b, 0xb5, 0xcd, 0xa5, 0x73, 0xc8, 0x50, 0x49, 0x21, 0x5e, 0x92, 0x9a, 0xc9, 0x30, 0xb5, 0xfd,
+ 0x88, 0xd4, 0x68, 0x0f, 0x43, 0x3c, 0xf9, 0x26, 0x2c, 0xd1, 0x20, 0xa0, 0x76, 0x7f, 0x20, 0xb5,
+ 0x60, 0xbc, 0x4b, 0x74, 0x3d, 0xa7, 0x11, 0xa3, 0x30, 0x49, 0xa7, 0x4e, 0xd9, 0x5c, 0xdf, 0x3e,
+ 0x12, 0x13, 0xa7, 0x6c, 0x0a, 0x8a, 0x06, 0x4b, 0x06, 0x30, 0x1f, 0x28, 0xe3, 0x32, 0xe5, 0xf8,
+ 0x19, 0xae, 0xc2, 0x27, 0x2c, 0x35, 0x16, 0xa7, 0xbf, 0xd1, 0x08, 0x91, 0xe2, 0x84, 0x5a, 0x2b,
+ 0x26, 0x92, 0x9d, 0x55, 0x9c, 0x5e, 0x78, 0xc9, 0x9b, 0x90, 0xf2, 0x1b, 0x8d, 0x90, 0xda, 0x7f,
+ 0xcf, 0x01, 0xb1, 0x02, 0xea, 0x75, 0x28, 0xef, 0xdc, 0xd9, 0xb4, 0x9e, 0xd7, 0x0b, 0x98, 0x7b,
+ 0x93, 0x2f, 0x60, 0x5e, 0x9b, 0xf6, 0x02, 0xe6, 0xcb, 0x77, 0x46, 0x87, 0x8c, 0x7b, 0x2c, 0x60,
+ 0x22, 0xac, 0x94, 0xff, 0xbf, 0x7c, 0x07, 0xd3, 0x85, 0xe5, 0x21, 0x0d, 0xec, 0xbe, 0x15, 0x70,
+ 0x1a, 0xb0, 0xde, 0x89, 0x31, 0xe2, 0xb7, 0x42, 0x37, 0xbf, 0x9f, 0x44, 0x3e, 0x1a, 0x57, 0x7f,
+ 0xeb, 0x71, 0xcf, 0xe7, 0x82, 0x93, 0x21, 0x13, 0x75, 0x45, 0xae, 0x2e, 0x80, 0xa5, 0xd9, 0x92,
+ 0x9b, 0x00, 0xae, 0x73, 0xcc, 0x74, 0x88, 0xab, 0x4c, 0xbf, 0x14, 0xf7, 0xad, 0x15, 0x61, 0x30,
+ 0x41, 0x55, 0xdb, 0x80, 0xb2, 0x76, 0xd2, 0xe6, 0x00, 0xa3, 0x0a, 0x45, 0x2a, 0x53, 0x34, 0xe5,
+ 0x67, 0x8a, 0xfa, 0x68, 0x5c, 0xe5, 0x6c, 0xa8, 0xe1, 0xb5, 0x1f, 0x95, 0x20, 0x0a, 0x11, 0x88,
+ 0x3d, 0x11, 0x51, 0x9e, 0xff, 0xd1, 0xc6, 0x5d, 0xc3, 0x40, 0xef, 0xe6, 0xe1, 0x57, 0x22, 0xb0,
+ 0x34, 0x17, 0x69, 0x1d, 0x9b, 0x35, 0x6c, 0xdb, 0x1f, 0x99, 0x2b, 0x5e, 0xf9, 0xc9, 0x8b, 0xb4,
+ 0x69, 0x0a, 0x9c, 0xd2, 0x8a, 0xdc, 0x56, 0xcf, 0x63, 0x02, 0x2a, 0x75, 0x6a, 0x02, 0xa7, 0x57,
+ 0x1e, 0xf3, 0x3c, 0x46, 0x13, 0x45, 0x6f, 0x62, 0xf4, 0x27, 0xc6, 0xcd, 0xc9, 0x0e, 0x2c, 0x1c,
+ 0xfb, 0xee, 0x68, 0xc0, 0xc2, 0x7a, 0xe0, 0xda, 0x34, 0x4e, 0xef, 0x2a, 0x92, 0x44, 0x81, 0x4c,
+ 0x37, 0xc1, 0xb0, 0x2d, 0x61, 0xb0, 0xa2, 0xb2, 0x61, 0x27, 0x38, 0x31, 0xf7, 0x89, 0x4c, 0x2e,
+ 0xff, 0xea, 0x34, 0x76, 0xfb, 0x7e, 0xc7, 0x4a, 0x53, 0x9b, 0xb7, 0x1b, 0x69, 0x20, 0x66, 0x79,
+ 0x92, 0x8f, 0x73, 0x50, 0xf6, 0xfc, 0x0e, 0x0b, 0x7d, 0xb3, 0x29, 0x6a, 0xb5, 0x67, 0x0f, 0x1b,
+ 0xeb, 0xf7, 0x12, 0x6c, 0x75, 0x04, 0x13, 0x85, 0x73, 0x49, 0x14, 0xa6, 0xe4, 0x93, 0x03, 0x58,
+ 0x0a, 0x7c, 0xd7, 0xac, 0xd1, 0xb0, 0xd2, 0xb5, 0x3e, 0x6d, 0xcc, 0xed, 0x88, 0x2c, 0xf6, 0xe4,
+ 0x31, 0x4c, 0x60, 0x92, 0x0f, 0xf1, 0x60, 0xd5, 0x19, 0xd0, 0x1e, 0xdb, 0x1f, 0xb9, 0xae, 0xde,
+ 0x90, 0xc2, 0x78, 0x6d, 0xea, 0x3b, 0x28, 0xe9, 0x88, 0x5c, 0xb3, 0x2e, 0x58, 0x97, 0x71, 0xe6,
+ 0xd9, 0x2c, 0x7e, 0xf0, 0xb0, 0x97, 0xe1, 0x84, 0x13, 0xbc, 0xc9, 0xdb, 0x70, 0x65, 0xc8, 0x1d,
+ 0x5f, 0xa9, 0xda, 0xa5, 0x42, 0x07, 0xb5, 0x8b, 0xca, 0x38, 0x5f, 0x32, 0x6c, 0xae, 0xec, 0x67,
+ 0x09, 0x70, 0xb2, 0x8d, 0x0c, 0x6f, 0x43, 0xa0, 0x4a, 0xf6, 0x4d, 0x78, 0x1b, 0xb6, 0xc5, 0x08,
+ 0x4b, 0x76, 0xa1, 0x44, 0xbb, 0x5d, 0xc7, 0x93, 0x94, 0x4b, 0xca, 0x54, 0x5e, 0x9e, 0x36, 0xb4,
+ 0x86, 0xa1, 0xd1, 0x7c, 0xc2, 0x2f, 0x8c, 0xda, 0xae, 0x7d, 0x17, 0xae, 0x4c, 0x4c, 0xdd, 0xb9,
+ 0x02, 0x48, 0x0b, 0x20, 0xbe, 0x7b, 0x47, 0xbe, 0x02, 0x45, 0x11, 0x50, 0x1e, 0x96, 0x0a, 0xa2,
+ 0xf4, 0xcd, 0x92, 0x40, 0xd4, 0x38, 0x19, 0xc5, 0x89, 0xc0, 0x1f, 0x66, 0xa3, 0x38, 0x2b, 0xf0,
+ 0x87, 0xa8, 0x30, 0xb5, 0x4f, 0x0b, 0xb0, 0x10, 0xee, 0x3c, 0x22, 0x91, 0xe6, 0xe4, 0x66, 0xbd,
+ 0x98, 0x62, 0x98, 0x3e, 0x31, 0xdb, 0x49, 0x6f, 0x17, 0xf9, 0x0b, 0xdf, 0x2e, 0x8e, 0x60, 0x7e,
+ 0xa8, 0x9c, 0xb1, 0x71, 0x50, 0x6f, 0xcf, 0x2e, 0x5b, 0xb1, 0xd3, 0x7b, 0xad, 0xfe, 0x8d, 0x46,
+ 0x04, 0x79, 0x00, 0xcb, 0x9c, 0x05, 0xfc, 0x24, 0xb5, 0x37, 0xcd, 0x52, 0x67, 0x52, 0xa7, 0xee,
+ 0x98, 0x64, 0x89, 0x69, 0x09, 0x64, 0x08, 0x8b, 0x3c, 0xac, 0x1a, 0x19, 0x57, 0xd7, 0x7c, 0xfa,
+ 0x21, 0x46, 0x05, 0x28, 0xed, 0xa9, 0xa3, 0x4f, 0x8c, 0x85, 0xd4, 0xfe, 0x2b, 0x07, 0xab, 0xd9,
+ 0x69, 0x20, 0x47, 0x30, 0x27, 0xb8, 0x6d, 0xcc, 0x6a, 0xff, 0xd9, 0xcd, 0xaf, 0x0e, 0x66, 0x74,
+ 0xe1, 0xd0, 0xe2, 0x36, 0x4a, 0x29, 0xd2, 0xec, 0x3b, 0x4c, 0x04, 0x59, 0xb3, 0xdf, 0x66, 0x22,
+ 0x40, 0x85, 0x21, 0xad, 0x64, 0xd0, 0x33, 0x97, 0xba, 0xfb, 0x98, 0x0a, 0x7a, 0x5e, 0xca, 0xca,
+ 0x9b, 0x16, 0xf2, 0xd4, 0x7e, 0x34, 0x07, 0x2f, 0x4e, 0xef, 0x18, 0xf9, 0x0e, 0x5c, 0x8e, 0x6a,
+ 0x17, 0x27, 0x89, 0x17, 0xf5, 0xd1, 0x11, 0xee, 0x76, 0x0a, 0x8b, 0x19, 0x6a, 0x19, 0x65, 0x98,
+ 0xeb, 0xae, 0xe1, 0xb3, 0xfa, 0xc4, 0x59, 0x4a, 0x33, 0xc2, 0x60, 0x82, 0x8a, 0x34, 0x60, 0xc5,
+ 0x7c, 0xb5, 0x93, 0x55, 0x8b, 0xc4, 0x41, 0x69, 0x33, 0x8d, 0xc6, 0x2c, 0xbd, 0xcc, 0x01, 0x64,
+ 0x34, 0x10, 0xbe, 0x6c, 0x4c, 0xe4, 0x00, 0xdb, 0x1a, 0x8c, 0x21, 0x9e, 0x6c, 0x42, 0x59, 0xfe,
+ 0x6c, 0xa7, 0x9f, 0x32, 0xc4, 0x75, 0x9c, 0x04, 0x0e, 0x53, 0x94, 0xf1, 0x1b, 0x0b, 0x9d, 0x05,
+ 0x4c, 0xbe, 0xb1, 0xb8, 0x09, 0x30, 0x12, 0x0c, 0xe9, 0x43, 0xc9, 0xc4, 0x54, 0xa7, 0xa3, 0xc1,
+ 0x1f, 0x44, 0x18, 0x4c, 0x50, 0xd5, 0x7e, 0x91, 0x83, 0xe5, 0xd4, 0x42, 0x24, 0x5d, 0x98, 0x3b,
+ 0xda, 0x0c, 0xb3, 0xec, 0x3b, 0xcf, 0xf0, 0x8a, 0x88, 0xb6, 0xba, 0x3b, 0x9b, 0x02, 0xa5, 0x00,
+ 0xf2, 0x61, 0x94, 0xd0, 0xcf, 0x7c, 0xf9, 0x39, 0x19, 0x24, 0x9a, 0xa0, 0x3d, 0x9d, 0xdb, 0xff,
+ 0xfb, 0x32, 0xac, 0x64, 0x3c, 0xec, 0x19, 0xee, 0xb3, 0x69, 0x63, 0x32, 0x6f, 0xc2, 0xa6, 0x18,
+ 0x53, 0xf8, 0x5a, 0x2c, 0x41, 0x45, 0x7a, 0x5a, 0x7b, 0xda, 0x39, 0xb6, 0x66, 0x1a, 0x52, 0x26,
+ 0xd3, 0xc9, 0xa8, 0xef, 0x87, 0x39, 0x28, 0xd3, 0xc4, 0x23, 0x7b, 0xe3, 0x1b, 0xef, 0xce, 0x92,
+ 0xfe, 0x4c, 0xfc, 0xbf, 0x80, 0xbe, 0x2e, 0x9a, 0x44, 0x60, 0x4a, 0x28, 0xb1, 0xa1, 0xd0, 0x0f,
+ 0x82, 0xf0, 0x31, 0xf7, 0xce, 0x33, 0xb9, 0x98, 0xa5, 0x2f, 0x00, 0x48, 0x00, 0x2a, 0xe6, 0xe4,
+ 0x21, 0x2c, 0xd2, 0x87, 0x42, 0xff, 0xf1, 0x86, 0x79, 0xe5, 0x3d, 0x4b, 0x96, 0x97, 0xf9, 0x0f,
+ 0x0f, 0x73, 0x32, 0x1b, 0x42, 0x31, 0x96, 0x45, 0x38, 0xcc, 0xdb, 0xea, 0x4d, 0x9a, 0x49, 0xa8,
+ 0xdf, 0x7e, 0x46, 0x6f, 0xdb, 0xf4, 0x3e, 0x94, 0x02, 0xa1, 0x91, 0x44, 0x7a, 0x50, 0x3c, 0xa2,
+ 0xdd, 0x23, 0x6a, 0x92, 0xea, 0x19, 0x56, 0x45, 0xf2, 0xe2, 0x91, 0xf6, 0x16, 0x0a, 0x82, 0x9a,
+ 0xbf, 0x9c, 0x3a, 0x8f, 0x06, 0xc2, 0x9c, 0x11, 0xcd, 0x30, 0x75, 0x89, 0xab, 0x14, 0x7a, 0xea,
+ 0x24, 0x00, 0x15, 0x73, 0x39, 0x1a, 0x55, 0x55, 0x31, 0x27, 0x44, 0xbb, 0xb3, 0x56, 0x24, 0x92,
+ 0xa3, 0x51, 0x10, 0xd4, 0xfc, 0xa5, 0x8d, 0xf8, 0xe1, 0x55, 0x01, 0x13, 0x77, 0xce, 0x60, 0x23,
+ 0xd9, 0x5b, 0x07, 0xda, 0x46, 0x22, 0x28, 0xc6, 0xb2, 0xc8, 0xfb, 0x30, 0xe7, 0xfa, 0x3d, 0x73,
+ 0xef, 0x65, 0x86, 0xd3, 0x99, 0xf8, 0x8a, 0x8b, 0x5e, 0xe8, 0x2d, 0xbf, 0x87, 0x92, 0x33, 0xf9,
+ 0xab, 0x1c, 0x5c, 0xa6, 0xa9, 0xbf, 0x05, 0xa8, 0x2c, 0xcf, 0xfa, 0x24, 0x68, 0xea, 0xdf, 0x0c,
+ 0xe8, 0xff, 0x2c, 0x49, 0xa3, 0x30, 0x23, 0x5a, 0xc5, 0x7f, 0xea, 0xb0, 0xbc, 0x72, 0x79, 0xd6,
+ 0x25, 0x91, 0x3a, 0x74, 0x37, 0xf1, 0x9f, 0x02, 0xa1, 0x11, 0x41, 0x7e, 0x92, 0x53, 0x5b, 0x73,
+ 0xf2, 0x55, 0x6e, 0x65, 0x65, 0xe6, 0x57, 0xa6, 0xd3, 0x5f, 0x12, 0xa7, 0x76, 0xfb, 0x24, 0x01,
+ 0x66, 0xbb, 0x40, 0x7e, 0x9c, 0x83, 0x15, 0x9a, 0x7e, 0x72, 0x5f, 0x59, 0x9d, 0x35, 0x52, 0x9b,
+ 0xfe, 0x86, 0xdf, 0x1c, 0xca, 0xa6, 0x71, 0x98, 0x95, 0x5e, 0xb3, 0x61, 0x29, 0xf1, 0xaf, 0x1b,
+ 0x67, 0xb8, 0x16, 0x71, 0x13, 0xe0, 0x98, 0x71, 0xa7, 0x7b, 0xd2, 0x64, 0x3c, 0x30, 0x95, 0xe1,
+ 0x68, 0x6b, 0x7b, 0x37, 0xc2, 0x60, 0x82, 0x6a, 0xab, 0xfe, 0xc9, 0x67, 0xeb, 0x97, 0x3e, 0xfd,
+ 0x6c, 0xfd, 0xd2, 0xcf, 0x3f, 0x5b, 0xbf, 0xf4, 0x83, 0xd3, 0xf5, 0xdc, 0x27, 0xa7, 0xeb, 0xb9,
+ 0x4f, 0x4f, 0xd7, 0x73, 0x3f, 0x3f, 0x5d, 0xcf, 0xfd, 0xc7, 0xe9, 0x7a, 0xee, 0xaf, 0x7f, 0xb1,
+ 0x7e, 0xe9, 0x0f, 0x4a, 0xe1, 0x88, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x7a, 0x7d, 0xb0,
+ 0xe8, 0x4a, 0x00, 0x00,
}
func (m *AWSLambdaTrigger) Marshal() (dAtA []byte, err error) {
@@ -3722,6 +3791,75 @@ func (m *SensorStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
+func (m *SlackSender) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SlackSender) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SlackSender) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ i -= len(m.Icon)
+ copy(dAtA[i:], m.Icon)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Icon)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(m.Username)
+ copy(dAtA[i:], m.Username)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Username)))
+ i--
+ dAtA[i] = 0xa
+ return len(dAtA) - i, nil
+}
+
+func (m *SlackThread) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SlackThread) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SlackThread) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ i--
+ if m.BroadcastMessageToChannel {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ i -= len(m.MessageAggregationKey)
+ copy(dAtA[i:], m.MessageAggregationKey)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageAggregationKey)))
+ i--
+ dAtA[i] = 0xa
+ return len(dAtA) - i, nil
+}
+
func (m *SlackTrigger) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -3742,6 +3880,36 @@ func (m *SlackTrigger) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ {
+ size, err := m.Sender.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x42
+ {
+ size, err := m.Thread.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ i -= len(m.Blocks)
+ copy(dAtA[i:], m.Blocks)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Blocks)))
+ i--
+ dAtA[i] = 0x32
+ i -= len(m.Attachments)
+ copy(dAtA[i:], m.Attachments)
+ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Attachments)))
+ i--
+ dAtA[i] = 0x2a
i -= len(m.Message)
copy(dAtA[i:], m.Message)
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
@@ -5358,6 +5526,31 @@ func (m *SensorStatus) Size() (n int) {
return n
}
+func (m *SlackSender) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Username)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Icon)
+ n += 1 + l + sovGenerated(uint64(l))
+ return n
+}
+
+func (m *SlackThread) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.MessageAggregationKey)
+ n += 1 + l + sovGenerated(uint64(l))
+ n += 2
+ return n
+}
+
func (m *SlackTrigger) Size() (n int) {
if m == nil {
return 0
@@ -5378,6 +5571,14 @@ func (m *SlackTrigger) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
l = len(m.Message)
n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Attachments)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = len(m.Blocks)
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.Thread.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ l = m.Sender.Size()
+ n += 1 + l + sovGenerated(uint64(l))
return n
}
@@ -6252,6 +6453,28 @@ func (this *SensorStatus) String() string {
}, "")
return s
}
+func (this *SlackSender) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&SlackSender{`,
+ `Username:` + fmt.Sprintf("%v", this.Username) + `,`,
+ `Icon:` + fmt.Sprintf("%v", this.Icon) + `,`,
+ `}`,
+ }, "")
+ return s
+}
+func (this *SlackThread) String() string {
+ if this == nil {
+ return "nil"
+ }
+ s := strings.Join([]string{`&SlackThread{`,
+ `MessageAggregationKey:` + fmt.Sprintf("%v", this.MessageAggregationKey) + `,`,
+ `BroadcastMessageToChannel:` + fmt.Sprintf("%v", this.BroadcastMessageToChannel) + `,`,
+ `}`,
+ }, "")
+ return s
+}
func (this *SlackTrigger) String() string {
if this == nil {
return "nil"
@@ -6266,6 +6489,10 @@ func (this *SlackTrigger) String() string {
`SlackToken:` + strings.Replace(fmt.Sprintf("%v", this.SlackToken), "SecretKeySelector", "v1.SecretKeySelector", 1) + `,`,
`Channel:` + fmt.Sprintf("%v", this.Channel) + `,`,
`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
+ `Attachments:` + fmt.Sprintf("%v", this.Attachments) + `,`,
+ `Blocks:` + fmt.Sprintf("%v", this.Blocks) + `,`,
+ `Thread:` + strings.Replace(strings.Replace(this.Thread.String(), "SlackThread", "SlackThread", 1), `&`, ``, 1) + `,`,
+ `Sender:` + strings.Replace(strings.Replace(this.Sender.String(), "SlackSender", "SlackSender", 1), `&`, ``, 1) + `,`,
`}`,
}, "")
return s
@@ -13362,6 +13589,222 @@ func (m *SensorStatus) Unmarshal(dAtA []byte) error {
}
return nil
}
+func (m *SlackSender) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SlackSender: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SlackSender: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Username = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Icon", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Icon = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SlackThread) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SlackThread: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SlackThread: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MessageAggregationKey", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MessageAggregationKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BroadcastMessageToChannel", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.BroadcastMessageToChannel = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipGenerated(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if (skippy < 0) || (iNdEx+skippy) < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
func (m *SlackTrigger) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -13525,6 +13968,136 @@ func (m *SlackTrigger) Unmarshal(dAtA []byte) error {
}
m.Message = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Attachments", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Attachments = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Blocks", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Blocks = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Thread", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.Thread.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if err := m.Sender.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/sensor/v1alpha1/generated.proto b/pkg/apis/sensor/v1alpha1/generated.proto
index 585bc8f920..72e39aff94 100644
--- a/pkg/apis/sensor/v1alpha1/generated.proto
+++ b/pkg/apis/sensor/v1alpha1/generated.proto
@@ -677,6 +677,26 @@ message SensorStatus {
optional github.com.argoproj.argo_events.pkg.apis.common.Status status = 1;
}
+message SlackSender {
+ // Username is the Slack application's username
+ // +optional
+ optional string username = 1;
+
+ // Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png
+ // +optional
+ optional string icon = 2;
+}
+
+message SlackThread {
+ // MessageAggregationKey allows to aggregate the messages to a thread by some key.
+ // +optional
+ optional string messageAggregationKey = 1;
+
+ // BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel
+ // +optional
+ optional bool broadcastMessageToChannel = 2;
+}
+
// SlackTrigger refers to the specification of the slack notification trigger.
message SlackTrigger {
// Parameters is the list of key-value extracted from event's payload that are applied to
@@ -687,13 +707,29 @@ message SlackTrigger {
// SlackToken refers to the Kubernetes secret that holds the slack token required to send messages.
optional k8s.io.api.core.v1.SecretKeySelector slackToken = 2;
- // Channel refers to which Slack channel to send slack message.
+ // Channel refers to which Slack channel to send Slack message.
// +optional
optional string channel = 3;
// Message refers to the message to send to the Slack channel.
// +optional
optional string message = 4;
+
+ // Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .
+ // +optional
+ optional string attachments = 5;
+
+ // Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .
+ // +optional
+ optional string blocks = 6;
+
+ // Thread refers to additional options for sending messages to a Slack thread.
+ // +optional
+ optional SlackThread thread = 7;
+
+ // Sender refers to additional configuration of the Slack application that sends the message.
+ // +optional
+ optional SlackSender sender = 8;
}
// StandardK8STrigger is the standard Kubernetes resource trigger
diff --git a/pkg/apis/sensor/v1alpha1/openapi_generated.go b/pkg/apis/sensor/v1alpha1/openapi_generated.go
index 749f1a0c97..63543072d1 100644
--- a/pkg/apis/sensor/v1alpha1/openapi_generated.go
+++ b/pkg/apis/sensor/v1alpha1/openapi_generated.go
@@ -62,6 +62,8 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorList": schema_pkg_apis_sensor_v1alpha1_SensorList(ref),
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorSpec": schema_pkg_apis_sensor_v1alpha1_SensorSpec(ref),
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorStatus": schema_pkg_apis_sensor_v1alpha1_SensorStatus(ref),
+ "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackSender": schema_pkg_apis_sensor_v1alpha1_SlackSender(ref),
+ "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackThread": schema_pkg_apis_sensor_v1alpha1_SlackThread(ref),
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackTrigger": schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref),
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StandardK8STrigger": schema_pkg_apis_sensor_v1alpha1_StandardK8STrigger(ref),
"github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StatusPolicy": schema_pkg_apis_sensor_v1alpha1_StatusPolicy(ref),
@@ -1894,6 +1896,58 @@ func schema_pkg_apis_sensor_v1alpha1_SensorStatus(ref common.ReferenceCallback)
}
}
+func schema_pkg_apis_sensor_v1alpha1_SlackSender(ref common.ReferenceCallback) common.OpenAPIDefinition {
+ return common.OpenAPIDefinition{
+ Schema: spec.Schema{
+ SchemaProps: spec.SchemaProps{
+ Type: []string{"object"},
+ Properties: map[string]spec.Schema{
+ "username": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Username is the Slack application's username",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
+ "icon": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
+ },
+ },
+ },
+ }
+}
+
+func schema_pkg_apis_sensor_v1alpha1_SlackThread(ref common.ReferenceCallback) common.OpenAPIDefinition {
+ return common.OpenAPIDefinition{
+ Schema: spec.Schema{
+ SchemaProps: spec.SchemaProps{
+ Type: []string{"object"},
+ Properties: map[string]spec.Schema{
+ "messageAggregationKey": {
+ SchemaProps: spec.SchemaProps{
+ Description: "MessageAggregationKey allows to aggregate the messages to a thread by some key.",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
+ "broadcastMessageToChannel": {
+ SchemaProps: spec.SchemaProps{
+ Description: "BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel",
+ Type: []string{"boolean"},
+ Format: "",
+ },
+ },
+ },
+ },
+ },
+ }
+}
+
func schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref common.ReferenceCallback) common.OpenAPIDefinition {
return common.OpenAPIDefinition{
Schema: spec.Schema{
@@ -1923,7 +1977,7 @@ func schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref common.ReferenceCallback)
},
"channel": {
SchemaProps: spec.SchemaProps{
- Description: "Channel refers to which Slack channel to send slack message.",
+ Description: "Channel refers to which Slack channel to send Slack message.",
Type: []string{"string"},
Format: "",
},
@@ -1935,11 +1989,39 @@ func schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref common.ReferenceCallback)
Format: "",
},
},
+ "attachments": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
+ "blocks": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
+ "thread": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Thread refers to additional options for sending messages to a Slack thread.",
+ Default: map[string]interface{}{},
+ Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackThread"),
+ },
+ },
+ "sender": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Sender refers to additional configuration of the Slack application that sends the message.",
+ Default: map[string]interface{}{},
+ Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackSender"),
+ },
+ },
},
},
},
Dependencies: []string{
- "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter", "k8s.io/api/core/v1.SecretKeySelector"},
+ "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackSender", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackThread", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter", "k8s.io/api/core/v1.SecretKeySelector"},
}
}
diff --git a/pkg/apis/sensor/v1alpha1/types.go b/pkg/apis/sensor/v1alpha1/types.go
index 87872c0853..c23238e750 100644
--- a/pkg/apis/sensor/v1alpha1/types.go
+++ b/pkg/apis/sensor/v1alpha1/types.go
@@ -677,12 +677,42 @@ type SlackTrigger struct {
Parameters []TriggerParameter `json:"parameters,omitempty" protobuf:"bytes,1,rep,name=parameters"`
// SlackToken refers to the Kubernetes secret that holds the slack token required to send messages.
SlackToken *corev1.SecretKeySelector `json:"slackToken,omitempty" protobuf:"bytes,2,opt,name=slackToken"`
- // Channel refers to which Slack channel to send slack message.
+ // Channel refers to which Slack channel to send Slack message.
// +optional
Channel string `json:"channel,omitempty" protobuf:"bytes,3,opt,name=channel"`
// Message refers to the message to send to the Slack channel.
// +optional
Message string `json:"message,omitempty" protobuf:"bytes,4,opt,name=message"`
+ // Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .
+ // +optional
+ Attachments string `json:"attachments,omitempty" protobuf:"bytes,5,opt,name=attachments"`
+ // Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .
+ // +optional
+ Blocks string `json:"blocks,omitempty" protobuf:"bytes,6,opt,name=blocks"`
+ // Thread refers to additional options for sending messages to a Slack thread.
+ // +optional
+ Thread SlackThread `json:"thread,omitempty" protobuf:"bytes,7,opt,name=thread"`
+ // Sender refers to additional configuration of the Slack application that sends the message.
+ // +optional
+ Sender SlackSender `json:"sender,omitempty" protobuf:"bytes,8,opt,name=sender"`
+}
+
+type SlackSender struct {
+ // Username is the Slack application's username
+ // +optional
+ Username string `json:"username,omitempty" protobuf:"bytes,1,opt,name=username"`
+ // Icon is the Slack application's icon, e.g. :robot_face: or https://example.com/image.png
+ // +optional
+ Icon string `json:"icon,omitempty" protobuf:"bytes,2,opt,name=icon"`
+}
+
+type SlackThread struct {
+ // MessageAggregationKey allows to aggregate the messages to a thread by some key.
+ // +optional
+ MessageAggregationKey string `json:"messageAggregationKey,omitempty" protobuf:"bytes,1,opt,name=messageAggregationKey"`
+ // BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel
+ // +optional
+ BroadcastMessageToChannel bool `json:"broadcastMessageToChannel,omitempty" protobuf:"bytes,2,opt,name=broadcastMessageToChannel"`
}
// OpenWhiskTrigger refers to the specification of the OpenWhisk trigger.
diff --git a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go
index 16da489eeb..04021f1061 100644
--- a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go
@@ -1000,6 +1000,38 @@ func (in *SensorStatus) DeepCopy() *SensorStatus {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *SlackSender) DeepCopyInto(out *SlackSender) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackSender.
+func (in *SlackSender) DeepCopy() *SlackSender {
+ if in == nil {
+ return nil
+ }
+ out := new(SlackSender)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *SlackThread) DeepCopyInto(out *SlackThread) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackThread.
+func (in *SlackThread) DeepCopy() *SlackThread {
+ if in == nil {
+ return nil
+ }
+ out := new(SlackThread)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SlackTrigger) DeepCopyInto(out *SlackTrigger) {
*out = *in
@@ -1015,6 +1047,8 @@ func (in *SlackTrigger) DeepCopyInto(out *SlackTrigger) {
*out = new(v1.SecretKeySelector)
(*in).DeepCopyInto(*out)
}
+ out.Thread = in.Thread
+ out.Sender = in.Sender
return
}
diff --git a/sensors/triggers/slack/slack.go b/sensors/triggers/slack/slack.go
index adaee5da81..8af532d7c0 100644
--- a/sensors/triggers/slack/slack.go
+++ b/sensors/triggers/slack/slack.go
@@ -21,9 +21,8 @@ import (
"fmt"
"net/http"
"strings"
- "time"
- "github.com/slack-go/slack"
+ notifications "github.com/argoproj/notifications-engine/pkg/services"
"go.uber.org/zap"
"github.com/argoproj/argo-events/common"
@@ -42,15 +41,30 @@ type SlackTrigger struct {
Logger *zap.SugaredLogger
// http client to invoke function.
httpClient *http.Client
+ // slackSvc refers to the Slack notification service.
+ slackSvc notifications.NotificationService
}
// NewSlackTrigger returns a new Slack trigger context
func NewSlackTrigger(sensor *v1alpha1.Sensor, trigger *v1alpha1.Trigger, logger *zap.SugaredLogger, httpClient *http.Client) (*SlackTrigger, error) {
+ slackTrigger := trigger.Template.Slack
+ slackToken, err := common.GetSecretFromVolume(slackTrigger.SlackToken)
+ if err != nil {
+ return nil, fmt.Errorf("failed to retrieve the slack token, %w", err)
+ }
+
+ slackSvc := notifications.NewSlackService(notifications.SlackOptions{
+ Token: slackToken,
+ Username: slackTrigger.Sender.Username,
+ Icon: slackTrigger.Sender.Icon,
+ })
+
return &SlackTrigger{
Sensor: sensor,
Trigger: trigger,
Logger: logger.With(logging.LabelTriggerType, apicommon.SlackTrigger),
httpClient: httpClient,
+ slackSvc: slackSvc,
}, nil
}
@@ -95,85 +109,45 @@ func (t *SlackTrigger) Execute(ctx context.Context, events map[string]*v1alpha1.
return nil, fmt.Errorf("failed to marshal the Slack trigger resource")
}
- slacktrigger := t.Trigger.Template.Slack
+ slackTrigger := t.Trigger.Template.Slack
- channel := slacktrigger.Channel
+ channel := slackTrigger.Channel
if channel == "" {
return nil, fmt.Errorf("no slack channel provided")
}
channel = strings.TrimPrefix(channel, "#")
- message := slacktrigger.Message
- if message == "" {
- return nil, fmt.Errorf("no slack message to post")
+ message := slackTrigger.Message
+ attachments := slackTrigger.Attachments
+ blocks := slackTrigger.Blocks
+ if message == "" && attachments == "" && blocks == "" {
+ return nil, fmt.Errorf("no text to post: At least one of message/attachments/blocks should be provided")
}
- slackToken, err := common.GetSecretFromVolume(slacktrigger.SlackToken)
+ t.Logger.Infow("posting to channel...", zap.Any("channelName", channel))
+
+ notification := notifications.Notification{
+ Message: message,
+ Slack: ¬ifications.SlackNotification{
+ GroupingKey: slackTrigger.Thread.MessageAggregationKey,
+ NotifyBroadcast: slackTrigger.Thread.BroadcastMessageToChannel,
+ Blocks: blocks,
+ Attachments: attachments,
+ },
+ }
+ destination := notifications.Destination{
+ Service: "slack",
+ Recipient: channel,
+ }
+ err := t.slackSvc.Send(notification, destination)
if err != nil {
- return nil, fmt.Errorf("failed to retrieve the slack token, %w", err)
+ t.Logger.Errorw("unable to post to channel", zap.Any("channelName", channel), zap.Error(err))
+ return nil, fmt.Errorf("failed to post to channel %s, %w", channel, err)
}
- api := slack.New(slackToken, slack.OptionDebug(false))
-
- t.Logger.Infow("posting to channel...", zap.Any("channelName", channel))
- for {
- channelID, timestamp, err := api.PostMessage(channel, slack.MsgOptionText(message, false))
- if err != nil {
- if err.Error() == "not_in_channel" {
- isPrivateChannel := false
- params := &slack.GetConversationsParameters{
- Limit: 200,
- Types: []string{"public_channel", "private_channel"},
- ExcludeArchived: true,
- }
-
- for {
- channels, nextCursor, err := api.GetConversations(params)
- if err != nil {
- switch e := err.(type) {
- case *slack.RateLimitedError:
- <-time.After(e.RetryAfter)
- continue
- default:
- t.Logger.Errorw("unable to list channels", zap.Error(err))
- return nil, fmt.Errorf("failed to list channels, %w", err)
- }
- }
- for _, c := range channels {
- if c.Name == channel {
- channelID = c.ID
- isPrivateChannel = c.IsPrivate
- break
- }
- }
- if nextCursor == "" || channelID != "" {
- break
- }
- params.Cursor = nextCursor
- }
- if channelID == "" {
- return nil, fmt.Errorf("failed to get channelID of %s", channel)
- }
- if isPrivateChannel {
- return nil, fmt.Errorf("cannot join private channel %s", channel)
- }
-
- c, _, _, err := api.JoinConversation(channelID)
- if err != nil {
- t.Logger.Errorw("unable to join channel...", zap.Any("channelName", channel), zap.Any("channelID", channelID), zap.Error(err))
- return nil, fmt.Errorf("failed to join channel %s, %w", channel, err)
- }
- t.Logger.Debugw("successfully joined channel", zap.Any("channel", c))
- continue
- } else {
- t.Logger.Errorw("unable to post to channel...", zap.Any("channelName", channel), zap.Error(err))
- return nil, fmt.Errorf("failed to post to channel %s, %w", channel, err)
- }
- }
- t.Logger.Infow("message successfully sent to channelID with timestamp", zap.Any("message", message), zap.Any("channelID", channelID), zap.Any("timestamp", timestamp))
- t.Logger.Info("finished executing SlackTrigger")
- return nil, nil
- }
+ t.Logger.Infow("message successfully sent to channel", zap.Any("message", message), zap.Any("channelName", channel))
+ t.Logger.Info("finished executing SlackTrigger")
+ return nil, nil
}
// No Policies for SlackTrigger