<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>195120</bug_id>
          
          <creation_ts>2019-02-27 14:04:53 -0800</creation_ts>
          <short_desc>[ews-app] Update primary keys for handling multiple Buildbot instances</short_desc>
          <delta_ts>2019-03-01 15:11:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194863</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1510607</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-02-27 14:04:53 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=194863 the instance table to keep tracking of multiple buildbot instance. This is also to handle the scenerio when the Buildbot machine has unexpected data loss event and the machine has to be formatted and setup again. In that case, build_id/builder_id/step_id will reset (start from 1 again). Since ews-app should be able to handle that scenario, these build_id/builder_id/step_id can&apos;t be used as primary keys in step/build tables. Therefore we should have different primary keys which are unique.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510608</commentid>
    <comment_count>1</comment_count>
      <attachid>363130</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-02-27 14:07:02 -0800</bug_when>
    <thetext>Created attachment 363130
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510610</commentid>
    <comment_count>2</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-02-27 14:09:22 -0800</bug_when>
    <thetext>Tested on a local instance.

This will apply to ToT after https://bugs.webkit.org/show_bug.cgi?id=195047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510654</commentid>
    <comment_count>3</comment_count>
      <attachid>363130</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-02-27 15:43:23 -0800</bug_when>
    <thetext>Comment on attachment 363130
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=363130&amp;action=review

&gt; Tools/BuildSlaveSupport/ews-app/ews/models/build.py:38
&gt; +    uid = models.TextField(primary_key=True)

So, build_id&apos;s are unique per instance, but Build uid&apos;s combine build_id with builder_id, right? Why do we still have builder_id in this Model, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510657</commentid>
    <comment_count>4</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-02-27 15:48:13 -0800</bug_when>
    <thetext>&gt; So, build_id&apos;s are unique per instance
Yes
&gt; but Build uid&apos;s combine build_id with builder_id, right? 
I assume you meant combine build_id with buildbot_instance_id. If so, yes. 

&gt; Why do we still have builder_id in this Model, then?
To generate buildbot url&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511050</commentid>
    <comment_count>5</comment_count>
      <attachid>363248</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-02-28 12:18:29 -0800</bug_when>
    <thetext>Created attachment 363248
Proposed patch

Included Buildbot(ews-build) changes to send hostname along-with the events data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511052</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-28 12:20:19 -0800</bug_when>
    <thetext>Attachment 363248 did not pass style-queue:


ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:45:  [BuildbotInstance.get_instance_id] Class &apos;BuildbotInstance&apos; has no &apos;objects&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:46:  [BuildbotInstance.get_instance_id] Class &apos;BuildbotInstance&apos; has no &apos;DoesNotExist&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:48:  [BuildbotInstance.get_instance_id] Instance of &apos;BuildbotInstance&apos; has no &apos;save&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/build.py:65:  [Build.save_build] Instance of &apos;Build&apos; has no &apos;save&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/build.py:94:  [Build.get_existing_build] Class &apos;Build&apos; has no &apos;objects&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/build.py:95:  [Build.get_existing_build] Class &apos;Build&apos; has no &apos;DoesNotExist&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/step.py:63:  [Step.save_step] Instance of &apos;Step&apos; has no &apos;save&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/step.py:83:  [Step.get_existing_step] Class &apos;Step&apos; has no &apos;objects&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/step.py:84:  [Step.get_existing_step] Class &apos;Step&apos; has no &apos;DoesNotExist&apos; member  [pylint/E1101] [5]
Total errors found: 9 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511067</commentid>
    <comment_count>7</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-02-28 12:42:20 -0800</bug_when>
    <thetext>(In reply to Aakash Jain from comment #4)
&gt; &gt; So, build_id&apos;s are unique per instance
&gt; Yes
&gt; &gt; but Build uid&apos;s combine build_id with builder_id, right? 
&gt; I assume you meant combine build_id with buildbot_instance_id. If so, yes. 

Actually, that is the source of my confusion, I was thinking builder_id and buildbot_instance_id were the same thing, they aren&apos;t.

&gt; 
&gt; &gt; Why do we still have builder_id in this Model, then?
&gt; To generate buildbot url&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511113</commentid>
    <comment_count>8</comment_count>
      <attachid>363248</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2019-02-28 14:18:41 -0800</bug_when>
    <thetext>Comment on attachment 363248
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=363248&amp;action=review

Mostly looks good; slightly concerned about combining instance_id and build_or_step_id into another field.

&gt; Tools/BuildSlaveSupport/ews-app/ews/models/build.py:94
&gt; +            return Build.objects.get(uid=uid)

Is it necessary to use a try/except block here? I would expect `Build.objects.get` to return None if the build didn&apos;t exist (without throwing any exception).

&gt; Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:55
&gt; +        return &apos;{}_{}&apos;.format(instance_id, build_or_step_id)

What benefit do we get by combining instance_id with build_or_step_id? I&apos;m concerned we&apos;ll have performance issues caused by trying to look up information by this uid given this makes it not possible to index on the instance_id directly.

Also, what happens if build_id and step_id collide for the same instance? Wouldn&apos;t that result in corruption or data loss?

&gt; Tools/BuildSlaveSupport/ews-app/ews/models/step.py:84
&gt; +        except Step.DoesNotExist:

Ditto to Build comment.

&gt; Tools/BuildSlaveSupport/ews-build/events.py:76
&gt; +    def __init__(self, hostname, type_prefix=&apos;&apos;, name=&apos;Events&apos;):

It&apos;s a bit unclear to me if hostname is the worker, or the instance hostname. Could you rename this to instance_hostname or worker_hostname for clarity?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511480</commentid>
    <comment_count>9</comment_count>
      <attachid>363248</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-03-01 11:24:51 -0800</bug_when>
    <thetext>Comment on attachment 363248
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=363248&amp;action=review

&gt;&gt; Tools/BuildSlaveSupport/ews-app/ews/models/build.py:94
&gt;&gt; +            return Build.objects.get(uid=uid)
&gt; 
&gt; Is it necessary to use a try/except block here? I would expect `Build.objects.get` to return None if the build didn&apos;t exist (without throwing any exception).

Build.objects.get does throw an exception if the object doesn&apos;t exist.

https://docs.djangoproject.com/en/2.1/topics/db/queries/#retrieving-a-single-object-with-get
&quot;If there are no results that match the query, get() will raise a DoesNotExist exception.&quot;

&gt;&gt; Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:55
&gt;&gt; +        return &apos;{}_{}&apos;.format(instance_id, build_or_step_id)
&gt; 
&gt; What benefit do we get by combining instance_id with build_or_step_id? I&apos;m concerned we&apos;ll have performance issues caused by trying to look up information by this uid given this makes it not possible to index on the instance_id directly.
&gt; 
&gt; Also, what happens if build_id and step_id collide for the same instance? Wouldn&apos;t that result in corruption or data loss?

Django doesn&apos;t seems to support composite/multiple-column primary keys: https://code.djangoproject.com/ticket/373

If we get the same uid (same buildbot_instance_id and build_id) for a build, we further check if the patch_id, builder_id, number etc. are same as existing data or not. If not, it would fail the check here and would simply refuse the new data: https://trac.webkit.org/browser/webkit/trunk/Tools/BuildSlaveSupport/ews-app/ews/models/build.py#L70

Further, buildbot should indicate that failure in the UI and mark that build at failure/retry (that buildbot portion is not yet implemented).

&gt;&gt; Tools/BuildSlaveSupport/ews-build/events.py:76
&gt;&gt; +    def __init__(self, hostname, type_prefix=&apos;&apos;, name=&apos;Events&apos;):
&gt; 
&gt; It&apos;s a bit unclear to me if hostname is the worker, or the instance hostname. Could you rename this to instance_hostname or worker_hostname for clarity?

This is the Buildbot master code. I can rename it to instance_hostname, however &apos;instance_hostname&apos; might seem unusual, given that any buildbot instance doesn&apos;t know about any other instance. Maybe &apos;buildbot_hostname&apos; is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511604</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2019-03-01 14:03:28 -0800</bug_when>
    <thetext>(In reply to Aakash Jain from comment #9)
&gt; Comment on attachment 363248 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=363248&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/BuildSlaveSupport/ews-app/ews/models/build.py:94
&gt; &gt;&gt; +            return Build.objects.get(uid=uid)
&gt; &gt; 
&gt; &gt; Is it necessary to use a try/except block here? I would expect `Build.objects.get` to return None if the build didn&apos;t exist (without throwing any exception).
&gt; 
&gt; Build.objects.get does throw an exception if the object doesn&apos;t exist.
&gt; 
&gt; https://docs.djangoproject.com/en/2.1/topics/db/queries/#retrieving-a-single-
&gt; object-with-get
&gt; &quot;If there are no results that match the query, get() will raise a
&gt; DoesNotExist exception.&quot;
&gt; 
Ah, okay. Thank you for explaining. I don&apos;t like that paradigm at all, but guess we&apos;re tied to it since we&apos;re using Django. :)
&gt; &gt;&gt; Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:55
&gt; &gt;&gt; +        return &apos;{}_{}&apos;.format(instance_id, build_or_step_id)
&gt; &gt; 
&gt; &gt; What benefit do we get by combining instance_id with build_or_step_id? I&apos;m concerned we&apos;ll have performance issues caused by trying to look up information by this uid given this makes it not possible to index on the instance_id directly.
&gt; &gt; 
&gt; &gt; Also, what happens if build_id and step_id collide for the same instance? Wouldn&apos;t that result in corruption or data loss?
&gt; 
&gt; Django doesn&apos;t seems to support composite/multiple-column primary keys:
&gt; https://code.djangoproject.com/ticket/373
&gt; 
&gt; If we get the same uid (same buildbot_instance_id and build_id) for a build,
&gt; we further check if the patch_id, builder_id, number etc. are same as
&gt; existing data or not. If not, it would fail the check here and would simply
&gt; refuse the new data:
&gt; https://trac.webkit.org/browser/webkit/trunk/Tools/BuildSlaveSupport/ews-app/
&gt; ews/models/build.py#L70
Sorry, that wasn&apos;t quite my question. What if the second id (sourced from &apos;build_id&apos; or &apos;step_id&apos;) collides since they&apos;re coming from two sources?

I also think it would be better to use a monotonically increasing ID with two separate columns for instanceid and build_or_step_id (pending the other issue is resolved) instead of this combination of two keys, so you can still index on instanceid.
&gt; 
&gt; Further, buildbot should indicate that failure in the UI and mark that build
&gt; at failure/retry (that buildbot portion is not yet implemented).
&gt; 
&gt; &gt;&gt; Tools/BuildSlaveSupport/ews-build/events.py:76
&gt; &gt;&gt; +    def __init__(self, hostname, type_prefix=&apos;&apos;, name=&apos;Events&apos;):
&gt; &gt; 
&gt; &gt; It&apos;s a bit unclear to me if hostname is the worker, or the instance hostname. Could you rename this to instance_hostname or worker_hostname for clarity?
&gt; 
&gt; This is the Buildbot master code. I can rename it to instance_hostname,
&gt; however &apos;instance_hostname&apos; might seem unusual, given that any buildbot
&gt; instance doesn&apos;t know about any other instance. Maybe &apos;buildbot_hostname&apos; is
&gt; better.
Oh, this is Buildbot EWS, not the OpenSource EWS Django-based service? If so, &quot;master_hostname&quot; would be a bit more clear to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511617</commentid>
    <comment_count>11</comment_count>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2019-03-01 14:26:46 -0800</bug_when>
    <thetext>Spoke with Aakash on the phone. Patch looks good; unofficial r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511621</commentid>
    <comment_count>12</comment_count>
      <attachid>363376</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-03-01 14:39:56 -0800</bug_when>
    <thetext>Created attachment 363376
Proposed patch

Renamed hostname to master_hostname.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511623</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-01 14:42:00 -0800</bug_when>
    <thetext>Attachment 363376 did not pass style-queue:


ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:45:  [BuildbotInstance.get_instance_id] Class &apos;BuildbotInstance&apos; has no &apos;objects&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:46:  [BuildbotInstance.get_instance_id] Class &apos;BuildbotInstance&apos; has no &apos;DoesNotExist&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/buildbotinstance.py:48:  [BuildbotInstance.get_instance_id] Instance of &apos;BuildbotInstance&apos; has no &apos;save&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/build.py:65:  [Build.save_build] Instance of &apos;Build&apos; has no &apos;save&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/build.py:94:  [Build.get_existing_build] Class &apos;Build&apos; has no &apos;objects&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/build.py:95:  [Build.get_existing_build] Class &apos;Build&apos; has no &apos;DoesNotExist&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/step.py:63:  [Step.save_step] Instance of &apos;Step&apos; has no &apos;save&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/step.py:83:  [Step.get_existing_step] Class &apos;Step&apos; has no &apos;objects&apos; member  [pylint/E1101] [5]
ERROR: Tools/BuildSlaveSupport/ews-app/ews/models/step.py:84:  [Step.get_existing_step] Class &apos;Step&apos; has no &apos;DoesNotExist&apos; member  [pylint/E1101] [5]
Total errors found: 9 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511636</commentid>
    <comment_count>14</comment_count>
      <attachid>363376</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-01 15:09:37 -0800</bug_when>
    <thetext>Comment on attachment 363376
Proposed patch

Clearing flags on attachment: 363376

Committed r242291: &lt;https://trac.webkit.org/changeset/242291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511637</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-01 15:09:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511638</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-01 15:11:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/48524861&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363130</attachid>
            <date>2019-02-27 14:07:02 -0800</date>
            <delta_ts>2019-02-28 12:18:29 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-ews-app-Update-primary-keys-for-handling-multiple-Bu.patch</filename>
            <type>text/plain</type>
            <size>14363</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">RnJvbSAxNTUzODQ3NTY0MDU1MWVjYzk0MWNiNmVhMjQ2ODc3YWRiNmU2YmJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBYWthc2ggSmFpbiA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgpE
YXRlOiBXZWQsIDI3IEZlYiAyMDE5IDE3OjA2OjI0IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gW2V3
cy1hcHBdIFVwZGF0ZSBwcmltYXJ5IGtleXMgZm9yIGhhbmRsaW5nIG11bHRpcGxlIEJ1aWxkYm90
CiBpbnN0YW5jZXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTEy
MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1h
cHAvZXdzL21vZGVscy9idWlsZC5weToKKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9t
b2RlbHMvYnVpbGRib3RpbnN0YW5jZS5weToKKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3
cy9tb2RlbHMvc3RlcC5weToKKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9y
ZXN1bHRzLnB5OgotLS0KIC4uLi9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGQucHkgICAgICAgICAg
ICAgICB8IDMwICsrKysrKysrLS0tLS0tLQogLi4uL2V3cy1hcHAvZXdzL21vZGVscy9idWlsZGJv
dGluc3RhbmNlLnB5ICAgIHwgMTkgKysrKysrKysrKwogLi4uL2V3cy1hcHAvZXdzL21vZGVscy9z
dGVwLnB5ICAgICAgICAgICAgICAgIHwgMzggKysrKysrKysrKy0tLS0tLS0tLQogLi4uL2V3cy1h
cHAvZXdzL3ZpZXdzL3Jlc3VsdHMucHkgICAgICAgICAgICAgIHwgIDggKystLQogVG9vbHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysrKysrCiA1IGZpbGVz
IGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weSBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weQppbmRleCA1
NzE4YjU1Yzc3Mi4uMGEzMTBlMTI4ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weQorKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGQucHkKQEAgLTI2LDYgKzI2LDcgQEAgaW1wb3J0
IGxvZ2dpbmcKIAogZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1vZGVscwogZnJvbSBld3MuY29uZmln
IGltcG9ydCBFUlJfVU5FWFBFQ1RFRCwgU1VDQ0VTUworZnJvbSBld3MubW9kZWxzLmJ1aWxkYm90
aW5zdGFuY2UgaW1wb3J0IEJ1aWxkYm90SW5zdGFuY2UKIGZyb20gZXdzLm1vZGVscy5wYXRjaCBp
bXBvcnQgUGF0Y2gKIGltcG9ydCBld3MuY29tbW9uLnV0aWwgYXMgdXRpbAogCkBAIC0zNCw3ICsz
NSw3IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogY2xhc3MgQnVpbGQo
bW9kZWxzLk1vZGVsKToKICAgICBwYXRjaCA9IG1vZGVscy5Gb3JlaWduS2V5KFBhdGNoLCBvbl9k
ZWxldGU9bW9kZWxzLkNBU0NBREUpCi0gICAgYnVpbGRfaWQgPSBtb2RlbHMuSW50ZWdlckZpZWxk
KHByaW1hcnlfa2V5PVRydWUpCisgICAgdWlkID0gbW9kZWxzLlRleHRGaWVsZChwcmltYXJ5X2tl
eT1UcnVlKQogICAgIGJ1aWxkZXJfaWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKICAgICBidWls
ZGVyX25hbWUgPSBtb2RlbHMuVGV4dEZpZWxkKCkKICAgICBidWlsZGVyX2Rpc3BsYXlfbmFtZSA9
IG1vZGVscy5UZXh0RmllbGQoKQpAQCAtNDcsMzAgKzQ4LDMxIEBAIGNsYXNzIEJ1aWxkKG1vZGVs
cy5Nb2RlbCk6CiAgICAgbW9kaWZpZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1U
cnVlKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZi5i
dWlsZF9pZCkKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnVpZCkKIAogICAgIEBjbGFzc21ldGhv
ZAotICAgIGRlZiBzYXZlX2J1aWxkKGNscywgcGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVyX2lk
LCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3Rh
dGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdD1Ob25lKToKKyAgICBkZWYgc2F2ZV9i
dWlsZChjbHMsIHBhdGNoX2lkLCBob3N0bmFtZSwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIGJ1aWxk
ZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJp
bmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgogICAgICAgICBpZiBub3QgQnVpbGQu
aXNfdmFsaWRfcmVzdWx0KHBhdGNoX2lkLCBidWlsZF9pZCwgYnVpbGRlcl9pZCwgbnVtYmVyLCBy
ZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpOgogICAgICAgICAg
ICAgcmV0dXJuIEVSUl9VTkVYUEVDVEVECiAKLSAgICAgICAgYnVpbGQgPSBCdWlsZC5nZXRfZXhp
c3RpbmdfYnVpbGQoYnVpbGRfaWQpCisgICAgICAgIHVpZCA9IEJ1aWxkYm90SW5zdGFuY2UuZ2V0
X3VpZChob3N0bmFtZSwgYnVpbGRfaWQpCisgICAgICAgIGJ1aWxkID0gQnVpbGQuZ2V0X2V4aXN0
aW5nX2J1aWxkKHVpZCkKICAgICAgICAgaWYgYnVpbGQ6CiAgICAgICAgICAgICAjIElmIHRoZSBi
dWlsZCBkYXRhIGlzIGFscmVhZHkgcHJlc2VudCBpbiBkYXRhYmFzZSwgdXBkYXRlIGl0LCBlLmcu
OiBidWlsZCBjb21wbGV0ZSBldmVudC4KLSAgICAgICAgICAgIHJldHVybiBCdWlsZC51cGRhdGVf
YnVpbGQoYnVpbGQsIHBhdGNoX2lkLCBidWlsZF9pZCwgYnVpbGRlcl9pZCwgYnVpbGRlcl9uYW1l
LCBidWlsZGVyX2Rpc3BsYXlfbmFtZSwgbnVtYmVyLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3Rh
cnRlZF9hdCwgY29tcGxldGVfYXQpCisgICAgICAgICAgICByZXR1cm4gQnVpbGQudXBkYXRlX2J1
aWxkKGJ1aWxkLCBwYXRjaF9pZCwgdWlkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxk
ZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0
LCBjb21wbGV0ZV9hdCkKIAogICAgICAgICAjIFNhdmUgdGhlIG5ldyBidWlsZCBkYXRhLCBlLmcu
OiBidWlsZCBzdGFydCBldmVudC4KLSAgICAgICAgQnVpbGQocGF0Y2hfaWQsIGJ1aWxkX2lkLCBi
dWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJl
c3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCkuc2F2ZSgpCi0gICAg
ICAgIF9sb2cuaW5mbygnU2F2ZWQgYnVpbGQge30gaW4gZGF0YWJhc2UgZm9yIHBhdGNoX2lkOiB7
fScuZm9ybWF0KGJ1aWxkX2lkLCBwYXRjaF9pZCkpCisgICAgICAgIEJ1aWxkKHBhdGNoX2lkLCB1
aWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJl
ciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KS5zYXZlKCkK
KyAgICAgICAgX2xvZy5pbmZvKCdTYXZlZCBidWlsZCB7fSBpbiBkYXRhYmFzZSBmb3IgcGF0Y2hf
aWQ6IHt9Jy5mb3JtYXQodWlkLCBwYXRjaF9pZCkpCiAgICAgICAgIHJldHVybiBTVUNDRVNTCiAK
ICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdXBkYXRlX2J1aWxkKGNscywgYnVpbGQsIHBhdGNo
X2lkLCBidWlsZF9pZCwgYnVpbGRlcl9pZCwgYnVpbGRlcl9uYW1lLCBidWlsZGVyX2Rpc3BsYXlf
bmFtZSwgbnVtYmVyLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVf
YXQpOgorICAgIGRlZiB1cGRhdGVfYnVpbGQoY2xzLCBidWlsZCwgcGF0Y2hfaWQsIHVpZCwgYnVp
bGRlcl9pZCwgYnVpbGRlcl9uYW1lLCBidWlsZGVyX2Rpc3BsYXlfbmFtZSwgbnVtYmVyLCByZXN1
bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpOgogICAgICAgICBpZiBi
dWlsZC5wYXRjaF9pZCAhPSBwYXRjaF9pZDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3BhdGNo
X2lkIHt9IGRvZXMgbm90IG1hdGNoIHdpdGggcGF0Y2hfaWQge30uIElnbm9yaW5nIG5ldyBkYXRh
LicuZm9ybWF0KGJ1aWxkLnBhdGNoX2lkLCBwYXRjaF9pZCkpCiAgICAgICAgICAgICByZXR1cm4g
RVJSX1VORVhQRUNURUQKLSAgICAgICAgaWYgYnVpbGQuYnVpbGRfaWQgIT0gYnVpbGRfaWQ6Ci0g
ICAgICAgICAgICBfbG9nLmVycm9yKCdidWlsZF9pZCB7fSBkb2VzIG5vdCBtYXRjaCB3aXRoIGJ1
aWxkX2lkIHt9LiBJZ25vcmluZyBuZXcgZGF0YS4nLmZvcm1hdChidWlsZC5idWlsZF9pZCwgYnVp
bGRfaWQpKQorICAgICAgICBpZiBidWlsZC51aWQgIT0gdWlkOgorICAgICAgICAgICAgX2xvZy5l
cnJvcigndWlkIHt9IGRvZXMgbm90IG1hdGNoIHdpdGggdWlkIHt9LiBJZ25vcmluZyBuZXcgZGF0
YS4nLmZvcm1hdChidWlsZC51aWQsIHVpZCkpCiAgICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQ
RUNURUQKICAgICAgICAgaWYgYnVpbGQuYnVpbGRlcl9pZCAhPSBidWlsZGVyX2lkOgogICAgICAg
ICAgICAgX2xvZy5lcnJvcignYnVpbGRlcl9pZCB7fSBkb2VzIG5vdCBtYXRjaCB3aXRoIGJ1aWxk
ZXJfaWQge30uIElnbm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxkLmJ1aWxkZXJfaWQsIGJ1
aWxkZXJfaWQpKQpAQCAtODMsMTQgKzg1LDE0IEBAIGNsYXNzIEJ1aWxkKG1vZGVscy5Nb2RlbCk6
CiAgICAgICAgIGJ1aWxkLnN0YXJ0ZWRfYXQgPSBzdGFydGVkX2F0CiAgICAgICAgIGJ1aWxkLmNv
bXBsZXRlX2F0ID0gY29tcGxldGVfYXQKICAgICAgICAgYnVpbGQuc2F2ZSh1cGRhdGVfZmllbGRz
PVsncmVzdWx0JywgJ3N0YXRlX3N0cmluZycsICdzdGFydGVkX2F0JywgJ2NvbXBsZXRlX2F0Jywg
J21vZGlmaWVkJ10pCi0gICAgICAgIF9sb2cuaW5mbygnVXBkYXRlZCBidWlsZCB7fSBpbiBkYXRh
YmFzZSBmb3IgcGF0Y2hfaWQ6IHt9Jy5mb3JtYXQoYnVpbGRfaWQsIHBhdGNoX2lkKSkKKyAgICAg
ICAgX2xvZy5pbmZvKCdVcGRhdGVkIGJ1aWxkIHt9IGluIGRhdGFiYXNlIGZvciBwYXRjaF9pZDog
e30nLmZvcm1hdCh1aWQsIHBhdGNoX2lkKSkKICAgICAgICAgcmV0dXJuIFNVQ0NFU1MKIAogICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfZXhpc3RpbmdfYnVpbGQoY2xzLCBidWlsZF9pZCk6
CisgICAgZGVmIGdldF9leGlzdGluZ19idWlsZChjbHMsIHVpZCk6CiAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHJldHVybiBCdWlsZC5vYmplY3RzLmdldChidWlsZF9pZD1idWlsZF9pZCkKLSAg
ICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcmV0dXJuIEJ1aWxkLm9iamVjdHMuZ2V0KHVpZD11
aWQpCisgICAgICAgIGV4Y2VwdCBCdWlsZC5Eb2VzTm90RXhpc3Q6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGRib3RpbnN0YW5jZS5weSBiL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZGJvdGluc3RhbmNlLnB5Cmlu
ZGV4IDYwM2I1YjA1YWNjLi5iNzZiZTRhODgwYSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90aW5zdGFuY2UucHkKKysrIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90aW5zdGFuY2Uu
cHkKQEAgLTIyLDggKzIyLDEyIEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9s
aXRlcmFscwogCitpbXBvcnQgbG9nZ2luZworCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxz
CiAKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKwogCiBjbGFzcyBCdWlsZGJv
dEluc3RhbmNlKG1vZGVscy5Nb2RlbCk6CiAgICAgaW5zdGFuY2VfaWQgPSBtb2RlbHMuQXV0b0Zp
ZWxkKHByaW1hcnlfa2V5PVRydWUpCkBAIC0zNCwzICszOCwxOCBAQCBjbGFzcyBCdWlsZGJvdElu
c3RhbmNlKG1vZGVscy5Nb2RlbCk6CiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAg
cmV0dXJuICd7fV97fScuZm9ybWF0KHNlbGYuaW5zdGFuY2VfaWQsIHNlbGYuaG9zdG5hbWUpCisK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X2luc3RhbmNlX2lkKGNscywgaG9zdG5hbWUp
OgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gQnVpbGRib3RJbnN0YW5jZS5vYmpl
Y3RzLmdldChob3N0bmFtZT1ob3N0bmFtZSwgYWN0aXZlPVRydWUpLmluc3RhbmNlX2lkCisgICAg
ICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGluc3RhbmNlID0gQnVpbGRib3RJbnN0YW5jZShob3N0
bmFtZT1ob3N0bmFtZSkKKyAgICAgICAgICAgIGluc3RhbmNlLnNhdmUoKQorICAgICAgICAgICAg
X2xvZy5pbmZvKCdjcmVhdGVkIG5ldyBidWlsZGJvdCBpbnN0YW5jZSBpZCB7fSBmb3IgaG9zdG5h
bWU6IHt9Jy5mb3JtYXQoaW5zdGFuY2UuaW5zdGFuY2VfaWQsIGhvc3RuYW1lKSkKKyAgICAgICAg
ICAgIHJldHVybiBpbnN0YW5jZS5pbnN0YW5jZV9pZAorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGdldF91aWQoY2xzLCBob3N0bmFtZSwgYnVpbGRfb3Jfc3RlcF9pZCk6CisgICAgICAgIGlu
c3RhbmNlX2lkID0gQnVpbGRib3RJbnN0YW5jZS5nZXRfaW5zdGFuY2VfaWQoaG9zdG5hbWUpCisg
ICAgICAgIHJldHVybiAne31fe30nLmZvcm1hdChpbnN0YW5jZV9pZCwgYnVpbGRfb3Jfc3RlcF9p
ZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVs
cy9zdGVwLnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL3N0
ZXAucHkKaW5kZXggMDgxMmZlZThlZjYuLjU4Zjc5MTExZmNlIDEwMDY0NAotLS0gYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weQorKysgYi9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weQpAQCAtMjYsNiArMjYs
NyBAQCBpbXBvcnQgbG9nZ2luZwogCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCiBmcm9t
IGV3cy5jb25maWcgaW1wb3J0IEVSUl9VTkVYUEVDVEVELCBTVUNDRVNTCitmcm9tIGV3cy5tb2Rl
bHMuYnVpbGRib3RpbnN0YW5jZSBpbXBvcnQgQnVpbGRib3RJbnN0YW5jZQogZnJvbSBld3MubW9k
ZWxzLmJ1aWxkIGltcG9ydCBCdWlsZAogaW1wb3J0IGV3cy5jb21tb24udXRpbCBhcyB1dGlsCiAK
QEAgLTMzLDggKzM0LDggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAK
IGNsYXNzIFN0ZXAobW9kZWxzLk1vZGVsKToKLSAgICBzdGVwX2lkID0gbW9kZWxzLkludGVnZXJG
aWVsZChwcmltYXJ5X2tleT1UcnVlKQotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVp
bGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICB1aWQgPSBtb2RlbHMuVGV4dEZpZWxk
KHByaW1hcnlfa2V5PVRydWUpCisgICAgYnVpbGRfdWlkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVp
bGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgZGJfY29sdW1uPSdidWlsZF91aWQnKQogICAg
IHJlc3VsdCA9IG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKQogICAg
IHN0YXRlX3N0cmluZyA9IG1vZGVscy5UZXh0RmllbGQoKQogICAgIHN0YXJ0ZWRfYXQgPSBtb2Rl
bHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSwgYmxhbms9VHJ1ZSkKQEAgLTQzLDQ0ICs0NCw0NyBA
QCBjbGFzcyBTdGVwKG1vZGVscy5Nb2RlbCk6CiAgICAgbW9kaWZpZWQgPSBtb2RlbHMuRGF0ZVRp
bWVGaWVsZChhdXRvX25vdz1UcnVlKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAg
IHJldHVybiBzdHIoc2VsZi5zdGVwX2lkKQorICAgICAgICByZXR1cm4gc3RyKHNlbGYudWlkKQog
CiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNhdmVfc3RlcChjbHMsIHN0ZXBfaWQsIGJ1aWxk
X2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQ9Tm9uZSk6
CisgICAgZGVmIHNhdmVfc3RlcChjbHMsIGhvc3RuYW1lLCBzdGVwX2lkLCBidWlsZF9pZCwgcmVz
dWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgogICAgICAg
ICBpZiBub3QgU3RlcC5pc192YWxpZF9yZXN1bHQoc3RlcF9pZCwgYnVpbGRfaWQsIHJlc3VsdCwg
c3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCk6CiAgICAgICAgICAgICByZXR1
cm4gRVJSX1VORVhQRUNURUQKIAotICAgICAgICBzdGVwID0gU3RlcC5nZXRfZXhpc3Rpbmdfc3Rl
cChzdGVwX2lkKQorICAgICAgICBzdGVwX3VpZCA9IEJ1aWxkYm90SW5zdGFuY2UuZ2V0X3VpZCho
b3N0bmFtZSwgc3RlcF9pZCkKKyAgICAgICAgYnVpbGRfdWlkID0gQnVpbGRib3RJbnN0YW5jZS5n
ZXRfdWlkKGhvc3RuYW1lLCBidWlsZF9pZCkKKworICAgICAgICBzdGVwID0gU3RlcC5nZXRfZXhp
c3Rpbmdfc3RlcChzdGVwX3VpZCkKICAgICAgICAgaWYgc3RlcDoKICAgICAgICAgICAgICMgSWYg
dGhlIHN0ZXAgZGF0YSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gZGF0YWJhc2UsIHVwZGF0ZSBpdCwg
ZS5nLjogc3RlcCBjb21wbGV0ZSBldmVudC4KLSAgICAgICAgICAgIHJldHVybiBTdGVwLnVwZGF0
ZV9zdGVwKHN0ZXAsIHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3Rh
cnRlZF9hdCwgY29tcGxldGVfYXQpCisgICAgICAgICAgICByZXR1cm4gU3RlcC51cGRhdGVfc3Rl
cChzdGVwLCBzdGVwX3VpZCwgYnVpbGRfdWlkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRl
ZF9hdCwgY29tcGxldGVfYXQpCiAKICAgICAgICAgIyBTYXZlIHRoZSBuZXcgc3RlcCBkYXRhLCBl
LmcuOiBzdGVwIHN0YXJ0IGV2ZW50LgotICAgICAgICBTdGVwKHN0ZXBfaWQsIGJ1aWxkX2lkLCBy
ZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpLnNhdmUoKQotICAg
ICAgICBfbG9nLmRlYnVnKCdTYXZlZCBzdGVwIHt9IGluIGRhdGFiYXNlIGZvciBidWlsZDoge30n
LmZvcm1hdChzdGVwX2lkLCBidWlsZF9pZCkpCisgICAgICAgIFN0ZXAoc3RlcF91aWQsIGJ1aWxk
X3VpZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KS5zYXZl
KCkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU2F2ZWQgc3RlcCB7fSBpbiBkYXRhYmFzZSBmb3IgYnVp
bGQ6IHt9Jy5mb3JtYXQoc3RlcF91aWQsIGJ1aWxkX3VpZCkpCiAgICAgICAgIHJldHVybiBTVUND
RVNTCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdXBkYXRlX3N0ZXAoY2xzLCBzdGVwLCBz
dGVwX2lkLCBidWlsZF9pZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBs
ZXRlX2F0KToKLSAgICAgICAgaWYgc3RlcC5zdGVwX2lkICE9IHN0ZXBfaWQ6Ci0gICAgICAgICAg
ICBfbG9nLmVycm9yKCdzdGVwX2lkIHt9IGRvZXMgbm90IG1hdGNoIHdpdGggc3RlcF9pZCB7fS4g
SWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC5zdGVwX2lkLCBzdGVwX2lkKSkKKyAgICBk
ZWYgdXBkYXRlX3N0ZXAoY2xzLCBzdGVwLCBzdGVwX3VpZCwgYnVpbGRfdWlkLCByZXN1bHQsIHN0
YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpOgorICAgICAgICBpZiBzdGVwLnVp
ZCAhPSBzdGVwX3VpZDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJ3N0ZXBfdWlkIHt9IGRvZXMg
bm90IG1hdGNoIHdpdGggc3RlcF91aWQge30uIElnbm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KHN0
ZXAudWlkLCBzdGVwX3VpZCkpCiAgICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQRUNURUQKLSAg
ICAgICAgaWYgc3RlcC5idWlsZF9pZCAhPSBidWlsZF9pZDoKLSAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ2J1aWxkX2lkIHt9IGRvZXMgbm90IG1hdGNoIHdpdGggYnVpbGRfaWQge30uIElnbm9yaW5n
IG5ldyBkYXRhLicuZm9ybWF0KHN0ZXAuYnVpbGRfaWQsIGJ1aWxkX2lkKSkKKyAgICAgICAgaWYg
c3RlcC5idWlsZF91aWQudWlkICE9IGJ1aWxkX3VpZDoKKyAgICAgICAgICAgIF9sb2cuZXJyb3Io
J2J1aWxkX3VpZCB7fXt9IGRvZXMgbm90IG1hdGNoIHdpdGggYnVpbGRfdWlkIHt9e30uIElnbm9y
aW5nIG5ldyBkYXRhLicuZm9ybWF0KHN0ZXAuYnVpbGRfdWlkLnVpZCwgdHlwZShzdGVwLmJ1aWxk
X3VpZC51aWQpLCBidWlsZF91aWQsIHR5cGUoYnVpbGRfdWlkKSkpCiAgICAgICAgICAgICByZXR1
cm4gRVJSX1VORVhQRUNURUQKICAgICAgICAgc3RlcC5yZXN1bHQgPSByZXN1bHQKICAgICAgICAg
c3RlcC5zdGF0ZV9zdHJpbmcgPSBzdGF0ZV9zdHJpbmcKICAgICAgICAgc3RlcC5zdGFydGVkX2F0
ID0gc3RhcnRlZF9hdAogICAgICAgICBzdGVwLmNvbXBsZXRlX2F0ID0gY29tcGxldGVfYXQKICAg
ICAgICAgc3RlcC5zYXZlKHVwZGF0ZV9maWVsZHM9WydyZXN1bHQnLCAnc3RhdGVfc3RyaW5nJywg
J3N0YXJ0ZWRfYXQnLCAnY29tcGxldGVfYXQnLCAnbW9kaWZpZWQnXSkKLSAgICAgICAgX2xvZy5p
bmZvKCdVcGRhdGVkIHN0ZXAge30gaW4gZGF0YWJhc2UgZm9yIGJ1aWxkOiB7fScuZm9ybWF0KHN0
ZXBfaWQsIGJ1aWxkX2lkKSkKKyAgICAgICAgX2xvZy5pbmZvKCdVcGRhdGVkIHN0ZXAge30gaW4g
ZGF0YWJhc2UgZm9yIGJ1aWxkOiB7fScuZm9ybWF0KHN0ZXBfdWlkLCBidWlsZF91aWQpKQogICAg
ICAgICByZXR1cm4gU1VDQ0VTUwogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlz
dGluZ19zdGVwKGNscywgc3RlcF9pZCk6CisgICAgZGVmIGdldF9leGlzdGluZ19zdGVwKGNscywg
dWlkKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0ZXAub2JqZWN0cy5nZXQo
c3RlcF9pZD1zdGVwX2lkKQotICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gU3Rl
cC5vYmplY3RzLmdldCh1aWQ9dWlkKQorICAgICAgICBleGNlcHQgU3RlcC5Eb2VzTm90RXhpc3Q6
CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQg
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5IGIv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3MvcmVzdWx0cy5weQppbmRl
eCA0M2E2MjNlODljYy4uYjhhNmYzMjc1Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL3Jlc3VsdHMucHkKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3MvcmVzdWx0cy5weQpAQCAtNjAsNyArNjAsNyBAQCBj
bGFzcyBSZXN1bHRzKFZpZXcpOgogICAgICAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgiSW52
YWxpZCBwYXRjaCBpZDoge30uIi5mb3JtYXQocGF0Y2hfaWQpKQogCiAgICAgICAgIF9sb2cuaW5m
bygnUmVjZWl2ZWQgZGF0YToge30nLmZvcm1hdChkYXRhKSkKLSAgICAgICAgQnVpbGQuc2F2ZV9i
dWlsZChwYXRjaF9pZD1pbnQocGF0Y2hfaWQpLCBidWlsZF9pZD1kYXRhWydidWlsZF9pZCddLCBi
dWlsZGVyX2lkPWRhdGFbJ2J1aWxkZXJfaWQnXSwgYnVpbGRlcl9uYW1lPWRhdGFbJ2J1aWxkZXJf
bmFtZSddLCAKKyAgICAgICAgQnVpbGQuc2F2ZV9idWlsZChwYXRjaF9pZD1pbnQocGF0Y2hfaWQp
LCBob3N0bmFtZT1kYXRhWydob3N0bmFtZSddLCBidWlsZF9pZD1kYXRhWydidWlsZF9pZCddLCBi
dWlsZGVyX2lkPWRhdGFbJ2J1aWxkZXJfaWQnXSwgYnVpbGRlcl9uYW1lPWRhdGFbJ2J1aWxkZXJf
bmFtZSddLCAKICAgICAgICAgICAgICAgICAgICBidWlsZGVyX2Rpc3BsYXlfbmFtZT1kYXRhWydi
dWlsZGVyX2Rpc3BsYXlfbmFtZSddLCBudW1iZXI9ZGF0YVsnbnVtYmVyJ10sIHJlc3VsdD1kYXRh
WydyZXN1bHQnXSwKICAgICAgICAgICAgICAgICAgICBzdGF0ZV9zdHJpbmc9ZGF0YVsnc3RhdGVf
c3RyaW5nJ10sIHN0YXJ0ZWRfYXQ9ZGF0YVsnc3RhcnRlZF9hdCddLCBjb21wbGV0ZV9hdD1kYXRh
Wydjb21wbGV0ZV9hdCddKQogICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJTYXZlZCBkYXRh
IGZvciBwYXRjaDoge30uXG4iLmZvcm1hdChwYXRjaF9pZCkpCkBAIC02OSw3ICs2OSw3IEBAIGNs
YXNzIFJlc3VsdHMoVmlldyk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3ZhbGlkX3Jlc3VsdChk
YXRhKToKICAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoIkluY29tcGxldGUgZGF0YS4i
KQogCi0gICAgICAgIFN0ZXAuc2F2ZV9zdGVwKHN0ZXBfaWQ9ZGF0YVsnc3RlcF9pZCddLCBidWls
ZF9pZD1kYXRhWydidWlsZF9pZCddLCByZXN1bHQ9ZGF0YVsncmVzdWx0J10sCisgICAgICAgIFN0
ZXAuc2F2ZV9zdGVwKGhvc3RuYW1lPWRhdGFbJ2hvc3RuYW1lJ10sIHN0ZXBfaWQ9ZGF0YVsnc3Rl
cF9pZCddLCBidWlsZF9pZD1kYXRhWydidWlsZF9pZCddLCByZXN1bHQ9ZGF0YVsncmVzdWx0J10s
CiAgICAgICAgICAgICAgICAgICAgc3RhdGVfc3RyaW5nPWRhdGFbJ3N0YXRlX3N0cmluZyddLCBz
dGFydGVkX2F0PWRhdGFbJ3N0YXJ0ZWRfYXQnXSwgY29tcGxldGVfYXQ9ZGF0YVsnY29tcGxldGVf
YXQnXSkKICAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgiU2F2ZWQgZGF0YSBmb3Igc3RlcDog
e30uXG4iLmZvcm1hdChkYXRhWydzdGVwX2lkJ10pKQogCkBAIC03OCw5ICs3OCw5IEBAIGNsYXNz
IFJlc3VsdHMoVmlldyk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJJbnZhbGlkIGRhdGEgdHlw
ZToge30iLmZvcm1hdChkYXRhWyd0eXBlJ10pKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAK
LSAgICAgICAgcmVxdWlyZWRfa2V5cyA9IHt1J2V3cy1idWlsZCc6IFsncGF0Y2hfaWQnLCAnYnVp
bGRfaWQnLCAnYnVpbGRlcl9pZCcsICdidWlsZGVyX25hbWUnLCAnYnVpbGRlcl9kaXNwbGF5X25h
bWUnLCAnbnVtYmVyJywKKyAgICAgICAgcmVxdWlyZWRfa2V5cyA9IHt1J2V3cy1idWlsZCc6IFsn
aG9zdG5hbWUnLCAncGF0Y2hfaWQnLCAnYnVpbGRfaWQnLCAnYnVpbGRlcl9pZCcsICdidWlsZGVy
X25hbWUnLCAnYnVpbGRlcl9kaXNwbGF5X25hbWUnLCAnbnVtYmVyJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0JywgJ3N0YXRlX3N0cmluZycsICdz
dGFydGVkX2F0JywgJ2NvbXBsZXRlX2F0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdSdl
d3Mtc3RlcCc6IFsnc3RlcF9pZCcsICdidWlsZF9pZCcsICdyZXN1bHQnLCAnc3RhdGVfc3RyaW5n
JywgJ3N0YXJ0ZWRfYXQnLCAnY29tcGxldGVfYXQnXX0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICB1J2V3cy1zdGVwJzogWydob3N0bmFtZScsICdzdGVwX2lkJywgJ2J1aWxkX2lkJywgJ3Jlc3Vs
dCcsICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9hdCddfQogCiAgICAg
ICAgIGZvciBrZXkgaW4gcmVxdWlyZWRfa2V5cy5nZXQoZGF0YS5nZXQoJ3R5cGUnKSk6CiAgICAg
ICAgICAgICBpZiBrZXkgbm90IGluIGRhdGE6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTNiYWUxOTM3YzEuLjY3NTFmMTRmYTYxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTktMDItMjcgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtld3MtYXBwXSBVcGRhdGUgcHJpbWFyeSBrZXlzIGZvciBoYW5kbGluZyBtdWx0aXBs
ZSBCdWlsZGJvdCBpbnN0YW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxk
LnB5OgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWls
ZGJvdGluc3RhbmNlLnB5OgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdz
L21vZGVscy9zdGVwLnB5OgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdz
L3ZpZXdzL3Jlc3VsdHMucHk6CisKIDIwMTktMDItMjYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEFkZCBBUEkgZm9yIHdlYnZpZXcgYmFj
a2dyb3VuZCBjb2xvciBjb25maWd1cmF0aW9uCi0tIAoyLjE3LjIgKEFwcGxlIEdpdC0xMTMpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363248</attachid>
            <date>2019-02-28 12:18:29 -0800</date>
            <delta_ts>2019-03-01 14:39:56 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-ews-app-Update-primary-keys-for-handling-multiple-Bu_v3.patch</filename>
            <type>text/plain</type>
            <size>18232</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">RnJvbSA1YTc5NWI3OGMwZmQ1ODMxMTVkYzlhYmVjMjQ5NzBhNzQ3ODliMDlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBYWthc2ggSmFpbiA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI4IEZlYiAyMDE5IDE0OjMxOjQ2IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gW2V3
cy1hcHBdIFVwZGF0ZSBwcmltYXJ5IGtleXMgZm9yIGhhbmRsaW5nIG11bHRpcGxlIEJ1aWxkYm90
CiBpbnN0YW5jZXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTEy
MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpVc2UgYSBuZXcgcHJpbWFyeSBrZXkgdWlk
IGZvciBidWlsZCBhbmQgc3RlcCB0YWJsZXMuIFByZXZpb3VzIHByaW1hcnkga2V5cyBidWlsZF9p
ZCBhbmQgc3RlcF9pZAp3ZXJlIG5vdCBlbm91Z2ggdG8gaGFuZGxlIG11bHRpcGxlIGJ1aWxkYm90
IGluc3RhbmNlcy4gVGhpcyBuZXcgcHJpbWFyeSBrZXkgdWlkIHdvdWxkIGJlIGdlbmVyYXRlZApi
eSBhIGNvbWJpbmF0aW9uIG9mIGJ1aWxkYm90X2luc3RhbmNlX2lkIGFuZCBjdXJyZW50IHByaW1h
cnkga2V5LiBlLmcuOiBidWlsZGJvdF9pbnN0YW5jZV9pZCArIGJ1aWxkX2lkCgoqIEJ1aWxkU2xh
dmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weTogQWRkZWQgbmV3IHByaW1hcnkg
a2V5IHVpZC4KKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weTog
RGl0dG8uCiogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90aW5z
dGFuY2UucHk6IEdlbmVyYXRlIHVpZCBhbmQgaW5zdGFuY2VfaWQuCiogQnVpbGRTbGF2ZVN1cHBv
cnQvZXdzLWFwcC9ld3Mvdmlld3MvcmVzdWx0cy5weTogVXBkYXRlZCB0byByZWNlaXZlIGhvc3Ru
YW1lIGluIGV2ZW50cy4KKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZXZlbnRzLnB5OiBT
ZW5kIGhvc3RuYW1lIGFsb25nLXdpdGggZXZlbnRzLgoqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1i
dWlsZC9tYXN0ZXIuY2ZnOiBEaXR0by4KLS0tCiAuLi4vZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxk
LnB5ICAgICAgICAgICAgICAgfCAzMCArKysrKysrKy0tLS0tLS0KIC4uLi9ld3MtYXBwL2V3cy9t
b2RlbHMvYnVpbGRib3RpbnN0YW5jZS5weSAgICB8IDE5ICsrKysrKysrKysKIC4uLi9ld3MtYXBw
L2V3cy9tb2RlbHMvc3RlcC5weSAgICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKystLS0tLS0t
LS0KIC4uLi9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5ICAgICAgICAgICAgICB8ICA4ICsr
LS0KIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9ldmVudHMucHkgICB8ICA3ICsr
Ky0KIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9tYXN0ZXIuY2ZnICB8ICAyICst
CiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysr
KysrKysKIDcgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxz
L2J1aWxkLnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1
aWxkLnB5CmluZGV4IDU3MThiNTVjNzcyLi4wYTMxMGUxMjg4NyAxMDA2NDQKLS0tIGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkLnB5CisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weQpAQCAtMjYsNiAr
MjYsNyBAQCBpbXBvcnQgbG9nZ2luZwogCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCiBm
cm9tIGV3cy5jb25maWcgaW1wb3J0IEVSUl9VTkVYUEVDVEVELCBTVUNDRVNTCitmcm9tIGV3cy5t
b2RlbHMuYnVpbGRib3RpbnN0YW5jZSBpbXBvcnQgQnVpbGRib3RJbnN0YW5jZQogZnJvbSBld3Mu
bW9kZWxzLnBhdGNoIGltcG9ydCBQYXRjaAogaW1wb3J0IGV3cy5jb21tb24udXRpbCBhcyB1dGls
CiAKQEAgLTM0LDcgKzM1LDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiBjbGFzcyBCdWlsZChtb2RlbHMuTW9kZWwpOgogICAgIHBhdGNoID0gbW9kZWxzLkZvcmVpZ25L
ZXkoUGF0Y2gsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKLSAgICBidWlsZF9pZCA9IG1vZGVs
cy5JbnRlZ2VyRmllbGQocHJpbWFyeV9rZXk9VHJ1ZSkKKyAgICB1aWQgPSBtb2RlbHMuVGV4dEZp
ZWxkKHByaW1hcnlfa2V5PVRydWUpCiAgICAgYnVpbGRlcl9pZCA9IG1vZGVscy5JbnRlZ2VyRmll
bGQoKQogICAgIGJ1aWxkZXJfbmFtZSA9IG1vZGVscy5UZXh0RmllbGQoKQogICAgIGJ1aWxkZXJf
ZGlzcGxheV9uYW1lID0gbW9kZWxzLlRleHRGaWVsZCgpCkBAIC00NywzMCArNDgsMzEgQEAgY2xh
c3MgQnVpbGQobW9kZWxzLk1vZGVsKToKICAgICBtb2RpZmllZCA9IG1vZGVscy5EYXRlVGltZUZp
ZWxkKGF1dG9fbm93PVRydWUpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIHN0cihzZWxmLmJ1aWxkX2lkKQorICAgICAgICByZXR1cm4gc3RyKHNlbGYudWlkKQogCiAg
ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNhdmVfYnVpbGQoY2xzLCBwYXRjaF9pZCwgYnVpbGRf
aWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJl
ciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgor
ICAgIGRlZiBzYXZlX2J1aWxkKGNscywgcGF0Y2hfaWQsIGhvc3RuYW1lLCBidWlsZF9pZCwgYnVp
bGRlcl9pZCwgYnVpbGRlcl9uYW1lLCBidWlsZGVyX2Rpc3BsYXlfbmFtZSwgbnVtYmVyLCByZXN1
bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQ9Tm9uZSk6CiAgICAgICAg
IGlmIG5vdCBCdWlsZC5pc192YWxpZF9yZXN1bHQocGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVy
X2lkLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9h
dCk6CiAgICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQRUNURUQKIAotICAgICAgICBidWlsZCA9
IEJ1aWxkLmdldF9leGlzdGluZ19idWlsZChidWlsZF9pZCkKKyAgICAgICAgdWlkID0gQnVpbGRi
b3RJbnN0YW5jZS5nZXRfdWlkKGhvc3RuYW1lLCBidWlsZF9pZCkKKyAgICAgICAgYnVpbGQgPSBC
dWlsZC5nZXRfZXhpc3RpbmdfYnVpbGQodWlkKQogICAgICAgICBpZiBidWlsZDoKICAgICAgICAg
ICAgICMgSWYgdGhlIGJ1aWxkIGRhdGEgaXMgYWxyZWFkeSBwcmVzZW50IGluIGRhdGFiYXNlLCB1
cGRhdGUgaXQsIGUuZy46IGJ1aWxkIGNvbXBsZXRlIGV2ZW50LgotICAgICAgICAgICAgcmV0dXJu
IEJ1aWxkLnVwZGF0ZV9idWlsZChidWlsZCwgcGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVyX2lk
LCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3Rh
dGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCkKKyAgICAgICAgICAgIHJldHVybiBC
dWlsZC51cGRhdGVfYnVpbGQoYnVpbGQsIHBhdGNoX2lkLCB1aWQsIGJ1aWxkZXJfaWQsIGJ1aWxk
ZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJp
bmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KQogCiAgICAgICAgICMgU2F2ZSB0aGUgbmV3IGJ1
aWxkIGRhdGEsIGUuZy46IGJ1aWxkIHN0YXJ0IGV2ZW50LgotICAgICAgICBCdWlsZChwYXRjaF9p
ZCwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25h
bWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0
KS5zYXZlKCkKLSAgICAgICAgX2xvZy5pbmZvKCdTYXZlZCBidWlsZCB7fSBpbiBkYXRhYmFzZSBm
b3IgcGF0Y2hfaWQ6IHt9Jy5mb3JtYXQoYnVpbGRfaWQsIHBhdGNoX2lkKSkKKyAgICAgICAgQnVp
bGQocGF0Y2hfaWQsIHVpZCwgYnVpbGRlcl9pZCwgYnVpbGRlcl9uYW1lLCBidWlsZGVyX2Rpc3Bs
YXlfbmFtZSwgbnVtYmVyLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxl
dGVfYXQpLnNhdmUoKQorICAgICAgICBfbG9nLmluZm8oJ1NhdmVkIGJ1aWxkIHt9IGluIGRhdGFi
YXNlIGZvciBwYXRjaF9pZDoge30nLmZvcm1hdCh1aWQsIHBhdGNoX2lkKSkKICAgICAgICAgcmV0
dXJuIFNVQ0NFU1MKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGRhdGVfYnVpbGQoY2xz
LCBidWlsZCwgcGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1
aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVk
X2F0LCBjb21wbGV0ZV9hdCk6CisgICAgZGVmIHVwZGF0ZV9idWlsZChjbHMsIGJ1aWxkLCBwYXRj
aF9pZCwgdWlkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1l
LCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCk6
CiAgICAgICAgIGlmIGJ1aWxkLnBhdGNoX2lkICE9IHBhdGNoX2lkOgogICAgICAgICAgICAgX2xv
Zy5lcnJvcigncGF0Y2hfaWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXRjaF9pZCB7fS4gSWdu
b3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoYnVpbGQucGF0Y2hfaWQsIHBhdGNoX2lkKSkKICAgICAg
ICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBpZiBidWlsZC5idWlsZF9pZCAh
PSBidWlsZF9pZDoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ2J1aWxkX2lkIHt9IGRvZXMgbm90
IG1hdGNoIHdpdGggYnVpbGRfaWQge30uIElnbm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxk
LmJ1aWxkX2lkLCBidWlsZF9pZCkpCisgICAgICAgIGlmIGJ1aWxkLnVpZCAhPSB1aWQ6CisgICAg
ICAgICAgICBfbG9nLmVycm9yKCd1aWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCB1aWQge30uIEln
bm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxkLnVpZCwgdWlkKSkKICAgICAgICAgICAgIHJl
dHVybiBFUlJfVU5FWFBFQ1RFRAogICAgICAgICBpZiBidWlsZC5idWlsZGVyX2lkICE9IGJ1aWxk
ZXJfaWQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdidWlsZGVyX2lkIHt9IGRvZXMgbm90IG1h
dGNoIHdpdGggYnVpbGRlcl9pZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoYnVpbGQu
YnVpbGRlcl9pZCwgYnVpbGRlcl9pZCkpCkBAIC04MywxNCArODUsMTQgQEAgY2xhc3MgQnVpbGQo
bW9kZWxzLk1vZGVsKToKICAgICAgICAgYnVpbGQuc3RhcnRlZF9hdCA9IHN0YXJ0ZWRfYXQKICAg
ICAgICAgYnVpbGQuY29tcGxldGVfYXQgPSBjb21wbGV0ZV9hdAogICAgICAgICBidWlsZC5zYXZl
KHVwZGF0ZV9maWVsZHM9WydyZXN1bHQnLCAnc3RhdGVfc3RyaW5nJywgJ3N0YXJ0ZWRfYXQnLCAn
Y29tcGxldGVfYXQnLCAnbW9kaWZpZWQnXSkKLSAgICAgICAgX2xvZy5pbmZvKCdVcGRhdGVkIGJ1
aWxkIHt9IGluIGRhdGFiYXNlIGZvciBwYXRjaF9pZDoge30nLmZvcm1hdChidWlsZF9pZCwgcGF0
Y2hfaWQpKQorICAgICAgICBfbG9nLmluZm8oJ1VwZGF0ZWQgYnVpbGQge30gaW4gZGF0YWJhc2Ug
Zm9yIHBhdGNoX2lkOiB7fScuZm9ybWF0KHVpZCwgcGF0Y2hfaWQpKQogICAgICAgICByZXR1cm4g
U1VDQ0VTUwogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlzdGluZ19idWlsZChj
bHMsIGJ1aWxkX2lkKToKKyAgICBkZWYgZ2V0X2V4aXN0aW5nX2J1aWxkKGNscywgdWlkKToKICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIEJ1aWxkLm9iamVjdHMuZ2V0KGJ1aWxkX2lk
PWJ1aWxkX2lkKQotICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gQnVpbGQub2Jq
ZWN0cy5nZXQodWlkPXVpZCkKKyAgICAgICAgZXhjZXB0IEJ1aWxkLkRvZXNOb3RFeGlzdDoKICAg
ICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZGJvdGluc3RhbmNl
LnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90
aW5zdGFuY2UucHkKaW5kZXggNjAzYjViMDVhY2MuLmM3YTE3ODMzNTI1IDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGRib3RpbnN0YW5j
ZS5weQorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVp
bGRib3RpbnN0YW5jZS5weQpAQCAtMjIsOCArMjIsMTIgQEAKIAogZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCB1bmljb2RlX2xpdGVyYWxzCiAKK2ltcG9ydCBsb2dnaW5nCisKIGZyb20gZGphbmdvLmRi
IGltcG9ydCBtb2RlbHMKIAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCiAK
IGNsYXNzIEJ1aWxkYm90SW5zdGFuY2UobW9kZWxzLk1vZGVsKToKICAgICBpbnN0YW5jZV9pZCA9
IG1vZGVscy5BdXRvRmllbGQocHJpbWFyeV9rZXk9VHJ1ZSkKQEAgLTM0LDMgKzM4LDE4IEBAIGNs
YXNzIEJ1aWxkYm90SW5zdGFuY2UobW9kZWxzLk1vZGVsKToKIAogICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgogICAgICAgICByZXR1cm4gJ3t9X3t9Jy5mb3JtYXQoc2VsZi5pbnN0YW5jZV9pZCwgc2Vs
Zi5ob3N0bmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfaW5zdGFuY2VfaWQo
Y2xzLCBob3N0bmFtZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBCdWlsZGJv
dEluc3RhbmNlLm9iamVjdHMuZ2V0KGhvc3RuYW1lPWhvc3RuYW1lLCBhY3RpdmU9VHJ1ZSkuaW5z
dGFuY2VfaWQKKyAgICAgICAgZXhjZXB0IEJ1aWxkYm90SW5zdGFuY2UuRG9lc05vdEV4aXN0Ogor
ICAgICAgICAgICAgaW5zdGFuY2UgPSBCdWlsZGJvdEluc3RhbmNlKGhvc3RuYW1lPWhvc3RuYW1l
KQorICAgICAgICAgICAgaW5zdGFuY2Uuc2F2ZSgpCisgICAgICAgICAgICBfbG9nLmluZm8oJ0Ny
ZWF0ZWQgbmV3IGJ1aWxkYm90IGluc3RhbmNlIGlkIHt9IGZvciBob3N0bmFtZToge30nLmZvcm1h
dChpbnN0YW5jZS5pbnN0YW5jZV9pZCwgaG9zdG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlLmluc3RhbmNlX2lkCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X3VpZChj
bHMsIGhvc3RuYW1lLCBidWlsZF9vcl9zdGVwX2lkKToKKyAgICAgICAgaW5zdGFuY2VfaWQgPSBC
dWlsZGJvdEluc3RhbmNlLmdldF9pbnN0YW5jZV9pZChob3N0bmFtZSkKKyAgICAgICAgcmV0dXJu
ICd7fV97fScuZm9ybWF0KGluc3RhbmNlX2lkLCBidWlsZF9vcl9zdGVwX2lkKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL3N0ZXAucHkgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weQppbmRleCAw
ODEyZmVlOGVmNi4uOWIzODBhY2Q2ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1hcHAvZXdzL21vZGVscy9zdGVwLnB5CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1hcHAvZXdzL21vZGVscy9zdGVwLnB5CkBAIC0yNywxNCArMjcsMTUgQEAgaW1wb3J0
IGxvZ2dpbmcKIGZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKIGZyb20gZXdzLmNvbmZpZyBp
bXBvcnQgRVJSX1VORVhQRUNURUQsIFNVQ0NFU1MKIGZyb20gZXdzLm1vZGVscy5idWlsZCBpbXBv
cnQgQnVpbGQKK2Zyb20gZXdzLm1vZGVscy5idWlsZGJvdGluc3RhbmNlIGltcG9ydCBCdWlsZGJv
dEluc3RhbmNlCiBpbXBvcnQgZXdzLmNvbW1vbi51dGlsIGFzIHV0aWwKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIFN0ZXAobW9kZWxzLk1vZGVsKToKLSAg
ICBzdGVwX2lkID0gbW9kZWxzLkludGVnZXJGaWVsZChwcmltYXJ5X2tleT1UcnVlKQotICAgIGJ1
aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkK
KyAgICB1aWQgPSBtb2RlbHMuVGV4dEZpZWxkKHByaW1hcnlfa2V5PVRydWUpCisgICAgYnVpbGRf
dWlkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwg
ZGJfY29sdW1uPSdidWlsZF91aWQnKQogICAgIHJlc3VsdCA9IG1vZGVscy5JbnRlZ2VyRmllbGQo
bnVsbD1UcnVlLCBibGFuaz1UcnVlKQogICAgIHN0YXRlX3N0cmluZyA9IG1vZGVscy5UZXh0Rmll
bGQoKQogICAgIHN0YXJ0ZWRfYXQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSwgYmxh
bms9VHJ1ZSkKQEAgLTQzLDQ0ICs0NCw0NCBAQCBjbGFzcyBTdGVwKG1vZGVscy5Nb2RlbCk6CiAg
ICAgbW9kaWZpZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQogCiAgICAg
ZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZi5zdGVwX2lkKQorICAg
ICAgICByZXR1cm4gc3RyKHNlbGYudWlkKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNh
dmVfc3RlcChjbHMsIHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3Rh
cnRlZF9hdCwgY29tcGxldGVfYXQ9Tm9uZSk6CisgICAgZGVmIHNhdmVfc3RlcChjbHMsIGhvc3Ru
YW1lLCBzdGVwX2lkLCBidWlsZF9pZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQs
IGNvbXBsZXRlX2F0PU5vbmUpOgogICAgICAgICBpZiBub3QgU3RlcC5pc192YWxpZF9yZXN1bHQo
c3RlcF9pZCwgYnVpbGRfaWQsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21w
bGV0ZV9hdCk6CiAgICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQRUNURUQKIAotICAgICAgICBz
dGVwID0gU3RlcC5nZXRfZXhpc3Rpbmdfc3RlcChzdGVwX2lkKQorICAgICAgICBzdGVwX3VpZCA9
IEJ1aWxkYm90SW5zdGFuY2UuZ2V0X3VpZChob3N0bmFtZSwgc3RlcF9pZCkKKyAgICAgICAgYnVp
bGRfdWlkID0gQnVpbGRib3RJbnN0YW5jZS5nZXRfdWlkKGhvc3RuYW1lLCBidWlsZF9pZCkKKwor
ICAgICAgICBzdGVwID0gU3RlcC5nZXRfZXhpc3Rpbmdfc3RlcChzdGVwX3VpZCkKICAgICAgICAg
aWYgc3RlcDoKICAgICAgICAgICAgICMgSWYgdGhlIHN0ZXAgZGF0YSBpcyBhbHJlYWR5IHByZXNl
bnQgaW4gZGF0YWJhc2UsIHVwZGF0ZSBpdCwgZS5nLjogc3RlcCBjb21wbGV0ZSBldmVudC4KLSAg
ICAgICAgICAgIHJldHVybiBTdGVwLnVwZGF0ZV9zdGVwKHN0ZXAsIHN0ZXBfaWQsIGJ1aWxkX2lk
LCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpCisgICAgICAg
ICAgICByZXR1cm4gU3RlcC51cGRhdGVfc3RlcChzdGVwLCBzdGVwX3VpZCwgYnVpbGRfdWlkLCBy
ZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpCiAKICAgICAgICAg
IyBTYXZlIHRoZSBuZXcgc3RlcCBkYXRhLCBlLmcuOiBzdGVwIHN0YXJ0IGV2ZW50LgotICAgICAg
ICBTdGVwKHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9h
dCwgY29tcGxldGVfYXQpLnNhdmUoKQotICAgICAgICBfbG9nLmRlYnVnKCdTYXZlZCBzdGVwIHt9
IGluIGRhdGFiYXNlIGZvciBidWlsZDoge30nLmZvcm1hdChzdGVwX2lkLCBidWlsZF9pZCkpCisg
ICAgICAgIFN0ZXAoc3RlcF91aWQsIGJ1aWxkX3VpZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0
YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KS5zYXZlKCkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU2F2ZWQg
c3RlcCB7fSBpbiBkYXRhYmFzZSBmb3IgYnVpbGQ6IHt9Jy5mb3JtYXQoc3RlcF91aWQsIGJ1aWxk
X3VpZCkpCiAgICAgICAgIHJldHVybiBTVUNDRVNTCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgdXBkYXRlX3N0ZXAoY2xzLCBzdGVwLCBzdGVwX2lkLCBidWlsZF9pZCwgcmVzdWx0LCBzdGF0
ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KToKLSAgICAgICAgaWYgc3RlcC5zdGVw
X2lkICE9IHN0ZXBfaWQ6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCdzdGVwX2lkIHt9IGRvZXMg
bm90IG1hdGNoIHdpdGggc3RlcF9pZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoc3Rl
cC5zdGVwX2lkLCBzdGVwX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAot
ICAgICAgICBpZiBzdGVwLmJ1aWxkX2lkICE9IGJ1aWxkX2lkOgotICAgICAgICAgICAgX2xvZy5l
cnJvcignYnVpbGRfaWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBidWlsZF9pZCB7fS4gSWdub3Jp
bmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC5idWlsZF9pZCwgYnVpbGRfaWQpKQorICAgIGRlZiB1
cGRhdGVfc3RlcChjbHMsIHN0ZXAsIHN0ZXBfdWlkLCBidWlsZF91aWQsIHJlc3VsdCwgc3RhdGVf
c3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCk6CisgICAgICAgIGlmIHN0ZXAudWlkICE9
IHN0ZXBfdWlkOgorICAgICAgICAgICAgX2xvZy5lcnJvcignc3RlcF91aWQge30gZG9lcyBub3Qg
bWF0Y2ggd2l0aCBzdGVwX3VpZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC51
aWQsIHN0ZXBfdWlkKSkKICAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAogICAgICAg
ICBzdGVwLnJlc3VsdCA9IHJlc3VsdAogICAgICAgICBzdGVwLnN0YXRlX3N0cmluZyA9IHN0YXRl
X3N0cmluZwogICAgICAgICBzdGVwLnN0YXJ0ZWRfYXQgPSBzdGFydGVkX2F0CiAgICAgICAgIHN0
ZXAuY29tcGxldGVfYXQgPSBjb21wbGV0ZV9hdAogICAgICAgICBzdGVwLnNhdmUodXBkYXRlX2Zp
ZWxkcz1bJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9h
dCcsICdtb2RpZmllZCddKQotICAgICAgICBfbG9nLmluZm8oJ1VwZGF0ZWQgc3RlcCB7fSBpbiBk
YXRhYmFzZSBmb3IgYnVpbGQ6IHt9Jy5mb3JtYXQoc3RlcF9pZCwgYnVpbGRfaWQpKQorICAgICAg
ICBfbG9nLmluZm8oJ1VwZGF0ZWQgc3RlcCB7fSBpbiBkYXRhYmFzZSBmb3IgYnVpbGQ6IHt9Jy5m
b3JtYXQoc3RlcF91aWQsIGJ1aWxkX3VpZCkpCiAgICAgICAgIHJldHVybiBTVUNDRVNTCiAKICAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X2V4aXN0aW5nX3N0ZXAoY2xzLCBzdGVwX2lkKToK
KyAgICBkZWYgZ2V0X2V4aXN0aW5nX3N0ZXAoY2xzLCB1aWQpOgogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICByZXR1cm4gU3RlcC5vYmplY3RzLmdldChzdGVwX2lkPXN0ZXBfaWQpCi0gICAgICAg
IGV4Y2VwdDoKKyAgICAgICAgICAgIHJldHVybiBTdGVwLm9iamVjdHMuZ2V0KHVpZD11aWQpCisg
ICAgICAgIGV4Y2VwdCBTdGVwLkRvZXNOb3RFeGlzdDoKICAgICAgICAgICAgIHJldHVybiBOb25l
CiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL3ZpZXdzL3Jlc3VsdHMucHkgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5CmluZGV4IGRlMDI0OWIxNjQxLi42ZTc2NzMxMzBk
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3Mv
cmVzdWx0cy5weQorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3
cy9yZXN1bHRzLnB5CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFJlc3VsdHMoVmlldyk6CiAgICAg
ICAgIGlmIG5vdCBwYXRjaF9pZCBvciBwYXRjaF9pZCA8IDE6CiAgICAgICAgICAgICByZXR1cm4g
SHR0cFJlc3BvbnNlKCJJbnZhbGlkIHBhdGNoIGlkOiB7fS4iLmZvcm1hdChwYXRjaF9pZCkpCiAK
LSAgICAgICAgQnVpbGQuc2F2ZV9idWlsZChwYXRjaF9pZD1pbnQocGF0Y2hfaWQpLCBidWlsZF9p
ZD1kYXRhWydidWlsZF9pZCddLCBidWlsZGVyX2lkPWRhdGFbJ2J1aWxkZXJfaWQnXSwgYnVpbGRl
cl9uYW1lPWRhdGFbJ2J1aWxkZXJfbmFtZSddLAorICAgICAgICBCdWlsZC5zYXZlX2J1aWxkKHBh
dGNoX2lkPWludChwYXRjaF9pZCksIGhvc3RuYW1lPWRhdGFbJ2hvc3RuYW1lJ10sIGJ1aWxkX2lk
PWRhdGFbJ2J1aWxkX2lkJ10sIGJ1aWxkZXJfaWQ9ZGF0YVsnYnVpbGRlcl9pZCddLCBidWlsZGVy
X25hbWU9ZGF0YVsnYnVpbGRlcl9uYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgYnVpbGRlcl9k
aXNwbGF5X25hbWU9ZGF0YVsnYnVpbGRlcl9kaXNwbGF5X25hbWUnXSwgbnVtYmVyPWRhdGFbJ251
bWJlciddLCByZXN1bHQ9ZGF0YVsncmVzdWx0J10sCiAgICAgICAgICAgICAgICAgICAgc3RhdGVf
c3RyaW5nPWRhdGFbJ3N0YXRlX3N0cmluZyddLCBzdGFydGVkX2F0PWRhdGFbJ3N0YXJ0ZWRfYXQn
XSwgY29tcGxldGVfYXQ9ZGF0YVsnY29tcGxldGVfYXQnXSkKICAgICAgICAgcmV0dXJuIEh0dHBS
ZXNwb25zZSgiU2F2ZWQgZGF0YSBmb3IgcGF0Y2g6IHt9LlxuIi5mb3JtYXQocGF0Y2hfaWQpKQpA
QCAtNjgsNyArNjgsNyBAQCBjbGFzcyBSZXN1bHRzKFZpZXcpOgogICAgICAgICBpZiBub3Qgc2Vs
Zi5pc192YWxpZF9yZXN1bHQoZGF0YSk6CiAgICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNl
KCJJbmNvbXBsZXRlIGRhdGEuIikKIAotICAgICAgICBTdGVwLnNhdmVfc3RlcChzdGVwX2lkPWRh
dGFbJ3N0ZXBfaWQnXSwgYnVpbGRfaWQ9ZGF0YVsnYnVpbGRfaWQnXSwgcmVzdWx0PWRhdGFbJ3Jl
c3VsdCddLAorICAgICAgICBTdGVwLnNhdmVfc3RlcChob3N0bmFtZT1kYXRhWydob3N0bmFtZSdd
LCBzdGVwX2lkPWRhdGFbJ3N0ZXBfaWQnXSwgYnVpbGRfaWQ9ZGF0YVsnYnVpbGRfaWQnXSwgcmVz
dWx0PWRhdGFbJ3Jlc3VsdCddLAogICAgICAgICAgICAgICAgICAgIHN0YXRlX3N0cmluZz1kYXRh
WydzdGF0ZV9zdHJpbmcnXSwgc3RhcnRlZF9hdD1kYXRhWydzdGFydGVkX2F0J10sIGNvbXBsZXRl
X2F0PWRhdGFbJ2NvbXBsZXRlX2F0J10pCiAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoIlNh
dmVkIGRhdGEgZm9yIHN0ZXA6IHt9LlxuIi5mb3JtYXQoZGF0YVsnc3RlcF9pZCddKSkKIApAQCAt
NzcsOSArNzcsOSBAQCBjbGFzcyBSZXN1bHRzKFZpZXcpOgogICAgICAgICAgICAgX2xvZy5lcnJv
cigiSW52YWxpZCBkYXRhIHR5cGU6IHt9Ii5mb3JtYXQoZGF0YVsndHlwZSddKSkKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJlcXVpcmVkX2tleXMgPSB7dSdld3MtYnVpbGQn
OiBbJ3BhdGNoX2lkJywgJ2J1aWxkX2lkJywgJ2J1aWxkZXJfaWQnLCAnYnVpbGRlcl9uYW1lJywg
J2J1aWxkZXJfZGlzcGxheV9uYW1lJywKKyAgICAgICAgcmVxdWlyZWRfa2V5cyA9IHt1J2V3cy1i
dWlsZCc6IFsnaG9zdG5hbWUnLCAncGF0Y2hfaWQnLCAnYnVpbGRfaWQnLCAnYnVpbGRlcl9pZCcs
ICdidWlsZGVyX25hbWUnLCAnYnVpbGRlcl9kaXNwbGF5X25hbWUnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXInLCAncmVzdWx0JywgJ3N0YXRlX3N0
cmluZycsICdzdGFydGVkX2F0JywgJ2NvbXBsZXRlX2F0J10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgdSdld3Mtc3RlcCc6IFsnc3RlcF9pZCcsICdidWlsZF9pZCcsICdyZXN1bHQnLCAnc3Rh
dGVfc3RyaW5nJywgJ3N0YXJ0ZWRfYXQnLCAnY29tcGxldGVfYXQnXX0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICB1J2V3cy1zdGVwJzogWydob3N0bmFtZScsICdzdGVwX2lkJywgJ2J1aWxkX2lk
JywgJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9hdCdd
fQogCiAgICAgICAgIGZvciBrZXkgaW4gcmVxdWlyZWRfa2V5cy5nZXQoZGF0YS5nZXQoJ3R5cGUn
KSk6CiAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGRhdGE6CmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZXZlbnRzLnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvZXdzLWJ1aWxkL2V2ZW50cy5weQppbmRleCA3MDlkZjQyNTg1OC4uNTU4YWNjZmUyMGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9ldmVudHMucHkK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2V2ZW50cy5weQpAQCAtNzMs
NyArNzMsNyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZpY2UpOgogCiAgICAg
RVZFTlRfU0VSVkVSX0VORFBPSU5UID0gJ2h0dHA6Ly9ld3Mud2Via2l0LXVhdC5vcmcvcmVzdWx0
cy8nCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9wcmVmaXg9JycsIG5hbWU9J0V2ZW50
cycpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0bmFtZSwgdHlwZV9wcmVmaXg9JycsIG5h
bWU9J0V2ZW50cycpOgogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgRXZlbnRz
IFBsdWdpbi4gU2VuZHMgZGF0YSB0byBldmVudCBzZXJ2ZXIgb24gc3BlY2lmaWMgYnVpbGRib3Qg
ZXZlbnRzLgogICAgICAgICA6cGFyYW0gdHlwZV9wcmVmaXg6IFtvcHRpb25hbF0gcHJlZml4IHdl
IHdhbnQgdG8gYWRkIHRvIHRoZSAndHlwZScgZmllbGQgb24gdGhlIGpzb24gd2Ugc2VuZApAQCAt
ODUsNiArODUsNyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZpY2UpOgogICAg
ICAgICBpZiB0eXBlX3ByZWZpeCBhbmQgbm90IHR5cGVfcHJlZml4LmVuZHN3aXRoKCItIik6CiAg
ICAgICAgICAgICB0eXBlX3ByZWZpeCArPSAiLSIKICAgICAgICAgc2VsZi50eXBlX3ByZWZpeCA9
IHR5cGVfcHJlZml4CisgICAgICAgIHNlbGYuaG9zdG5hbWUgPSBob3N0bmFtZQogCiAgICAgZGVm
IHNlbmREYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBhZ2VudCA9IEFnZW50KHJlYWN0b3IpCkBA
IC0xMTUsNiArMTE2LDcgQEAgY2xhc3MgRXZlbnRzKHNlcnZpY2UuQnVpbGRib3RTZXJ2aWNlKToK
ICAgICAgICAgZGF0YSA9IHsKICAgICAgICAgICAgICJ0eXBlIjogc2VsZi50eXBlX3ByZWZpeCAr
ICJidWlsZCIsCiAgICAgICAgICAgICAic3RhdHVzIjogInN0YXJ0ZWQiLAorICAgICAgICAgICAg
Imhvc3RuYW1lIjogc2VsZi5ob3N0bmFtZSwKICAgICAgICAgICAgICJwYXRjaF9pZCI6IHNlbGYu
Z2V0UGF0Y2hJRChidWlsZCksCiAgICAgICAgICAgICAiYnVpbGRfaWQiOiBidWlsZC5nZXQoJ2J1
aWxkaWQnKSwKICAgICAgICAgICAgICJidWlsZGVyX2lkIjogYnVpbGQuZ2V0KCdidWlsZGVyaWQn
KSwKQEAgLTE0Miw2ICsxNDQsNyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZp
Y2UpOgogICAgICAgICBkYXRhID0gewogICAgICAgICAgICAgInR5cGUiOiBzZWxmLnR5cGVfcHJl
Zml4ICsgImJ1aWxkIiwKICAgICAgICAgICAgICJzdGF0dXMiOiAiZmluaXNoZWQiLAorICAgICAg
ICAgICAgImhvc3RuYW1lIjogc2VsZi5ob3N0bmFtZSwKICAgICAgICAgICAgICJwYXRjaF9pZCI6
IHNlbGYuZ2V0UGF0Y2hJRChidWlsZCksCiAgICAgICAgICAgICAiYnVpbGRfaWQiOiBidWlsZC5n
ZXQoJ2J1aWxkaWQnKSwKICAgICAgICAgICAgICJidWlsZGVyX2lkIjogYnVpbGQuZ2V0KCdidWls
ZGVyaWQnKSwKQEAgLTE2MSw2ICsxNjQsNyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJv
dFNlcnZpY2UpOgogICAgICAgICBkYXRhID0gewogICAgICAgICAgICAgInR5cGUiOiBzZWxmLnR5
cGVfcHJlZml4ICsgInN0ZXAiLAogICAgICAgICAgICAgInN0YXR1cyI6ICJzdGFydGVkIiwKKyAg
ICAgICAgICAgICJob3N0bmFtZSI6IHNlbGYuaG9zdG5hbWUsCiAgICAgICAgICAgICAic3RlcF9p
ZCI6IHN0ZXAuZ2V0KCdzdGVwaWQnKSwKICAgICAgICAgICAgICJidWlsZF9pZCI6IHN0ZXAuZ2V0
KCdidWlsZGlkJyksCiAgICAgICAgICAgICAicmVzdWx0Ijogc3RlcC5nZXQoJ3Jlc3VsdHMnKSwK
QEAgLTE3NSw2ICsxNzksNyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZpY2Up
OgogICAgICAgICBkYXRhID0gewogICAgICAgICAgICAgInR5cGUiOiBzZWxmLnR5cGVfcHJlZml4
ICsgInN0ZXAiLAogICAgICAgICAgICAgInN0YXR1cyI6ICJmaW5pc2hlZCIsCisgICAgICAgICAg
ICAiaG9zdG5hbWUiOiBzZWxmLmhvc3RuYW1lLAogICAgICAgICAgICAgInN0ZXBfaWQiOiBzdGVw
LmdldCgnc3RlcGlkJyksCiAgICAgICAgICAgICAiYnVpbGRfaWQiOiBzdGVwLmdldCgnYnVpbGRp
ZCcpLAogICAgICAgICAgICAgInJlc3VsdCI6IHN0ZXAuZ2V0KCdyZXN1bHRzJyksCmRpZmYgLS1n
aXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbWFzdGVyLmNmZyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9tYXN0ZXIuY2ZnCmluZGV4IDVlYzBkMDMyYjcy
Li5jYzE2ZjQ3Mzk3YSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1
aWxkL21hc3Rlci5jZmcKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL21h
c3Rlci5jZmcKQEAgLTI2LDUgKzI2LDUgQEAgY1snYnVpbGRib3ROZXRVc2FnZURhdGEnXSA9IE5v
bmUKIAogbG9hZENvbmZpZy5sb2FkQnVpbGRlckNvbmZpZyhjLCB1c2VfbG9jYWxob3N0X3dvcmtl
cj1pc190ZXN0X21vZGVfZW5hYmxlZCkKIAotZXZlbnRfcmVwb3J0ZXIgPSBFdmVudHModHlwZV9w
cmVmaXg9J2V3cycpCitldmVudF9yZXBvcnRlciA9IEV2ZW50cyhob3N0bmFtZT0nZXdzLWJ1aWxk
LndlYmtpdC5vcmcnLCB0eXBlX3ByZWZpeD0nZXdzJykKIGNbJ3NlcnZpY2VzJ10gPSBbZXZlbnRf
cmVwb3J0ZXJdCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYjIyNGU2NjEzNTAuLjIxNmU2YzdkN2FkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMDItMjggIEFh
a2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtld3MtYXBwXSBV
cGRhdGUgcHJpbWFyeSBrZXlzIGZvciBoYW5kbGluZyBtdWx0aXBsZSBCdWlsZGJvdCBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTEy
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBh
IG5ldyBwcmltYXJ5IGtleSB1aWQgZm9yIGJ1aWxkIGFuZCBzdGVwIHRhYmxlcy4gUHJldmlvdXMg
cHJpbWFyeSBrZXlzIGJ1aWxkX2lkIGFuZCBzdGVwX2lkCisgICAgICAgIHdlcmUgbm90IGVub3Vn
aCB0byBoYW5kbGUgbXVsdGlwbGUgYnVpbGRib3QgaW5zdGFuY2VzLiBUaGlzIG5ldyBwcmltYXJ5
IGtleSB1aWQgd291bGQgYmUgZ2VuZXJhdGVkCisgICAgICAgIGJ5IGEgY29tYmluYXRpb24gb2Yg
YnVpbGRib3RfaW5zdGFuY2VfaWQgYW5kIGN1cnJlbnQgcHJpbWFyeSBrZXkuIGUuZy46IGJ1aWxk
Ym90X2luc3RhbmNlX2lkICsgYnVpbGRfaWQKKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weTogQWRkZWQgbmV3IHByaW1hcnkga2V5IHVpZC4K
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weTog
RGl0dG8uCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1
aWxkYm90aW5zdGFuY2UucHk6IEdlbmVyYXRlIHVpZCBhbmQgaW5zdGFuY2VfaWQuCisgICAgICAg
ICogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3MvcmVzdWx0cy5weTogVXBkYXRl
ZCB0byByZWNlaXZlIGhvc3RuYW1lIGluIGV2ZW50cy4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYnVpbGQvZXZlbnRzLnB5OiBTZW5kIGhvc3RuYW1lIGFsb25nLXdpdGggZXZlbnRz
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9tYXN0ZXIuY2ZnOiBEaXR0
by4KKwogMjAxOS0wMi0yOCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2V3cy1hcHBdIFVwZGF0ZSBtZXRob2QgdG8gc2F2ZSBidWlsZCB0byBoYW5kbGUg
YnVpbGRlcl9kaXNwbGF5X25hbWUKLS0gCjIuMTcuMiAoQXBwbGUgR2l0LTExMykKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363376</attachid>
            <date>2019-03-01 14:39:56 -0800</date>
            <delta_ts>2019-03-01 15:09:37 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-ews-app-Update-primary-keys-for-handling-multiple-Bu_v4.patch</filename>
            <type>text/plain</type>
            <size>18288</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">RnJvbSBkMjAzZjkzNDdiMzdlYWIzNTQ0YjZiN2E4YTI3NWZjNzJlNDBmMzFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBYWthc2ggSmFpbiA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI4IEZlYiAyMDE5IDE0OjMxOjQ2IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gW2V3
cy1hcHBdIFVwZGF0ZSBwcmltYXJ5IGtleXMgZm9yIGhhbmRsaW5nIG11bHRpcGxlIEJ1aWxkYm90
CiBpbnN0YW5jZXMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTEy
MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpVc2UgYSBuZXcgcHJpbWFyeSBrZXkgdWlk
IGZvciBidWlsZCBhbmQgc3RlcCB0YWJsZXMuIFByZXZpb3VzIHByaW1hcnkga2V5cyBidWlsZF9p
ZCBhbmQgc3RlcF9pZAp3ZXJlIG5vdCBlbm91Z2ggdG8gaGFuZGxlIG11bHRpcGxlIGJ1aWxkYm90
IGluc3RhbmNlcy4gVGhpcyBuZXcgcHJpbWFyeSBrZXkgdWlkIHdvdWxkIGJlIGdlbmVyYXRlZApi
eSBhIGNvbWJpbmF0aW9uIG9mIGJ1aWxkYm90X2luc3RhbmNlX2lkIGFuZCBjdXJyZW50IHByaW1h
cnkga2V5LiBlLmcuOiBidWlsZGJvdF9pbnN0YW5jZV9pZCArIGJ1aWxkX2lkCgoqIEJ1aWxkU2xh
dmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weTogQWRkZWQgbmV3IHByaW1hcnkg
a2V5IHVpZC4KKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weTog
RGl0dG8uCiogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90aW5z
dGFuY2UucHk6IEdlbmVyYXRlIHVpZCBhbmQgaW5zdGFuY2VfaWQuCiogQnVpbGRTbGF2ZVN1cHBv
cnQvZXdzLWFwcC9ld3Mvdmlld3MvcmVzdWx0cy5weTogVXBkYXRlZCB0byByZWNlaXZlIGhvc3Ru
YW1lIGluIGV2ZW50cy4KKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZXZlbnRzLnB5OiBT
ZW5kIGhvc3RuYW1lIGFsb25nLXdpdGggZXZlbnRzLgoqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1i
dWlsZC9tYXN0ZXIuY2ZnOiBEaXR0by4KLS0tCiAuLi4vZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxk
LnB5ICAgICAgICAgICAgICAgfCAzMCArKysrKysrKy0tLS0tLS0KIC4uLi9ld3MtYXBwL2V3cy9t
b2RlbHMvYnVpbGRib3RpbnN0YW5jZS5weSAgICB8IDE5ICsrKysrKysrKysKIC4uLi9ld3MtYXBw
L2V3cy9tb2RlbHMvc3RlcC5weSAgICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKystLS0tLS0t
LS0KIC4uLi9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5ICAgICAgICAgICAgICB8ICA4ICsr
LS0KIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9ldmVudHMucHkgICB8ICA3ICsr
Ky0KIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9tYXN0ZXIuY2ZnICB8ICAyICst
CiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysr
KysrKysKIDcgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxz
L2J1aWxkLnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1
aWxkLnB5CmluZGV4IDU3MThiNTVjNzcyLi4wYTMxMGUxMjg4NyAxMDA2NDQKLS0tIGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkLnB5CisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZC5weQpAQCAtMjYsNiAr
MjYsNyBAQCBpbXBvcnQgbG9nZ2luZwogCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCiBm
cm9tIGV3cy5jb25maWcgaW1wb3J0IEVSUl9VTkVYUEVDVEVELCBTVUNDRVNTCitmcm9tIGV3cy5t
b2RlbHMuYnVpbGRib3RpbnN0YW5jZSBpbXBvcnQgQnVpbGRib3RJbnN0YW5jZQogZnJvbSBld3Mu
bW9kZWxzLnBhdGNoIGltcG9ydCBQYXRjaAogaW1wb3J0IGV3cy5jb21tb24udXRpbCBhcyB1dGls
CiAKQEAgLTM0LDcgKzM1LDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQog
CiBjbGFzcyBCdWlsZChtb2RlbHMuTW9kZWwpOgogICAgIHBhdGNoID0gbW9kZWxzLkZvcmVpZ25L
ZXkoUGF0Y2gsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKLSAgICBidWlsZF9pZCA9IG1vZGVs
cy5JbnRlZ2VyRmllbGQocHJpbWFyeV9rZXk9VHJ1ZSkKKyAgICB1aWQgPSBtb2RlbHMuVGV4dEZp
ZWxkKHByaW1hcnlfa2V5PVRydWUpCiAgICAgYnVpbGRlcl9pZCA9IG1vZGVscy5JbnRlZ2VyRmll
bGQoKQogICAgIGJ1aWxkZXJfbmFtZSA9IG1vZGVscy5UZXh0RmllbGQoKQogICAgIGJ1aWxkZXJf
ZGlzcGxheV9uYW1lID0gbW9kZWxzLlRleHRGaWVsZCgpCkBAIC00NywzMCArNDgsMzEgQEAgY2xh
c3MgQnVpbGQobW9kZWxzLk1vZGVsKToKICAgICBtb2RpZmllZCA9IG1vZGVscy5EYXRlVGltZUZp
ZWxkKGF1dG9fbm93PVRydWUpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIHN0cihzZWxmLmJ1aWxkX2lkKQorICAgICAgICByZXR1cm4gc3RyKHNlbGYudWlkKQogCiAg
ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNhdmVfYnVpbGQoY2xzLCBwYXRjaF9pZCwgYnVpbGRf
aWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJl
ciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgor
ICAgIGRlZiBzYXZlX2J1aWxkKGNscywgcGF0Y2hfaWQsIGhvc3RuYW1lLCBidWlsZF9pZCwgYnVp
bGRlcl9pZCwgYnVpbGRlcl9uYW1lLCBidWlsZGVyX2Rpc3BsYXlfbmFtZSwgbnVtYmVyLCByZXN1
bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQ9Tm9uZSk6CiAgICAgICAg
IGlmIG5vdCBCdWlsZC5pc192YWxpZF9yZXN1bHQocGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVy
X2lkLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9h
dCk6CiAgICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQRUNURUQKIAotICAgICAgICBidWlsZCA9
IEJ1aWxkLmdldF9leGlzdGluZ19idWlsZChidWlsZF9pZCkKKyAgICAgICAgdWlkID0gQnVpbGRi
b3RJbnN0YW5jZS5nZXRfdWlkKGhvc3RuYW1lLCBidWlsZF9pZCkKKyAgICAgICAgYnVpbGQgPSBC
dWlsZC5nZXRfZXhpc3RpbmdfYnVpbGQodWlkKQogICAgICAgICBpZiBidWlsZDoKICAgICAgICAg
ICAgICMgSWYgdGhlIGJ1aWxkIGRhdGEgaXMgYWxyZWFkeSBwcmVzZW50IGluIGRhdGFiYXNlLCB1
cGRhdGUgaXQsIGUuZy46IGJ1aWxkIGNvbXBsZXRlIGV2ZW50LgotICAgICAgICAgICAgcmV0dXJu
IEJ1aWxkLnVwZGF0ZV9idWlsZChidWlsZCwgcGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVyX2lk
LCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3Rh
dGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCkKKyAgICAgICAgICAgIHJldHVybiBC
dWlsZC51cGRhdGVfYnVpbGQoYnVpbGQsIHBhdGNoX2lkLCB1aWQsIGJ1aWxkZXJfaWQsIGJ1aWxk
ZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJp
bmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KQogCiAgICAgICAgICMgU2F2ZSB0aGUgbmV3IGJ1
aWxkIGRhdGEsIGUuZy46IGJ1aWxkIHN0YXJ0IGV2ZW50LgotICAgICAgICBCdWlsZChwYXRjaF9p
ZCwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25h
bWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0
KS5zYXZlKCkKLSAgICAgICAgX2xvZy5pbmZvKCdTYXZlZCBidWlsZCB7fSBpbiBkYXRhYmFzZSBm
b3IgcGF0Y2hfaWQ6IHt9Jy5mb3JtYXQoYnVpbGRfaWQsIHBhdGNoX2lkKSkKKyAgICAgICAgQnVp
bGQocGF0Y2hfaWQsIHVpZCwgYnVpbGRlcl9pZCwgYnVpbGRlcl9uYW1lLCBidWlsZGVyX2Rpc3Bs
YXlfbmFtZSwgbnVtYmVyLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxl
dGVfYXQpLnNhdmUoKQorICAgICAgICBfbG9nLmluZm8oJ1NhdmVkIGJ1aWxkIHt9IGluIGRhdGFi
YXNlIGZvciBwYXRjaF9pZDoge30nLmZvcm1hdCh1aWQsIHBhdGNoX2lkKSkKICAgICAgICAgcmV0
dXJuIFNVQ0NFU1MKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGRhdGVfYnVpbGQoY2xz
LCBidWlsZCwgcGF0Y2hfaWQsIGJ1aWxkX2lkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1
aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVk
X2F0LCBjb21wbGV0ZV9hdCk6CisgICAgZGVmIHVwZGF0ZV9idWlsZChjbHMsIGJ1aWxkLCBwYXRj
aF9pZCwgdWlkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1l
LCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCk6
CiAgICAgICAgIGlmIGJ1aWxkLnBhdGNoX2lkICE9IHBhdGNoX2lkOgogICAgICAgICAgICAgX2xv
Zy5lcnJvcigncGF0Y2hfaWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXRjaF9pZCB7fS4gSWdu
b3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoYnVpbGQucGF0Y2hfaWQsIHBhdGNoX2lkKSkKICAgICAg
ICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBpZiBidWlsZC5idWlsZF9pZCAh
PSBidWlsZF9pZDoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ2J1aWxkX2lkIHt9IGRvZXMgbm90
IG1hdGNoIHdpdGggYnVpbGRfaWQge30uIElnbm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxk
LmJ1aWxkX2lkLCBidWlsZF9pZCkpCisgICAgICAgIGlmIGJ1aWxkLnVpZCAhPSB1aWQ6CisgICAg
ICAgICAgICBfbG9nLmVycm9yKCd1aWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCB1aWQge30uIEln
bm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxkLnVpZCwgdWlkKSkKICAgICAgICAgICAgIHJl
dHVybiBFUlJfVU5FWFBFQ1RFRAogICAgICAgICBpZiBidWlsZC5idWlsZGVyX2lkICE9IGJ1aWxk
ZXJfaWQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdidWlsZGVyX2lkIHt9IGRvZXMgbm90IG1h
dGNoIHdpdGggYnVpbGRlcl9pZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoYnVpbGQu
YnVpbGRlcl9pZCwgYnVpbGRlcl9pZCkpCkBAIC04MywxNCArODUsMTQgQEAgY2xhc3MgQnVpbGQo
bW9kZWxzLk1vZGVsKToKICAgICAgICAgYnVpbGQuc3RhcnRlZF9hdCA9IHN0YXJ0ZWRfYXQKICAg
ICAgICAgYnVpbGQuY29tcGxldGVfYXQgPSBjb21wbGV0ZV9hdAogICAgICAgICBidWlsZC5zYXZl
KHVwZGF0ZV9maWVsZHM9WydyZXN1bHQnLCAnc3RhdGVfc3RyaW5nJywgJ3N0YXJ0ZWRfYXQnLCAn
Y29tcGxldGVfYXQnLCAnbW9kaWZpZWQnXSkKLSAgICAgICAgX2xvZy5pbmZvKCdVcGRhdGVkIGJ1
aWxkIHt9IGluIGRhdGFiYXNlIGZvciBwYXRjaF9pZDoge30nLmZvcm1hdChidWlsZF9pZCwgcGF0
Y2hfaWQpKQorICAgICAgICBfbG9nLmluZm8oJ1VwZGF0ZWQgYnVpbGQge30gaW4gZGF0YWJhc2Ug
Zm9yIHBhdGNoX2lkOiB7fScuZm9ybWF0KHVpZCwgcGF0Y2hfaWQpKQogICAgICAgICByZXR1cm4g
U1VDQ0VTUwogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlzdGluZ19idWlsZChj
bHMsIGJ1aWxkX2lkKToKKyAgICBkZWYgZ2V0X2V4aXN0aW5nX2J1aWxkKGNscywgdWlkKToKICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIEJ1aWxkLm9iamVjdHMuZ2V0KGJ1aWxkX2lk
PWJ1aWxkX2lkKQotICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gQnVpbGQub2Jq
ZWN0cy5nZXQodWlkPXVpZCkKKyAgICAgICAgZXhjZXB0IEJ1aWxkLkRvZXNOb3RFeGlzdDoKICAg
ICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9idWlsZGJvdGluc3RhbmNl
LnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90
aW5zdGFuY2UucHkKaW5kZXggNjAzYjViMDVhY2MuLmM3YTE3ODMzNTI1IDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGRib3RpbnN0YW5j
ZS5weQorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVp
bGRib3RpbnN0YW5jZS5weQpAQCAtMjIsOCArMjIsMTIgQEAKIAogZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCB1bmljb2RlX2xpdGVyYWxzCiAKK2ltcG9ydCBsb2dnaW5nCisKIGZyb20gZGphbmdvLmRi
IGltcG9ydCBtb2RlbHMKIAorX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCiAK
IGNsYXNzIEJ1aWxkYm90SW5zdGFuY2UobW9kZWxzLk1vZGVsKToKICAgICBpbnN0YW5jZV9pZCA9
IG1vZGVscy5BdXRvRmllbGQocHJpbWFyeV9rZXk9VHJ1ZSkKQEAgLTM0LDMgKzM4LDE4IEBAIGNs
YXNzIEJ1aWxkYm90SW5zdGFuY2UobW9kZWxzLk1vZGVsKToKIAogICAgIGRlZiBfX3N0cl9fKHNl
bGYpOgogICAgICAgICByZXR1cm4gJ3t9X3t9Jy5mb3JtYXQoc2VsZi5pbnN0YW5jZV9pZCwgc2Vs
Zi5ob3N0bmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBnZXRfaW5zdGFuY2VfaWQo
Y2xzLCBob3N0bmFtZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBCdWlsZGJv
dEluc3RhbmNlLm9iamVjdHMuZ2V0KGhvc3RuYW1lPWhvc3RuYW1lLCBhY3RpdmU9VHJ1ZSkuaW5z
dGFuY2VfaWQKKyAgICAgICAgZXhjZXB0IEJ1aWxkYm90SW5zdGFuY2UuRG9lc05vdEV4aXN0Ogor
ICAgICAgICAgICAgaW5zdGFuY2UgPSBCdWlsZGJvdEluc3RhbmNlKGhvc3RuYW1lPWhvc3RuYW1l
KQorICAgICAgICAgICAgaW5zdGFuY2Uuc2F2ZSgpCisgICAgICAgICAgICBfbG9nLmluZm8oJ0Ny
ZWF0ZWQgbmV3IGJ1aWxkYm90IGluc3RhbmNlIGlkIHt9IGZvciBob3N0bmFtZToge30nLmZvcm1h
dChpbnN0YW5jZS5pbnN0YW5jZV9pZCwgaG9zdG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGlu
c3RhbmNlLmluc3RhbmNlX2lkCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X3VpZChj
bHMsIGhvc3RuYW1lLCBidWlsZF9vcl9zdGVwX2lkKToKKyAgICAgICAgaW5zdGFuY2VfaWQgPSBC
dWlsZGJvdEluc3RhbmNlLmdldF9pbnN0YW5jZV9pZChob3N0bmFtZSkKKyAgICAgICAgcmV0dXJu
ICd7fV97fScuZm9ybWF0KGluc3RhbmNlX2lkLCBidWlsZF9vcl9zdGVwX2lkKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL3N0ZXAucHkgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weQppbmRleCAw
ODEyZmVlOGVmNi4uOWIzODBhY2Q2ZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1hcHAvZXdzL21vZGVscy9zdGVwLnB5CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1hcHAvZXdzL21vZGVscy9zdGVwLnB5CkBAIC0yNywxNCArMjcsMTUgQEAgaW1wb3J0
IGxvZ2dpbmcKIGZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKIGZyb20gZXdzLmNvbmZpZyBp
bXBvcnQgRVJSX1VORVhQRUNURUQsIFNVQ0NFU1MKIGZyb20gZXdzLm1vZGVscy5idWlsZCBpbXBv
cnQgQnVpbGQKK2Zyb20gZXdzLm1vZGVscy5idWlsZGJvdGluc3RhbmNlIGltcG9ydCBCdWlsZGJv
dEluc3RhbmNlCiBpbXBvcnQgZXdzLmNvbW1vbi51dGlsIGFzIHV0aWwKIAogX2xvZyA9IGxvZ2dp
bmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIFN0ZXAobW9kZWxzLk1vZGVsKToKLSAg
ICBzdGVwX2lkID0gbW9kZWxzLkludGVnZXJGaWVsZChwcmltYXJ5X2tleT1UcnVlKQotICAgIGJ1
aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkK
KyAgICB1aWQgPSBtb2RlbHMuVGV4dEZpZWxkKHByaW1hcnlfa2V5PVRydWUpCisgICAgYnVpbGRf
dWlkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwg
ZGJfY29sdW1uPSdidWlsZF91aWQnKQogICAgIHJlc3VsdCA9IG1vZGVscy5JbnRlZ2VyRmllbGQo
bnVsbD1UcnVlLCBibGFuaz1UcnVlKQogICAgIHN0YXRlX3N0cmluZyA9IG1vZGVscy5UZXh0Rmll
bGQoKQogICAgIHN0YXJ0ZWRfYXQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSwgYmxh
bms9VHJ1ZSkKQEAgLTQzLDQ0ICs0NCw0NCBAQCBjbGFzcyBTdGVwKG1vZGVscy5Nb2RlbCk6CiAg
ICAgbW9kaWZpZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQogCiAgICAg
ZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZi5zdGVwX2lkKQorICAg
ICAgICByZXR1cm4gc3RyKHNlbGYudWlkKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNh
dmVfc3RlcChjbHMsIHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3Rh
cnRlZF9hdCwgY29tcGxldGVfYXQ9Tm9uZSk6CisgICAgZGVmIHNhdmVfc3RlcChjbHMsIGhvc3Ru
YW1lLCBzdGVwX2lkLCBidWlsZF9pZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQs
IGNvbXBsZXRlX2F0PU5vbmUpOgogICAgICAgICBpZiBub3QgU3RlcC5pc192YWxpZF9yZXN1bHQo
c3RlcF9pZCwgYnVpbGRfaWQsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21w
bGV0ZV9hdCk6CiAgICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQRUNURUQKIAotICAgICAgICBz
dGVwID0gU3RlcC5nZXRfZXhpc3Rpbmdfc3RlcChzdGVwX2lkKQorICAgICAgICBzdGVwX3VpZCA9
IEJ1aWxkYm90SW5zdGFuY2UuZ2V0X3VpZChob3N0bmFtZSwgc3RlcF9pZCkKKyAgICAgICAgYnVp
bGRfdWlkID0gQnVpbGRib3RJbnN0YW5jZS5nZXRfdWlkKGhvc3RuYW1lLCBidWlsZF9pZCkKKwor
ICAgICAgICBzdGVwID0gU3RlcC5nZXRfZXhpc3Rpbmdfc3RlcChzdGVwX3VpZCkKICAgICAgICAg
aWYgc3RlcDoKICAgICAgICAgICAgICMgSWYgdGhlIHN0ZXAgZGF0YSBpcyBhbHJlYWR5IHByZXNl
bnQgaW4gZGF0YWJhc2UsIHVwZGF0ZSBpdCwgZS5nLjogc3RlcCBjb21wbGV0ZSBldmVudC4KLSAg
ICAgICAgICAgIHJldHVybiBTdGVwLnVwZGF0ZV9zdGVwKHN0ZXAsIHN0ZXBfaWQsIGJ1aWxkX2lk
LCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpCisgICAgICAg
ICAgICByZXR1cm4gU3RlcC51cGRhdGVfc3RlcChzdGVwLCBzdGVwX3VpZCwgYnVpbGRfdWlkLCBy
ZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpCiAKICAgICAgICAg
IyBTYXZlIHRoZSBuZXcgc3RlcCBkYXRhLCBlLmcuOiBzdGVwIHN0YXJ0IGV2ZW50LgotICAgICAg
ICBTdGVwKHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9h
dCwgY29tcGxldGVfYXQpLnNhdmUoKQotICAgICAgICBfbG9nLmRlYnVnKCdTYXZlZCBzdGVwIHt9
IGluIGRhdGFiYXNlIGZvciBidWlsZDoge30nLmZvcm1hdChzdGVwX2lkLCBidWlsZF9pZCkpCisg
ICAgICAgIFN0ZXAoc3RlcF91aWQsIGJ1aWxkX3VpZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0
YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KS5zYXZlKCkKKyAgICAgICAgX2xvZy5kZWJ1ZygnU2F2ZWQg
c3RlcCB7fSBpbiBkYXRhYmFzZSBmb3IgYnVpbGQ6IHt9Jy5mb3JtYXQoc3RlcF91aWQsIGJ1aWxk
X3VpZCkpCiAgICAgICAgIHJldHVybiBTVUNDRVNTCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgdXBkYXRlX3N0ZXAoY2xzLCBzdGVwLCBzdGVwX2lkLCBidWlsZF9pZCwgcmVzdWx0LCBzdGF0
ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KToKLSAgICAgICAgaWYgc3RlcC5zdGVw
X2lkICE9IHN0ZXBfaWQ6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCdzdGVwX2lkIHt9IGRvZXMg
bm90IG1hdGNoIHdpdGggc3RlcF9pZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoc3Rl
cC5zdGVwX2lkLCBzdGVwX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAot
ICAgICAgICBpZiBzdGVwLmJ1aWxkX2lkICE9IGJ1aWxkX2lkOgotICAgICAgICAgICAgX2xvZy5l
cnJvcignYnVpbGRfaWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBidWlsZF9pZCB7fS4gSWdub3Jp
bmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC5idWlsZF9pZCwgYnVpbGRfaWQpKQorICAgIGRlZiB1
cGRhdGVfc3RlcChjbHMsIHN0ZXAsIHN0ZXBfdWlkLCBidWlsZF91aWQsIHJlc3VsdCwgc3RhdGVf
c3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCk6CisgICAgICAgIGlmIHN0ZXAudWlkICE9
IHN0ZXBfdWlkOgorICAgICAgICAgICAgX2xvZy5lcnJvcignc3RlcF91aWQge30gZG9lcyBub3Qg
bWF0Y2ggd2l0aCBzdGVwX3VpZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC51
aWQsIHN0ZXBfdWlkKSkKICAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAogICAgICAg
ICBzdGVwLnJlc3VsdCA9IHJlc3VsdAogICAgICAgICBzdGVwLnN0YXRlX3N0cmluZyA9IHN0YXRl
X3N0cmluZwogICAgICAgICBzdGVwLnN0YXJ0ZWRfYXQgPSBzdGFydGVkX2F0CiAgICAgICAgIHN0
ZXAuY29tcGxldGVfYXQgPSBjb21wbGV0ZV9hdAogICAgICAgICBzdGVwLnNhdmUodXBkYXRlX2Zp
ZWxkcz1bJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9h
dCcsICdtb2RpZmllZCddKQotICAgICAgICBfbG9nLmluZm8oJ1VwZGF0ZWQgc3RlcCB7fSBpbiBk
YXRhYmFzZSBmb3IgYnVpbGQ6IHt9Jy5mb3JtYXQoc3RlcF9pZCwgYnVpbGRfaWQpKQorICAgICAg
ICBfbG9nLmluZm8oJ1VwZGF0ZWQgc3RlcCB7fSBpbiBkYXRhYmFzZSBmb3IgYnVpbGQ6IHt9Jy5m
b3JtYXQoc3RlcF91aWQsIGJ1aWxkX3VpZCkpCiAgICAgICAgIHJldHVybiBTVUNDRVNTCiAKICAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X2V4aXN0aW5nX3N0ZXAoY2xzLCBzdGVwX2lkKToK
KyAgICBkZWYgZ2V0X2V4aXN0aW5nX3N0ZXAoY2xzLCB1aWQpOgogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICByZXR1cm4gU3RlcC5vYmplY3RzLmdldChzdGVwX2lkPXN0ZXBfaWQpCi0gICAgICAg
IGV4Y2VwdDoKKyAgICAgICAgICAgIHJldHVybiBTdGVwLm9iamVjdHMuZ2V0KHVpZD11aWQpCisg
ICAgICAgIGV4Y2VwdCBTdGVwLkRvZXNOb3RFeGlzdDoKICAgICAgICAgICAgIHJldHVybiBOb25l
CiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL3ZpZXdzL3Jlc3VsdHMucHkgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5CmluZGV4IGRlMDI0OWIxNjQxLi42ZTc2NzMxMzBk
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3Mv
cmVzdWx0cy5weQorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3
cy9yZXN1bHRzLnB5CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIFJlc3VsdHMoVmlldyk6CiAgICAg
ICAgIGlmIG5vdCBwYXRjaF9pZCBvciBwYXRjaF9pZCA8IDE6CiAgICAgICAgICAgICByZXR1cm4g
SHR0cFJlc3BvbnNlKCJJbnZhbGlkIHBhdGNoIGlkOiB7fS4iLmZvcm1hdChwYXRjaF9pZCkpCiAK
LSAgICAgICAgQnVpbGQuc2F2ZV9idWlsZChwYXRjaF9pZD1pbnQocGF0Y2hfaWQpLCBidWlsZF9p
ZD1kYXRhWydidWlsZF9pZCddLCBidWlsZGVyX2lkPWRhdGFbJ2J1aWxkZXJfaWQnXSwgYnVpbGRl
cl9uYW1lPWRhdGFbJ2J1aWxkZXJfbmFtZSddLAorICAgICAgICBCdWlsZC5zYXZlX2J1aWxkKHBh
dGNoX2lkPWludChwYXRjaF9pZCksIGhvc3RuYW1lPWRhdGFbJ2hvc3RuYW1lJ10sIGJ1aWxkX2lk
PWRhdGFbJ2J1aWxkX2lkJ10sIGJ1aWxkZXJfaWQ9ZGF0YVsnYnVpbGRlcl9pZCddLCBidWlsZGVy
X25hbWU9ZGF0YVsnYnVpbGRlcl9uYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgYnVpbGRlcl9k
aXNwbGF5X25hbWU9ZGF0YVsnYnVpbGRlcl9kaXNwbGF5X25hbWUnXSwgbnVtYmVyPWRhdGFbJ251
bWJlciddLCByZXN1bHQ9ZGF0YVsncmVzdWx0J10sCiAgICAgICAgICAgICAgICAgICAgc3RhdGVf
c3RyaW5nPWRhdGFbJ3N0YXRlX3N0cmluZyddLCBzdGFydGVkX2F0PWRhdGFbJ3N0YXJ0ZWRfYXQn
XSwgY29tcGxldGVfYXQ9ZGF0YVsnY29tcGxldGVfYXQnXSkKICAgICAgICAgcmV0dXJuIEh0dHBS
ZXNwb25zZSgiU2F2ZWQgZGF0YSBmb3IgcGF0Y2g6IHt9LlxuIi5mb3JtYXQocGF0Y2hfaWQpKQpA
QCAtNjgsNyArNjgsNyBAQCBjbGFzcyBSZXN1bHRzKFZpZXcpOgogICAgICAgICBpZiBub3Qgc2Vs
Zi5pc192YWxpZF9yZXN1bHQoZGF0YSk6CiAgICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNl
KCJJbmNvbXBsZXRlIGRhdGEuIikKIAotICAgICAgICBTdGVwLnNhdmVfc3RlcChzdGVwX2lkPWRh
dGFbJ3N0ZXBfaWQnXSwgYnVpbGRfaWQ9ZGF0YVsnYnVpbGRfaWQnXSwgcmVzdWx0PWRhdGFbJ3Jl
c3VsdCddLAorICAgICAgICBTdGVwLnNhdmVfc3RlcChob3N0bmFtZT1kYXRhWydob3N0bmFtZSdd
LCBzdGVwX2lkPWRhdGFbJ3N0ZXBfaWQnXSwgYnVpbGRfaWQ9ZGF0YVsnYnVpbGRfaWQnXSwgcmVz
dWx0PWRhdGFbJ3Jlc3VsdCddLAogICAgICAgICAgICAgICAgICAgIHN0YXRlX3N0cmluZz1kYXRh
WydzdGF0ZV9zdHJpbmcnXSwgc3RhcnRlZF9hdD1kYXRhWydzdGFydGVkX2F0J10sIGNvbXBsZXRl
X2F0PWRhdGFbJ2NvbXBsZXRlX2F0J10pCiAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoIlNh
dmVkIGRhdGEgZm9yIHN0ZXA6IHt9LlxuIi5mb3JtYXQoZGF0YVsnc3RlcF9pZCddKSkKIApAQCAt
NzcsOSArNzcsOSBAQCBjbGFzcyBSZXN1bHRzKFZpZXcpOgogICAgICAgICAgICAgX2xvZy5lcnJv
cigiSW52YWxpZCBkYXRhIHR5cGU6IHt9Ii5mb3JtYXQoZGF0YVsndHlwZSddKSkKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJlcXVpcmVkX2tleXMgPSB7dSdld3MtYnVpbGQn
OiBbJ3BhdGNoX2lkJywgJ2J1aWxkX2lkJywgJ2J1aWxkZXJfaWQnLCAnYnVpbGRlcl9uYW1lJywg
J2J1aWxkZXJfZGlzcGxheV9uYW1lJywKKyAgICAgICAgcmVxdWlyZWRfa2V5cyA9IHt1J2V3cy1i
dWlsZCc6IFsnaG9zdG5hbWUnLCAncGF0Y2hfaWQnLCAnYnVpbGRfaWQnLCAnYnVpbGRlcl9pZCcs
ICdidWlsZGVyX25hbWUnLCAnYnVpbGRlcl9kaXNwbGF5X25hbWUnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXInLCAncmVzdWx0JywgJ3N0YXRlX3N0
cmluZycsICdzdGFydGVkX2F0JywgJ2NvbXBsZXRlX2F0J10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgdSdld3Mtc3RlcCc6IFsnc3RlcF9pZCcsICdidWlsZF9pZCcsICdyZXN1bHQnLCAnc3Rh
dGVfc3RyaW5nJywgJ3N0YXJ0ZWRfYXQnLCAnY29tcGxldGVfYXQnXX0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICB1J2V3cy1zdGVwJzogWydob3N0bmFtZScsICdzdGVwX2lkJywgJ2J1aWxkX2lk
JywgJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9hdCdd
fQogCiAgICAgICAgIGZvciBrZXkgaW4gcmVxdWlyZWRfa2V5cy5nZXQoZGF0YS5nZXQoJ3R5cGUn
KSk6CiAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGRhdGE6CmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZXZlbnRzLnB5IGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvZXdzLWJ1aWxkL2V2ZW50cy5weQppbmRleCA3MDlkZjQyNTg1OC4uZDcxNWQ3ZTRkNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9ldmVudHMucHkK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2V2ZW50cy5weQpAQCAtNzMs
NyArNzMsNyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZpY2UpOgogCiAgICAg
RVZFTlRfU0VSVkVSX0VORFBPSU5UID0gJ2h0dHA6Ly9ld3Mud2Via2l0LXVhdC5vcmcvcmVzdWx0
cy8nCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZV9wcmVmaXg9JycsIG5hbWU9J0V2ZW50
cycpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXJfaG9zdG5hbWUsIHR5cGVfcHJlZml4
PScnLCBuYW1lPSdFdmVudHMnKToKICAgICAgICAgIiIiCiAgICAgICAgIEluaXRpYWxpemUgdGhl
IEV2ZW50cyBQbHVnaW4uIFNlbmRzIGRhdGEgdG8gZXZlbnQgc2VydmVyIG9uIHNwZWNpZmljIGJ1
aWxkYm90IGV2ZW50cy4KICAgICAgICAgOnBhcmFtIHR5cGVfcHJlZml4OiBbb3B0aW9uYWxdIHBy
ZWZpeCB3ZSB3YW50IHRvIGFkZCB0byB0aGUgJ3R5cGUnIGZpZWxkIG9uIHRoZSBqc29uIHdlIHNl
bmQKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgRXZlbnRzKHNlcnZpY2UuQnVpbGRib3RTZXJ2aWNl
KToKICAgICAgICAgaWYgdHlwZV9wcmVmaXggYW5kIG5vdCB0eXBlX3ByZWZpeC5lbmRzd2l0aCgi
LSIpOgogICAgICAgICAgICAgdHlwZV9wcmVmaXggKz0gIi0iCiAgICAgICAgIHNlbGYudHlwZV9w
cmVmaXggPSB0eXBlX3ByZWZpeAorICAgICAgICBzZWxmLm1hc3Rlcl9ob3N0bmFtZSA9IG1hc3Rl
cl9ob3N0bmFtZQogCiAgICAgZGVmIHNlbmREYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBhZ2Vu
dCA9IEFnZW50KHJlYWN0b3IpCkBAIC0xMTUsNiArMTE2LDcgQEAgY2xhc3MgRXZlbnRzKHNlcnZp
Y2UuQnVpbGRib3RTZXJ2aWNlKToKICAgICAgICAgZGF0YSA9IHsKICAgICAgICAgICAgICJ0eXBl
Ijogc2VsZi50eXBlX3ByZWZpeCArICJidWlsZCIsCiAgICAgICAgICAgICAic3RhdHVzIjogInN0
YXJ0ZWQiLAorICAgICAgICAgICAgImhvc3RuYW1lIjogc2VsZi5tYXN0ZXJfaG9zdG5hbWUsCiAg
ICAgICAgICAgICAicGF0Y2hfaWQiOiBzZWxmLmdldFBhdGNoSUQoYnVpbGQpLAogICAgICAgICAg
ICAgImJ1aWxkX2lkIjogYnVpbGQuZ2V0KCdidWlsZGlkJyksCiAgICAgICAgICAgICAiYnVpbGRl
cl9pZCI6IGJ1aWxkLmdldCgnYnVpbGRlcmlkJyksCkBAIC0xNDIsNiArMTQ0LDcgQEAgY2xhc3Mg
RXZlbnRzKHNlcnZpY2UuQnVpbGRib3RTZXJ2aWNlKToKICAgICAgICAgZGF0YSA9IHsKICAgICAg
ICAgICAgICJ0eXBlIjogc2VsZi50eXBlX3ByZWZpeCArICJidWlsZCIsCiAgICAgICAgICAgICAi
c3RhdHVzIjogImZpbmlzaGVkIiwKKyAgICAgICAgICAgICJob3N0bmFtZSI6IHNlbGYubWFzdGVy
X2hvc3RuYW1lLAogICAgICAgICAgICAgInBhdGNoX2lkIjogc2VsZi5nZXRQYXRjaElEKGJ1aWxk
KSwKICAgICAgICAgICAgICJidWlsZF9pZCI6IGJ1aWxkLmdldCgnYnVpbGRpZCcpLAogICAgICAg
ICAgICAgImJ1aWxkZXJfaWQiOiBidWlsZC5nZXQoJ2J1aWxkZXJpZCcpLApAQCAtMTYxLDYgKzE2
NCw3IEBAIGNsYXNzIEV2ZW50cyhzZXJ2aWNlLkJ1aWxkYm90U2VydmljZSk6CiAgICAgICAgIGRh
dGEgPSB7CiAgICAgICAgICAgICAidHlwZSI6IHNlbGYudHlwZV9wcmVmaXggKyAic3RlcCIsCiAg
ICAgICAgICAgICAic3RhdHVzIjogInN0YXJ0ZWQiLAorICAgICAgICAgICAgImhvc3RuYW1lIjog
c2VsZi5tYXN0ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgICAic3RlcF9pZCI6IHN0ZXAuZ2V0KCdz
dGVwaWQnKSwKICAgICAgICAgICAgICJidWlsZF9pZCI6IHN0ZXAuZ2V0KCdidWlsZGlkJyksCiAg
ICAgICAgICAgICAicmVzdWx0Ijogc3RlcC5nZXQoJ3Jlc3VsdHMnKSwKQEAgLTE3NSw2ICsxNzks
NyBAQCBjbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZpY2UpOgogICAgICAgICBkYXRh
ID0gewogICAgICAgICAgICAgInR5cGUiOiBzZWxmLnR5cGVfcHJlZml4ICsgInN0ZXAiLAogICAg
ICAgICAgICAgInN0YXR1cyI6ICJmaW5pc2hlZCIsCisgICAgICAgICAgICAiaG9zdG5hbWUiOiBz
ZWxmLm1hc3Rlcl9ob3N0bmFtZSwKICAgICAgICAgICAgICJzdGVwX2lkIjogc3RlcC5nZXQoJ3N0
ZXBpZCcpLAogICAgICAgICAgICAgImJ1aWxkX2lkIjogc3RlcC5nZXQoJ2J1aWxkaWQnKSwKICAg
ICAgICAgICAgICJyZXN1bHQiOiBzdGVwLmdldCgncmVzdWx0cycpLApkaWZmIC0tZ2l0IGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL21hc3Rlci5jZmcgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYnVpbGQvbWFzdGVyLmNmZwppbmRleCA1ZWMwZDAzMmI3Mi4uYjMwODAy
ZTZjYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9tYXN0
ZXIuY2ZnCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9tYXN0ZXIuY2Zn
CkBAIC0yNiw1ICsyNiw1IEBAIGNbJ2J1aWxkYm90TmV0VXNhZ2VEYXRhJ10gPSBOb25lCiAKIGxv
YWRDb25maWcubG9hZEJ1aWxkZXJDb25maWcoYywgdXNlX2xvY2FsaG9zdF93b3JrZXI9aXNfdGVz
dF9tb2RlX2VuYWJsZWQpCiAKLWV2ZW50X3JlcG9ydGVyID0gRXZlbnRzKHR5cGVfcHJlZml4PSdl
d3MnKQorZXZlbnRfcmVwb3J0ZXIgPSBFdmVudHMobWFzdGVyX2hvc3RuYW1lPSdld3MtYnVpbGQu
d2Via2l0Lm9yZycsIHR5cGVfcHJlZml4PSdld3MnKQogY1snc2VydmljZXMnXSA9IFtldmVudF9y
ZXBvcnRlcl0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBiMjI0ZTY2MTM1MC4uMjE2ZTZjN2Q3YWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0wMi0yOCAgQWFr
YXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2V3cy1hcHBdIFVw
ZGF0ZSBwcmltYXJ5IGtleXMgZm9yIGhhbmRsaW5nIG11bHRpcGxlIEJ1aWxkYm90IGluc3RhbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MTIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEg
bmV3IHByaW1hcnkga2V5IHVpZCBmb3IgYnVpbGQgYW5kIHN0ZXAgdGFibGVzLiBQcmV2aW91cyBw
cmltYXJ5IGtleXMgYnVpbGRfaWQgYW5kIHN0ZXBfaWQKKyAgICAgICAgd2VyZSBub3QgZW5vdWdo
IHRvIGhhbmRsZSBtdWx0aXBsZSBidWlsZGJvdCBpbnN0YW5jZXMuIFRoaXMgbmV3IHByaW1hcnkg
a2V5IHVpZCB3b3VsZCBiZSBnZW5lcmF0ZWQKKyAgICAgICAgYnkgYSBjb21iaW5hdGlvbiBvZiBi
dWlsZGJvdF9pbnN0YW5jZV9pZCBhbmQgY3VycmVudCBwcmltYXJ5IGtleS4gZS5nLjogYnVpbGRi
b3RfaW5zdGFuY2VfaWQgKyBidWlsZF9pZAorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkLnB5OiBBZGRlZCBuZXcgcHJpbWFyeSBrZXkgdWlkLgor
ICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9zdGVwLnB5OiBE
aXR0by4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVp
bGRib3RpbnN0YW5jZS5weTogR2VuZXJhdGUgdWlkIGFuZCBpbnN0YW5jZV9pZC4KKyAgICAgICAg
KiBCdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5OiBVcGRhdGVk
IHRvIHJlY2VpdmUgaG9zdG5hbWUgaW4gZXZlbnRzLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBw
b3J0L2V3cy1idWlsZC9ldmVudHMucHk6IFNlbmQgaG9zdG5hbWUgYWxvbmctd2l0aCBldmVudHMu
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL21hc3Rlci5jZmc6IERpdHRv
LgorCiAyMDE5LTAyLTI4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZXdzLWFwcF0gVXBkYXRlIG1ldGhvZCB0byBzYXZlIGJ1aWxkIHRvIGhhbmRsZSBi
dWlsZGVyX2Rpc3BsYXlfbmFtZQotLSAKMi4yMC4xIChBcHBsZSBHaXQtMTE2KQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>