<?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>101066</bug_id>
          
          <creation_ts>2012-11-02 09:14:33 -0700</creation_ts>
          <short_desc>Web Inspector: Fix jscompiler cast syntax</short_desc>
          <delta_ts>2014-12-12 13:42:20 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>757251</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-02 09:14:33 -0700</bug_when>
    <thetext>Casts should be in the form of &quot;/** @type {TypeName} */ (expr)&quot; instead of &quot;/** @type {TypeName} */ expr&quot;.
Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757252</commentid>
    <comment_count>1</comment_count>
      <attachid>172078</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-02 09:15:51 -0700</bug_when>
    <thetext>Created attachment 172078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758388</commentid>
    <comment_count>2</comment_count>
      <attachid>172305</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-05 03:17:22 -0800</bug_when>
    <thetext>Created attachment 172305
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758392</commentid>
    <comment_count>3</comment_count>
      <attachid>172305</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-05 03:30:34 -0800</bug_when>
    <thetext>Comment on attachment 172305
Rebased

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

&gt; Source/WebCore/inspector/front-end/MemoryStatistics.js:412
&gt; +        var anchor = /** @type {Element} */ (this._containerAnchor.nextSibling);

Why did this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758413</commentid>
    <comment_count>4</comment_count>
      <attachid>172305</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-05 04:09:36 -0800</bug_when>
    <thetext>Comment on attachment 172305
Rebased

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

&gt;&gt; Source/WebCore/inspector/front-end/MemoryStatistics.js:412
&gt;&gt; +        var anchor = /** @type {Element} */ (this._containerAnchor.nextSibling);
&gt; 
&gt; Why did this change?

/** @type {Element} */ === /** @type {Element|null} */ === /** @type {Element?} */
these are equal notations for jscompiler. we use the first one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758417</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-05 04:19:45 -0800</bug_when>
    <thetext>&gt; /** @type {Element} */ === /** @type {Element|null} */ === /** @type {Element?} */
&gt; these are equal notations for jscompiler. we use the first one.

Is there a way for js compiler to treat things as non-nullable by default and only allow nullable when declared as &quot;Element?&quot; ? That&apos;s the semantics we were following.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758421</commentid>
    <comment_count>6</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-05 04:30:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; /** @type {Element} */ === /** @type {Element|null} */ === /** @type {Element?} */
&gt; &gt; these are equal notations for jscompiler. we use the first one.
&gt; 
&gt; Is there a way for js compiler to treat things as non-nullable by default and only allow nullable when declared as &quot;Element?&quot; ? That&apos;s the semantics we were following.

We also use explicit non-nullable notation in the code: /** @type {!Element} */
Don&apos;t know though if it&apos;s possible to change the default compiler&apos;s behavior.

FYI, an excerpt for the doc https://developers.google.com/closure/compiler/docs/js-for-compiler#null:

&quot;All object types are nullable by default whether or not they are declared with the Nullable operator. An object type is defined as anything except a function, string, number, or boolean. To make an object type non-nullable, use the Non-nullable operator.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758430</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-05 04:55:20 -0800</bug_when>
    <thetext>&gt; We also use explicit non-nullable notation in the code: /** @type {!Element} */
&gt; Don&apos;t know though if it&apos;s possible to change the default compiler&apos;s behavior.

Looks like an oversight to me.

&gt; FYI, an excerpt for the doc https://developers.google.com/closure/compiler/docs/js-for-compiler#null:
&gt; 
&gt; &quot;All object types are nullable by default whether or not they are declared with the Nullable operator. An object type is defined as anything except a function, string, number, or boolean. To make an object type non-nullable, use the Non-nullable operator.&quot;

In either case, the one putting Element|null there was adding a bit of information that you are about to lose. Before your change, we could convert {Everything} to {!Everything} and {Everything|null} into {Everything}. After your change, we will not longer be able distinguish between the two. I&apos;d rather revert it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758438</commentid>
    <comment_count>8</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-05 05:11:59 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; We also use explicit non-nullable notation in the code: /** @type {!Element} */
&gt; &gt; Don&apos;t know though if it&apos;s possible to change the default compiler&apos;s behavior.
&gt; 
&gt; Looks like an oversight to me.
&gt; 
&gt; &gt; FYI, an excerpt for the doc https://developers.google.com/closure/compiler/docs/js-for-compiler#null:
&gt; &gt; 
&gt; &gt; &quot;All object types are nullable by default whether or not they are declared with the Nullable operator. An object type is defined as anything except a function, string, number, or boolean. To make an object type non-nullable, use the Non-nullable operator.&quot;
&gt; 
&gt; In either case, the one putting Element|null there was adding a bit of information that you are about to lose. Before your change, we could convert {Everything} to {!Everything} and {Everything|null} into {Everything}. After your change, we will not longer be able distinguish between the two. I&apos;d rather revert it.

Seems like this is the only such place in the whole WebKit JS code :)
I searched for &quot;/\*\*\s*@type\s*\{\w+\|null\}&quot; in http://code.google.com/p/chromium/source/search

I also tried: /\*\*\s*@type\s*\{\??\w+(\|null|\?)\}

If you still insist, I will revert it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758439</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-05 05:18:28 -0800</bug_when>
    <thetext>&gt; Seems like this is the only such place in the whole WebKit JS code :)

What do you mean whole WebKit JS code? Inspector is the only component that is using compiler.

&gt; If you still insist, I will revert it.

Your change is claiming to &quot;Fix jscompiler cast syntax&quot;, so I think it should do only that. If you want to fix the nullable ambiguity, it should be done in a separate change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758444</commentid>
    <comment_count>10</comment_count>
      <attachid>172319</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-11-05 05:26:04 -0800</bug_when>
    <thetext>Created attachment 172319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758473</commentid>
    <comment_count>11</comment_count>
      <attachid>172319</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 06:15:42 -0800</bug_when>
    <thetext>Comment on attachment 172319
Patch

Clearing flags on attachment: 172319

Committed r133463: &lt;http://trac.webkit.org/changeset/133463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054951</commentid>
    <comment_count>12</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-12 13:40:02 -0800</bug_when>
    <thetext>Closing as invalid, as this bug pertains to the old inspector UI and/or its tests.
Please file a new bug (https://www.webkit.org/new-inspector-bug) if the bug/feature/issue is still relevant to WebKit trunk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172078</attachid>
            <date>2012-11-02 09:15:51 -0700</date>
            <delta_ts>2012-11-05 03:17:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101066-20121102201409.patch</filename>
            <type>text/plain</type>
            <size>95192</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRlMjRkOGRhZTE3Nzll
OWM0ZDhkNWZlOThhNzRhMTcwYzZmYjY0Yy4uMDA4ZDA1YjMyYmNiZTdlZjg1YTFmMmRkZTM0NjQ3
ODFiYWQxN2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxMi0xMS0wMiAgQW5k
cmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGaXgganNjb21waWxlciBjYXN0IHN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FzdHMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mICIv
KiogQHR5cGUge1R5cGVOYW1lfSAqLyAoZXhwcikiIGluc3RlYWQgb2YgIi8qKiBAdHlwZSB7VHlw
ZU5hbWV9ICovIGV4cHIiLgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1vZGVsLnByb3RvdHlwZS5fZnJhbWVOYXZpZ2F0ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5wcm90b3R5cGUuX2ZyYW1l
RGV0YWNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBl
Ll9vblJlcXVlc3RTdGFydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVy
Vmlldy5wcm90b3R5cGUuX29uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlRm9y
bWF0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZS5fbG9jYXRpb25V
cGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9icmVha3BvaW50QWRkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUuX2RvY3VtZW50VXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnBy
b3RvdHlwZS5fbmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFt
ZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlwZS5fcmVnaW9uTGF5b3V0VXBkYXRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlw
ZS5fc2VsZWN0ZWROb2RlQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb2Zp
bGVIZWFkZXIucHJvdG90eXBlLmNyZWF0ZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkxpdmVMb2NhdGlvbi5wcm90b3R5cGUudWlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZUNvbXB1dGVkU3R5bGVQYXlsb2FkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJhd0xv
Y2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlw
dE1hcHBpbmcucHJvdG90eXBlLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLl9mcmFtZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2ZyYW1lUmVtb3ZlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Eb2N1
bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmRpZFNldEJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnNl
dEJyZWFrcG9pbnRCeVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5w
cm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlw
ZS5zZXRCcmVha3BvaW50QnlTb3VyY2VJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlLmdldCBsb2NhdGlvbik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcGFyc2VkU2NyaXB0U291
cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RpcmVjdG9yeUNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fc29ydCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl91cGRhdGVC
cmVhZGNydW1iSWZOZWVkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbERlc2NyaXB0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bERlc2NyaXB0b3IucHJvdG90eXBlLmFwcGVuZEFwcGxpY2FibGVJdGVtcyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoLmdl
dCBub2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkFk
ZFJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlLl9oYW5kbGVPcGVuVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25TZXRSZXNvdXJjZUNvbnRlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlm
eVJlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUuX25vdGlmeVVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlmeVJlcXVlc3RGaW5p
c2hlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWV0YWRh
dGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LkZpbGVD
b250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9mcmFtZUFkZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fZnJhbWVEZXRhY2hl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbnNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50
cnlUcmVlRWxlbWVudC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IYW5kbGVyUmVnaXN0cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGFuZGxl
clJlZ2lzdHJ5LnByb3RvdHlwZS5fYXBwZW5kSHJlZkl0ZW1zKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdExvYWRlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlLndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUJhc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5sb2FkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX3NuYXBzaG90UmVjZWl2ZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZURl
dGFjaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZS5fa2V5Q29sdW1u
SGVhZGVyRnJhZ21lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VG
cmFtZS5wcm90b3R5cGUuX29uRm9ybWF0dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9icmVh
a3BvaW50UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VSZW1vdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
Ll9oYW5kbGVHdXR0ZXJDbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZUZyYW1lLnByb3RvdHlwZS5fY29udGludWVUb0xpbmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL05hdmlnYXRvclZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
Vmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVdvcmtpbmdDb3B5
Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUu
X3VpU291cmNlQ29kZVdvcmtpbmdDb3B5Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlRm9ybWF0dGVkQ2hhbmdlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlLl9vblJlcXVlc3RTdGFydGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fY2FjaGVEaXNhYmxlZFNldHRp
bmdDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX29uUmVx
dWVzdFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZS5fbWFpbkZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwucHJvdG90eXBlLnJldmVhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsLnByb3RvdHlwZS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUuX3BhcnNlZFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyLnByb3RvdHlwZS5fcmVzb3VyY2VBZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFBvcG92ZXJIZWxwZXIucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2Jq
ZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUuX3Nob3dPYmplY3RQb3BvdmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVy
LnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNj
cmlwdE1hcHBpbmcucHJvdG90eXBlLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdEZpbGUucHJvdG90eXBlLl93b3JraW5n
Q29weUNvbW1pdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxl
LnByb3RvdHlwZS5fd29ya2luZ0NvcHlDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fb25SZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX2RhdGFiYXNlQWRk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fZG9t
U3RvcmFnZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2luZGV4ZWREQkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUuX2luZGV4ZWREQlJlbW92ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZS5faW5kZXhlZERCTG9h
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fZmlsZVN5c3RlbUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fZmlsZVN5c3RlbVJlbW92ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9maWxl
U3lzdGVtVHJlZUVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFJl
c3VsdHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJvdG90eXBlLl90cmF2ZXJzZU5leHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJv
dG90eXBlLl90cmF2ZXJzZVByZXZpb3VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1JldmlzaW9uSGlzdG9yeVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25I
aXN0b3J5Vmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChyYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNo
YWluU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NvcGVDaGFpblNpZGVi
YXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbi5wcm90b3R5
cGUudWlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3Jt
YXR0ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlw
ZS5nZXQgX3dvcmtlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlT
b3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX2VkaXRvckNsb3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fZWRpdG9yU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3NjcmlwdFNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmNhblNlYXJjaEFuZFJlcGxhY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVwbGFjZVNl
bGVjdGlvbldpdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUucmVwbGFjZUFsbFdpdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuc2V0IF9maWxlUmVuYW1lZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYXBwZW5kVUlTb3VyY2VDb2RlSXRlbXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsRGVzY3JpcHRvci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLnByb3RvdHlwZS5hcHBl
bmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U291cmNlTWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUuX3VpU291cmNlQ29kZUFkZGVkVG9X
b3Jrc3BhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29u
dGFpbmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5w
cm90b3R5cGUuX3Njcm9sbENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVk
aXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3NlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3RhYkNsb3NlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdGFi
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5w
cm90b3R5cGUuX3VpU291cmNlQ29kZVRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlV29ya2luZ0Nv
cHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIu
cHJvdG90eXBlLl91aVNvdXJjZUNvZGVXb3JraW5nQ29weUNvbW1pdHRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2Rl
Rm9ybWF0dGVkQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWxMb2FkZXIucHJv
dG90eXBlLndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29k
ZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZUZyYW1lLnByb3Rv
dHlwZS5fb25Gb3JtYXR0ZWRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVy
LnByb3RvdHlwZS5fZnJhbWVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5w
cm90b3R5cGUuX2ZpbGVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5wcm90
b3R5cGUuX2ZpbGVSZW1vdmVkKToKKwogMjAxMi0xMS0wMiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFs
YXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIHNldFBsYXRmb3JtU3RyYXRlZ2ll
cyBhbHdheXMgYXNzZXJ0cyBhZnRlciByMTMyNzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKaW5k
ZXggMzI5NWZjNGM5MDc3OTQxODFkNTc3YjlkYzQwYjE4NWY0ODk4YmIwYy4uMDZkNjlmNDJhYzlk
ODRiMmZkNGU5OGU3MzFkMTU0YWQ1NzJiMGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwpA
QCAtMTI0LDcgKzEyNCw3IEBAIHZhciBUeXBlVXRpbHMgPSB7CiAgICAgICAgIHZhciBjb250ZXh0
ID0gVHlwZVV0aWxzLl9kdW1teUNhbnZhczJkQ29udGV4dEluc3RhbmNlOwogICAgICAgICBpZiAo
IWNvbnRleHQpIHsKICAgICAgICAgICAgIHZhciBjYW52YXMgPSBpbnNwZWN0ZWRXaW5kb3cuZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgICAgICAgICBjb250ZXh0ID0gLyoq
IEB0eXBlIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9ICovIFJlc291cmNlLndyYXBwZWRPYmpl
Y3QoY2FudmFzLmdldENvbnRleHQoIjJkIikpOworICAgICAgICAgICAgY29udGV4dCA9IC8qKiBA
dHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyAoUmVzb3VyY2Uud3JhcHBlZE9iamVj
dChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSkpOwogICAgICAgICAgICAgVHlwZVV0aWxzLl9kdW1t
eUNhbnZhczJkQ29udGV4dEluc3RhbmNlID0gY29udGV4dDsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gY29udGV4dDsKQEAgLTE3NSw3ICsxNzUsNyBAQCBmdW5jdGlvbiBTdGFja1RyYWNlVjgo
c3RhY2tUcmFjZUxpbWl0LCB0b3BNb3N0RnVuY3Rpb25Ub0lnbm9yZSkKICAgICBpZiAodHlwZW9m
IHN0YWNrVHJhY2VMaW1pdCA9PT0gIm51bWJlciIpCiAgICAgICAgIEVycm9yLnN0YWNrVHJhY2VM
aW1pdCA9IHN0YWNrVHJhY2VMaW1pdDsKIAotICAgIHRoaXMuX2Vycm9yID0gLyoqIEB0eXBlIHt7
c3RhY2s6IEFycmF5fX0gKi8ge307CisgICAgdGhpcy5fZXJyb3IgPSAvKiogQHR5cGUge3tzdGFj
azogQXJyYXl9fSAqLyAoe30pOwogICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMuX2Vy
cm9yLCB0b3BNb3N0RnVuY3Rpb25Ub0lnbm9yZSB8fCBhcmd1bWVudHMuY2FsbGVlKTsKIAogICAg
IEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IG9sZFN0YWNrVHJhY2VMaW1pdDsKQEAgLTM3Nyw3ICsz
NzcsNyBAQCBDYWxsLnByb3RvdHlwZSA9IHsKICAgICB0b1JlcGxheWFibGU6IGZ1bmN0aW9uKGNh
Y2hlKQogICAgIHsKICAgICAgICAgdGhpcy5mcmVlemUoKTsKLSAgICAgICAgdmFyIHRoaXNPYmpl
Y3QgPSAvKiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJjZX0gKi8gUmVzb3VyY2UudG9SZXBsYXlh
YmxlKHRoaXMuX3RoaXNPYmplY3QsIGNhY2hlKTsKKyAgICAgICAgdmFyIHRoaXNPYmplY3QgPSAv
KiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJjZX0gKi8gKFJlc291cmNlLnRvUmVwbGF5YWJsZSh0
aGlzLl90aGlzT2JqZWN0LCBjYWNoZSkpOwogICAgICAgICB2YXIgcmVzdWx0ID0gUmVzb3VyY2Uu
dG9SZXBsYXlhYmxlKHRoaXMuX3Jlc3VsdCwgY2FjaGUpOwogICAgICAgICB2YXIgYXJncyA9IHRo
aXMuX2FyZ3MubWFwKGZ1bmN0aW9uKG9iaikgewogICAgICAgICAgICAgcmV0dXJuIFJlc291cmNl
LnRvUmVwbGF5YWJsZShvYmosIGNhY2hlKTsKQEAgLTYxOSw3ICs2MTksNyBAQCBSZXNvdXJjZS5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdG9SZXBsYXlhYmxlOiBmdW5jdGlvbihjYWNoZSkK
ICAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSAvKiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJj
ZX0gKi8gY2FjaGUuZ2V0KHRoaXMuX2lkKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IC8qKiBAdHlw
ZSB7UmVwbGF5YWJsZVJlc291cmNlfSAqLyAoY2FjaGUuZ2V0KHRoaXMuX2lkKSk7CiAgICAgICAg
IGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB2YXIgZGF0
YSA9IHsKQEAgLTY1MCw3ICs2NTAsNyBAQCBSZXNvdXJjZS5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgcmVwbGF5OiBmdW5jdGlvbihkYXRhLCBjYWNoZSkKICAgICB7Ci0gICAgICAgIHZhciBy
ZXNvdXJjZSA9IC8qKiBAdHlwZSB7UmVwbGF5YWJsZVJlc291cmNlfSAqLyBjYWNoZS5nZXQoZGF0
YS5pZCk7CisgICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7UmVwbGF5YWJsZVJlc291
cmNlfSAqLyAoY2FjaGUuZ2V0KGRhdGEuaWQpKTsKICAgICAgICAgaWYgKHJlc291cmNlKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc291cmNlOwogICAgICAgICB0aGlzLl9pZCA9IGRhdGEuaWQ7CkBA
IC0yMzc4LDcgKzIzNzgsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMCwgY29udGV4dElkOyBjb250ZXh0SWQgPSBjb250ZXh0SWRzW2ld
OyArK2kpIHsKICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoY29udGV4dElkLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgICAgICBpZiAocmVwbGF5Q29u
dGV4dCkgewotICAgICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gLyoqIEB0eXBlIHtX
ZWJHTFJlbmRlcmluZ0NvbnRleHR9ICovIFJlc291cmNlLndyYXBwZWRPYmplY3QocmVwbGF5Q29u
dGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHJlcGxheUNvbnRleHQgPSAvKiogQHR5cGUge1dl
YkdMUmVuZGVyaW5nQ29udGV4dH0gKi8gKFJlc291cmNlLndyYXBwZWRPYmplY3QocmVwbGF5Q29u
dGV4dCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0yNDA0LDcgKzI0MDQsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciByZXBsYXlDb250ZXh0ID0gb3JpZ2luYWxDb250ZXh0WyJfX3Jl
cGxheUNvbnRleHQiXTsKICAgICAgICAgaWYgKCFyZXBsYXlDb250ZXh0KSB7CiAgICAgICAgICAg
ICB2YXIgY2FudmFzID0gb3JpZ2luYWxDb250ZXh0LmNhbnZhcy5jbG9uZU5vZGUodHJ1ZSk7Ci0g
ICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gLyoqIEB0eXBlIHtDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkR9ICovIFJlc291cmNlLndyYXBwZWRPYmplY3QoY2FudmFzLmdldENvbnRleHQoIjJkIikp
OworICAgICAgICAgICAgcmVwbGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEfSAqLyAoUmVzb3VyY2Uud3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgi
MmQiKSkpOwogICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9yaWdpbmFsQ29udGV4
dCwgIl9fcmVwbGF5Q29udGV4dCIsIHsKICAgICAgICAgICAgICAgICB2YWx1ZTogcmVwbGF5Q29u
dGV4dCwKICAgICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKaW5kZXggYzhhNTY5MGRlY2Qw
OGFmNTcxZTA5NjkwNWY0YjlkODY3ZTRlNmI4My4uYjVkYjk1NWFjMTM0YWE3ODNhNzIzODU2YzIx
ZDdkNTRhMTk5YmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdFNvdXJjZS5qcwpAQCAtNjE0LDcgKzYxNCw3IEBAIEluamVjdGVkU2NyaXB0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIG9iamVjdCA9IHRoaXMuZmluZE9iamVjdEJ5SWQob2JqZWN0
SWQpOwogICAgICAgICBpZiAoIW9iamVjdCB8fCB0aGlzLl9zdWJ0eXBlKG9iamVjdCkgIT09ICJu
b2RlIikKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gLyoqIEB0eXBl
IHtOb2RlfSAqLyBvYmplY3Q7CisgICAgICAgIHJldHVybiAvKiogQHR5cGUge05vZGV9ICovIChv
YmplY3QpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTcwNSw3ICs3MDUsNyBAQCBJbmplY3RlZFNj
cmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmlzUHJpbWl0aXZlVmFsdWUob2Jq
KSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIG9iaiA9IC8qKiBAdHlwZSB7
T2JqZWN0fSAqLyBvYmo7CisgICAgICAgIG9iaiA9IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyAob2Jq
KTsKIAogICAgICAgICAvLyBUeXBlIGlzIG9iamVjdCwgZ2V0IHN1YnR5cGUuCiAgICAgICAgIHZh
ciBzdWJ0eXBlID0gdGhpcy5fc3VidHlwZShvYmopOwpAQCAtNzkyLDcgKzc5Miw3IEBAIEluamVj
dGVkU2NyaXB0LlJlbW90ZU9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1l
LCBmb3JjZVZhbHVlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG9iamVjdCA9
IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyBvYmplY3Q7CisgICAgb2JqZWN0ID0gLyoqIEB0eXBlIHtP
YmplY3R9ICovIChvYmplY3QpOwogCiAgICAgdGhpcy5vYmplY3RJZCA9IGluamVjdGVkU2NyaXB0
Ll9iaW5kKG9iamVjdCwgb2JqZWN0R3JvdXBOYW1lKTsKICAgICB2YXIgc3VidHlwZSA9IGluamVj
dGVkU2NyaXB0Ll9zdWJ0eXBlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzCmluZGV4IGI1
NTI5YTY2NjJiZWJlYmNlMmQ3YTI0OTFjMGMyZTRmZTMwZjlmODEuLjdmNDA4MzA2NTZkM2I1YTRh
MjkzMDQ4MzhmNDIxOTJlZjU3YWJiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZU1vZGVsLmpzCkBAIC01Niw3
ICs1Niw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTW9kZWwuRXZlbnRUeXBlcyA9
IHsKIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTW9kZWwucHJvdG90eXBlID0gewogICAg
IF9mcmFtZU5hdmlnYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZnJh
bWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQu
ZGF0YTsKKyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZy
YW1lKCkpIHsKICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZU5hdmlnYXRlZCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzAsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfZnJhbWVEZXRhY2hlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZy
YW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVu
dC5kYXRhKTsKICAgICAgICAgdGhpcy5fZnJhbWVNYW5pZmVzdFJlbW92ZWQoZnJhbWUuaWQpOwog
ICAgIH0sCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcwppbmRleCA0OGE1OTkwYmE2YmE3ODQ0OWMwZTZhY2Q1
NGM1OWUyOWNmMThkY2ZlLi5iZjZkYjQzN2QxNzUzYmQ5ZTFmMGI1ZWJkM2FlYTYwNzYwNjBhOTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1
bmNoZXJWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVk
aXRMYXVuY2hlclZpZXcuanMKQEAgLTcxLDcgKzcxLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1
bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF9vblJlcXVlc3RTdGFydGVkOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByZXF1ZXN0
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIChldmVudC5kYXRh
KTsKICAgICAgICAgLy8gSWdub3JlIGxvbmctbGl2aW5nIFdlYlNvY2tldHMgZm9yIHRoZSBzYWtl
IG9mIHByb2dyZXNzIGluZGljYXRvciwgYXMgd2Ugd29uJ3QgYmUgd2FpdGluZyB0aGVtIGFueXdh
eS4KICAgICAgICAgaWYgKHJlcXVlc3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlw
ZXMuV2ViU29ja2V0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODEsNyArODEsNyBAQCBXZWJJ
bnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBlID0gewogCiAgICAgX29uUmVxdWVz
dEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0ID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVl
c3R9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgLy8gU2VlIHJlc29yY2VTdGFydGVkIGZvciBk
ZXRhaWxzLgogICAgICAgICBpZiAocmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUeXBlcy5XZWJTb2NrZXQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRl
eCA2OWY1NmMwMDQwYTA0MTZlMTY0MzU2M2JlYTgzNTQ5YWI5NDNiMGVlLi43YWU1MWJlY2Q0Zjk3
NjJiMmQ5MjQ4MGU5MDk4MTAzOTI0MGFmNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAgLTkxLDcgKzkx
LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfdWlTb3VyY2VDb2RlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAo
dWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVz
LlNjcmlwdCB8fCB1aVNvdXJjZUNvZGUuY29udGVudFR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuRG9jdW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3Bv
aW50cyh1aVNvdXJjZUNvZGUpOwogICAgICAgICAgICAgdWlTb3VyY2VDb2RlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZS5FdmVudHMuRm9ybWF0dGVkQ2hhbmdlZCwg
dGhpcy5fdWlTb3VyY2VDb2RlRm9ybWF0dGVkLCB0aGlzKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IF91aVNvdXJjZUNvZGVGb3JtYXR0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhp
cy5fcmVzdG9yZUJyZWFrcG9pbnRzKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIApAQCAtMTEyLDcg
KzExMiw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX3VpU291cmNlQ29kZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAg
ICBpZiAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVR5cGVzLlNjcmlwdCAmJiB1aVNvdXJjZUNvZGUuY29udGVudFR5cGUoKSAhPT0gV2ViSW5zcGVj
dG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmICh1aVNvdXJjZUNvZGUuZGl2ZXJnZWRWZXJzaW9uKQpAQCAtMjcyLDggKzI3Miw4IEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAKICAgICBfYnJlYWtw
b2ludFJlc29sdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBicmVha3Bv
aW50SWQgPSAvKiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkfSAqLyBldmVudC5k
YXRhLmJyZWFrcG9pbnRJZDsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gZXZlbnQuZGF0YS5sb2NhdGlvbjsK
KyAgICAgICAgdmFyIGJyZWFrcG9pbnRJZCA9IC8qKiBAdHlwZSB7RGVidWdnZXJBZ2VudC5CcmVh
a3BvaW50SWR9ICovIChldmVudC5kYXRhLmJyZWFrcG9pbnRJZCk7CisgICAgICAgIHZhciBsb2Nh
dGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICov
IChldmVudC5kYXRhLmxvY2F0aW9uKTsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9i
cmVha3BvaW50Rm9yRGVidWdnZXJJZFticmVha3BvaW50SWRdOwogICAgICAgICBpZiAoIWJyZWFr
cG9pbnQgfHwgYnJlYWtwb2ludC5faXNQcm92aXNpb25hbCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM4NSw3ICszODUsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtw
b2ludC5wcm90b3R5cGUgPSB7CiAgICAgX2xvY2F0aW9uVXBkYXRlZDogZnVuY3Rpb24obG9jYXRp
b24sIHVpTG9jYXRpb24pCiAgICAgewogICAgICAgICB2YXIgc3RyaW5naWZpZWRMb2NhdGlvbiA9
IGxvY2F0aW9uLnNjcmlwdElkICsgIjoiICsgbG9jYXRpb24ubGluZU51bWJlciArICI6IiArIGxv
Y2F0aW9uLmNvbHVtbk51bWJlcjsKLSAgICAgICAgdmFyIG9sZFVJTG9jYXRpb24gPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufSAqLyB0aGlzLl91aUxvY2F0aW9uc1tzdHJpbmdp
ZmllZExvY2F0aW9uXTsKKyAgICAgICAgdmFyIG9sZFVJTG9jYXRpb24gPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5VSUxvY2F0aW9ufSAqLyAodGhpcy5fdWlMb2NhdGlvbnNbc3RyaW5naWZpZWRM
b2NhdGlvbl0pOwogICAgICAgICBpZiAob2xkVUlMb2NhdGlvbikKICAgICAgICAgICAgIHRoaXMu
X2JyZWFrcG9pbnRNYW5hZ2VyLl91aUxvY2F0aW9uUmVtb3ZlZCh0aGlzLCBvbGRVSUxvY2F0aW9u
KTsKICAgICAgICAgaWYgKHRoaXMuX3VpTG9jYXRpb25zWyIiXSkgewpAQCAtNDY3LDcgKzQ2Nyw3
IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZSA9
IHsKICAgICBfc2V0SW5EZWJ1Z2dlcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJh
d0xvY2F0aW9uID0gdGhpcy5fcHJpbWFyeVVJTG9jYXRpb24udWlMb2NhdGlvblRvUmF3TG9jYXRp
b24oKTsKLSAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOworICAgICAg
ICB2YXIgZGVidWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgaWYgKGRlYnVn
Z2VyTW9kZWxMb2NhdGlvbikKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLl9k
ZWJ1Z2dlck1vZGVsLnNldEJyZWFrcG9pbnRCeVNjcmlwdExvY2F0aW9uKGRlYnVnZ2VyTW9kZWxM
b2NhdGlvbiwgdGhpcy5fY29uZGl0aW9uLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOwog
ICAgICAgICBlbHNlCkBAIC01NjAsNyArNTYwLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRN
YW5hZ2VyLlN0b3JhZ2UgPSBmdW5jdGlvbihicmVha3BvaW50TWFuYWdlciwgc2V0dGluZykKICAg
ICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5TdG9yYWdlLkl0ZW0+fSAqLwogICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307CiAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICB2YXIg
YnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLlN0
b3JhZ2UuSXRlbX0gKi8gYnJlYWtwb2ludHNbaV07CisgICAgICAgIHZhciBicmVha3BvaW50ID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuU3RvcmFnZS5JdGVtfSAq
LyAoYnJlYWtwb2ludHNbaV0pOwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1ticmVha3BvaW50
LnNvdXJjZUZpbGVJZCArICI6IiArIGJyZWFrcG9pbnQubGluZU51bWJlcl0gPSBicmVha3BvaW50
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwppbmRleCBhZmE0NTc3OTdkYjYwNzdi
YTZkOGJjZDI1NzZiYzRiNzRlYjhkMGVmLi41NGMwYTg3YzM3ZmQ5YjIyMGNjMzZkNDBkNzc1ZDFh
NjZlNTY0YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC03Myw4ICs3Myw4IEBAIFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0QnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50UmVtb3ZlZChldmVudCk7CiAKLSAgICAg
ICAgdmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5CcmVha3BvaW50fSAqLyBldmVudC5kYXRhLmJyZWFrcG9pbnQ7Ci0gICAgICAgIHZhciB1
aUxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gZXZlbnQu
ZGF0YS51aUxvY2F0aW9uOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnR9ICovIChldmVudC5kYXRhLmJy
ZWFrcG9pbnQpOworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlVJTG9jYXRpb259ICovIChldmVudC5kYXRhLnVpTG9jYXRpb24pOwogICAgICAgICB0aGlz
Ll9hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHVpTG9jYXRpb24pOwogICAgIH0sCiAKQEAgLTEz
OSw4ICsxMzksOCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBh
bmUucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9icmVha3BvaW50UmVtb3ZlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnR9ICovIGV2ZW50LmRhdGEuYnJl
YWtwb2ludDsKLSAgICAgICAgdmFyIHVpTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5VSUxvY2F0aW9ufSAqLyBldmVudC5kYXRhLnVpTG9jYXRpb247CisgICAgICAgIHZhciBicmVh
a3BvaW50ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtw
b2ludH0gKi8gKGV2ZW50LmRhdGEuYnJlYWtwb2ludCk7CisgICAgICAgIHZhciB1aUxvY2F0aW9u
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gKGV2ZW50LmRhdGEudWlM
b2NhdGlvbik7CiAgICAgICAgIHZhciBicmVha3BvaW50SXRlbSA9IHRoaXMuX2l0ZW1zLmdldChi
cmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50SXRlbSkKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
TmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcuanMKaW5kZXggYjJhMzAyNDAyYjAy
ZGEyZTZkMDg1YmZmMmU3OWIzODA3ODliMzUwMS4uYjkyYTA2NmRhNmFhMDA2NGQ5MDU5MzEyMjg4
MGMyOGJkNzU5NTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcuanMKQEAgLTkx
LDcgKzkxLDcgQEAgV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2RvY3VtZW50VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgZG9jdW1lbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5E
T01Eb2N1bWVudH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGRvY3VtZW50ID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9ICovIChldmVudC5kYXRhKTsKICAgICAgICAg
dGhpcy5fc2V0RG9jdW1lbnQoZG9jdW1lbnQpOwogICAgIH0sCiAKQEAgLTIxOSw3ICsyMTksNyBA
QCBXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZG9jdW1lbnROb2RlSWQgIT09IHRoaXMuX2RvY3VtZW50
LmlkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBmbG93ID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZmxv
dyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30gKi8gKGV2ZW50LmRhdGEpOwog
ICAgICAgICB0aGlzLl9hcHBlbmROYW1lZEZsb3coZmxvdyk7CiAgICAgfSwKIApAQCAtMjQ0LDcg
KzI0NCw3IEBAIFdlYkluc3BlY3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90
eXBlID0gewogICAgICAgICBpZiAoZXZlbnQuZGF0YS5kb2N1bWVudE5vZGVJZCAhPT0gdGhpcy5f
ZG9jdW1lbnQuaWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGZsb3cgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5OYW1lZEZsb3d9ICovIGV2ZW50LmRhdGE7CisgICAgICAg
IHZhciBmbG93ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fSAqLyAoZXZlbnQu
ZGF0YSk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZU5hbWVkRmxvdyhmbG93KTsKICAgICB9LAogCkBA
IC0yOTgsNyArMjk4LDcgQEAgV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3NlbGVjdGVkTm9kZUNoYW5nZWQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5ET01Ob2RlfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgbm9kZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5f
c2hvd05hbWVkRmxvd0Zvck5vZGUobm9kZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3
LmpzCmluZGV4IGUxMGY4ZGM2ZWM2OGM3NTE5ZjgwNDIzNjNjMWFlMTRmMDY1ZmFlYzcuLmU5ZDcx
ZWM4NTQ4ODQ0YTAwNjJmNjZhZmY0OTY3ODllYjhiMDk0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZp
ZXcuanMKQEAgLTM5OSw3ICszOTksNyBAQCBXZWJJbnNwZWN0b3IuQ1NTUHJvZmlsZUhlYWRlci5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmlsZXNQ
YW5lbCkKICAgICB7Ci0gICAgICAgIHZhciBwcm9maWxlID0gLyoqIEB0eXBlIHtDU1NBZ2VudC5T
ZWxlY3RvclByb2ZpbGV9ICovdGhpcy5fcHJvdG9jb2xEYXRhOworICAgICAgICB2YXIgcHJvZmls
ZSA9IC8qKiBAdHlwZSB7Q1NTQWdlbnQuU2VsZWN0b3JQcm9maWxlfSAqLyAodGhpcy5fcHJvdG9j
b2xEYXRhKTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9m
aWxlVmlldyhwcm9maWxlKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggZmU4N2M5N2VhNGU4MjE5MGRj
ZmM4YjkzYjJjNzMyMDM5ZDhlMDQxZS4uNmE2ZjFjNTU1NjBkZGU2OTU5Y2U2M2Y3ZDBiMWFiZDZi
MDVkOTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qcwpAQCAtNTQ4LDcgKzU0OCw3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkxpdmVMb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdWlMb2NhdGlv
bjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGNzc0xvY2F0aW9uID0gLyoqIEB0eXBl
IFdlYkluc3BlY3Rvci5DU1NMb2NhdGlvbiAqLyB0aGlzLnJhd0xvY2F0aW9uKCk7CisgICAgICAg
IHZhciBjc3NMb2NhdGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb24gKi8g
KHRoaXMucmF3TG9jYXRpb24oKSk7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuY3NzTW9k
ZWwuX3Jhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNzc0xvY2F0aW9uKTsKICAgICB9LAogCkBAIC02
MzYsNyArNjM2LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VQYXls
b2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKICAqLwogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb24ucGFyc2VDb21wdXRlZFN0eWxlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7Ci0g
ICAgdmFyIG5ld1BheWxvYWQgPSAvKiogQHR5cGUge0NTU0FnZW50LkNTU1N0eWxlfSAqLyB7IGNz
c1Byb3BlcnRpZXM6IFtdLCBzaG9ydGhhbmRFbnRyaWVzOiBbXSwgd2lkdGg6ICIiLCBoZWlnaHQ6
ICIiIH07CisgICAgdmFyIG5ld1BheWxvYWQgPSAvKiogQHR5cGUge0NTU0FnZW50LkNTU1N0eWxl
fSAqLyAoeyBjc3NQcm9wZXJ0aWVzOiBbXSwgc2hvcnRoYW5kRW50cmllczogW10sIHdpZHRoOiAi
IiwgaGVpZ2h0OiAiIiB9KTsKICAgICBpZiAocGF5bG9hZCkKICAgICAgICAgbmV3UGF5bG9hZC5j
c3NQcm9wZXJ0aWVzID0gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwppbmRleCBiMGE5
ZmMyMmE3MDA3NzRhMDdkNjZjZTBiOWExZjhiYzE5ZjFjZTM1Li42MjU5ZTlhM2Y0MjFlMzcxOGQ4
NmQ3NWQyMDE3ZjI0MmJhN2YyMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwpAQCAtNTgsNyAr
NTgsNyBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsK
ICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRp
b24pCiAgICAgewotICAgICAgICB2YXIgZGVidWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gcmF3TG9jYXRpb247Cisg
ICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAocmF3TG9jYXRpb24pOwogICAgICAgICB2YXIg
c291cmNlTWFwID0gdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbZGVidWdnZXJNb2RlbExvY2F0
aW9uLnNjcmlwdElkXTsKICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBkZWJ1Z2dlck1vZGVsTG9j
YXRpb24ubGluZU51bWJlcjsKICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IGRlYnVnZ2VyTW9k
ZWxMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMDsKQEAgLTE0Niw3ICsxNDYsNyBAQCBXZWJJbnNw
ZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZh
ciByZXNwb25zZSA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHNvdXJjZU1hcFVSTCk7CiAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc2xpY2UoMCwgMykg
PT09ICIpXX0iKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2Uuc3Vic3RyaW5n
KHJlc3BvbnNlLmluZGV4T2YoJ1xuJykpOwotICAgICAgICAgICAgdmFyIHBheWxvYWQgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBQYXlsb2FkfSAqLyBKU09OLnBhcnNlKHJlc3Bv
bnNlKTsKKyAgICAgICAgICAgIHZhciBwYXlsb2FkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUGF5bG9hZH0gKi8gKEpTT04ucGFyc2UocmVzcG9uc2UpKTsKICAgICAgICAgICAg
IHNvdXJjZU1hcCA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlTWFwUGFyc2VyKHNvdXJjZU1hcFVS
TCwgcGF5bG9hZCk7CiAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgY29uc29sZS5l
cnJvcihlLm1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanMKaW5kZXggNTlhODJmZWZiY2ZkMTc3MWQxMGJkZDA4YWFlYzE5OGU1
NWFmOTk4MS4uOWVhNWJjYTYxMGMwZjgzNWVkNmM5MTI0MDdmYjJkMzRmMmJhNGEyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBA
IC0xNDAsNyArMTQwLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgKi8KICAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgY29udGV4dExpc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GcmFtZUV4ZWN1dGlv
bkNvbnRleHRMaXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgY29udGV4dExpc3QgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0fSAqLyAoZXZl
bnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2FkZEZyYW1lKGNvbnRleHRMaXN0KTsKICAgICB9LAog
CkBAIC0xNjUsNyArMTY1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfZnJhbWVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBjb250ZXh0TGlzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZyYW1lRXhl
Y3V0aW9uQ29udGV4dExpc3R9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBjb250ZXh0TGlz
dCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZyYW1lRXhlY3V0aW9uQ29udGV4dExpc3R9ICov
IChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fZnJhbWVTZWxlY3Rvci5yZW1vdmVPcHRpb24o
Y29udGV4dExpc3QuX2NvbnNvbGVPcHRpb24pOwogICAgICAgICB0aGlzLl9mcmFtZUNoYW5nZWQo
KTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01BZ2VudC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdl
bnQuanMKaW5kZXggZjM5YTNjYmI4YzY4NDM2NmIzZDM1NmVjMWEzODVjY2M4N2U3NmEwYy4uNDAy
MDY0MTczODNiZTJmYzBkOWRkNWQ4YTk0YjkyZGRiMmI5NzU1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC03NzIsNyArNzcyLDcgQEAg
V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50ID0gZnVuY3Rpb24oZG9tQWdlbnQsIHBheWxvYWQpCiB7
CiAgICAgV2ViSW5zcGVjdG9yLkRPTU5vZGUuY2FsbCh0aGlzLCBkb21BZ2VudCwgdGhpcywgZmFs
c2UsIHBheWxvYWQpOwogICAgIHRoaXMuZG9jdW1lbnRVUkwgPSBwYXlsb2FkLmRvY3VtZW50VVJM
IHx8ICIiOwotICAgIHRoaXMuYmFzZVVSTCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyBwYXlsb2Fk
LmJhc2VVUkw7CisgICAgdGhpcy5iYXNlVVJMID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChwYXls
b2FkLmJhc2VVUkwpOwogICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuYmFzZVVSTCk7CiAgICAgdGhp
cy54bWxWZXJzaW9uID0gcGF5bG9hZC54bWxWZXJzaW9uOwogICAgIHRoaXMuX2xpc3RlbmVycyA9
IHt9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
ck1vZGVsLmpzCmluZGV4IDRlOTEzZTlkMDQwNzkxZmFkY2ZiOGI1OTA1MTMxNjBjOTc4ZTAwY2Iu
LmQ1OGRhMGVkYjczYjEyNWY2ZDA0NTUxMDMwZjc4M2Y4OTA3MTY4YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAgLTIw
NSw3ICsyMDUsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoZXJyb3IsIGJyZWFrcG9pbnRJZCwgbG9j
YXRpb25zKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsKLSAgICAgICAg
ICAgICAgICB2YXIgcmF3TG9jYXRpb25zID0gLyoqIEB0eXBlIHtBcnJheS48V2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24+fSAqLyBsb2NhdGlvbnM7CisgICAgICAgICAgICAgICAg
dmFyIHJhd0xvY2F0aW9ucyA9IC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9uPn0gKi8gKGxvY2F0aW9ucyk7CiAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZXJyb3IgPyBudWxsIDogYnJlYWtwb2ludElkLCByYXdMb2NhdGlvbnMpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0yMjksNyArMjI5LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlvbiBkaWRTZXRCcmVha3BvaW50KGVy
cm9yLCBicmVha3BvaW50SWQsIGFjdHVhbExvY2F0aW9uKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoY2FsbGJhY2spIHsKLSAgICAgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyBhY3R1YWxMb2Nh
dGlvbjsKKyAgICAgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAoYWN0dWFsTG9jYXRpb24pOwogICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gbnVsbCA6IGJyZWFrcG9pbnRJZCwgW3Jhd0xv
Y2F0aW9uXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTcyNiw3ICs3MjYsNyBAQCBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIGdldCBsb2NhdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyB0aGlzLl9w
YXlsb2FkLmxvY2F0aW9uOworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAodGhpcy5fcGF5bG9hZC5sb2Nh
dGlvbik7CiAgICAgICAgIHJldHVybiByYXdMb2NhdGlvbjsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGlu
Zy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRN
YXBwaW5nLmpzCmluZGV4IDk4YTA1NWUzMzE3Mjg2ZTUwMGQ4ZTdhNjYzYWU4ZTU2NjkyM2QyZGUu
LmQzMmIyZTQ1NGEyNjQzYWY1NzMwYzUxZmM1MzU3NWU5OTliMjk4ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRN
YXBwaW5nLmpzCkBAIC01NCw3ICs1NCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1h
cHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2
YXIgbWFwcGluZyA9IHRoaXMuX21hcHBpbmdGb3JTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgbWFw
cGluZy5hZGRTY3JpcHQoc2NyaXB0KTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EaXJlY3RvcnlDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5Q29udGVudFZpZXcuanMKaW5kZXgg
MTQ0MjYwZmNiN2RlZTc0ZjgyYmQxMWFjMzJjNzAxMDIwZTM5M2UxZi4uNTdhZTUzZDNlMGQ1M2Jj
ZTkxMDkxZmUyNWRjM2FiNjlmOTQxMTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EaXJlY3RvcnlDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RpcmVjdG9yeUNvbnRlbnRWaWV3LmpzCkBAIC04NCw3
ICs4NCw3IEBAIFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICBfc29ydDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGNvbHVtbiA9IC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyB0aGlzLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2
YXIgY29sdW1uID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovICh0aGlzLnNvcnRDb2x1bW5JZGVudGlm
aWVyKTsKICAgICAgICAgdGhpcy5zb3J0Tm9kZXMoV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRl
bnRWaWV3Lk5vZGUuY29tcGFyYXRvcihjb2x1bW4sIHRoaXMuc29ydE9yZGVyID09PSAiZGVzY2Vu
ZGluZyIpLCBmYWxzZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCmluZGV4IDM0MjdmYjNmMTI0MGMzMDA2YzMz
ZjVkMjk1MThiZDY4M2IxZWY3M2QuLmEwZTZlMWExODQ0ZWU0MjdiZGI3MWVkNTNiMGNjMmE0ODM1
OWE3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanMKQEAgLTQxNSw3ICs0MTUsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0g
Ki8gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHZhciBub2RlID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0gKi8gKHRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0KTsKIAogICAgICAgICBpZiAoIW5vZGUubm9kZU5hbWUoKSB8fCBub2RlLm5vZGVOYW1l
KCkudG9Mb3dlckNhc2UoKSAhPT0gImltZyIpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CkBA
IC02MDQsNyArNjA0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAobmFtZSAhPT0gImNsYXNzIiAmJiBuYW1lICE9PSAiaWQiKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRE9NTm9kZX0gKi8gZXZlbnQuZGF0YS5ub2RlOworICAgICAgICB2YXIgbm9kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIChldmVudC5kYXRhLm5vZGUpOwogICAgICAg
ICB2YXIgY3J1bWJzID0gdGhpcy5jcnVtYnNFbGVtZW50OwogICAgICAgICB2YXIgY3J1bWIgPSBj
cnVtYnMuZmlyc3RDaGlsZDsKICAgICAgICAgd2hpbGUgKGNydW1iKSB7CkBAIC0xMTIxLDcgKzEx
MjEsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewog
ICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHJlbW90ZU9iamVjdCA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gdGFyZ2V0OworICAgICAgICB2YXIg
cmVtb3RlT2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyAo
dGFyZ2V0KTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5zdWJ0eXBlICE9PSAibm9kZSIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbERlc2NyaXB0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxEZXNjcmlwdG9yLmpzCmluZGV4IDQ1YWQz
ZTQ2NzQ1OTVjNzZhZGFjYWUxMDUyZDUwMWFkMmQ4ZGZmOTcuLjhmNzFhYWUwOGQ1YWMzYjBlZDYz
MThiZjNhNzZiYmRhN2U5MDQyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbERlc2NyaXB0b3IuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsRGVzY3JpcHRvci5qcwpAQCAtNDYs
NyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbERlc2NyaXB0b3IucHJvdG90eXBl
ID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciByZW1vdGVP
YmplY3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9ICovIHRhcmdldDsK
KyAgICAgICAgdmFyIHJlbW90ZU9iamVjdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdH0gKi8gKHRhcmdldCk7CiAgICAgICAgIGlmIChyZW1vdGVPYmplY3Quc3VidHlwZSAh
PT0gIm5vZGUiKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLnBhbmVsKCkuYXBw
ZW5kQXBwbGljYWJsZUl0ZW1zKGV2ZW50LCBjb250ZXh0TWVudSwgdGFyZ2V0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0
bGluZS5qcwppbmRleCA2NjdhZTJlZDg1YmU0NWVlYmQ4NjM5MjAzYzVkODEwYTljYzI5NjNlLi5h
ODdiYzkyM2Y1YzdjMTg5MzFhYjRkNWM5ZTRjNTUxNTBlZTAyMWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5l
LmpzCkBAIC0xNzI2LDcgKzE3MjYsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2J1aWxkVGFnRE9NOiBmdW5jdGlvbihwYXJl
bnRFbGVtZW50LCB0YWdOYW1lLCBpc0Nsb3NpbmdUYWcsIGlzRGlzdGluY3RUcmVlRWxlbWVudCwg
bGlua2lmeSkKICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gLyoqIEB0eXBlIFdlYkluc3BlY3Rv
ci5ET01Ob2RlICovIHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHZhciBub2RlID0g
LyoqIEB0eXBlIFdlYkluc3BlY3Rvci5ET01Ob2RlICovICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0
KTsKICAgICAgICAgdmFyIGNsYXNzZXMgPSBbICJ3ZWJraXQtaHRtbC10YWciIF07CiAgICAgICAg
IGlmIChpc0Nsb3NpbmdUYWcgJiYgaXNEaXN0aW5jdFRyZWVFbGVtZW50KQogICAgICAgICAgICAg
Y2xhc3Nlcy5wdXNoKCJjbG9zZSIpOwpAQCAtMjAwOCw3ICsyMDA4LDcgQEAgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIG9iamVj
dC5jYWxsRnVuY3Rpb24oc2Nyb2xsSW50b1ZpZXcpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICB2YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuRE9NTm9kZX0gKi8gKHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKG5vZGUsICIiLCBzY3JvbGxJbnRvVmll
d0NhbGxiYWNrKTsKICAgICB9LAogCkBAIC0yMDQ0LDcgKzIwNDQsNyBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlVXBkYXRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl90cmVl
T3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNT
b29uKCk7CiAKLSAgICAgICAgdmFyIGVudHJ5ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlVXBkYXRlci5VcGRhdGVFbnRyeX0gKi8gdGhpcy5fcmVjZW50bHlNb2RpZmllZE5v
ZGVzLmdldChub2RlKTsKKyAgICAgICAgdmFyIGVudHJ5ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRWxlbWVudHNUcmVlVXBkYXRlci5VcGRhdGVFbnRyeX0gKi8gKHRoaXMuX3JlY2VudGx5TW9k
aWZpZWROb2Rlcy5nZXQobm9kZSkpOwogICAgICAgICBpZiAoIWVudHJ5KSB7CiAgICAgICAgICAg
ICBlbnRyeSA9IG5ldyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlVXBkYXRlci5VcGRhdGVFbnRy
eShpc1VwZGF0ZWQsIHBhcmVudE5vZGUpOwogICAgICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2Rp
ZmllZE5vZGVzLnB1dChub2RlLCBlbnRyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGViNWNhNWRiZTllMzAy
OTQ3YWNlYTAzYWY1NmU5YzNmNjE1ZWUzZWEuLjZkMDU1ODkwMGJlMTIzZWZjOTc4MDAxNjUyZGE1
ZTA5YjE1M2I2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCkBAIC0xNzgsNyArMTc4LDcgQEAgV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgZm9yICh2
YXIgbmFtZSBpbiBtZXNzYWdlLmhlYWRlcnMpCiAgICAgICAgICAgICBleHRlbnNpb25IZWFkZXJz
W25hbWVdID0gbWVzc2FnZS5oZWFkZXJzW25hbWVdOwotICAgICAgICB2YXIgYWxsSGVhZGVycyA9
IC8qKiBAdHlwZSBOZXR3b3JrQWdlbnQuSGVhZGVycyAqLyB7fTsKKyAgICAgICAgdmFyIGFsbEhl
YWRlcnMgPSAvKiogQHR5cGUgTmV0d29ya0FnZW50LkhlYWRlcnMgKi8gKHt9KTsKICAgICAgICAg
Zm9yICh2YXIgZXh0ZW5zaW9uIGluIHRoaXMuX2V4dHJhSGVhZGVycykgewogICAgICAgICAgICAg
dmFyIGhlYWRlcnMgPSB0aGlzLl9leHRyYUhlYWRlcnNbZXh0ZW5zaW9uXTsKICAgICAgICAgICAg
IGZvciAobmFtZSBpbiBoZWFkZXJzKSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgV2ViSW5zcGVjdG9y
LkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAKICAgICBfaGFuZGxlT3BlblVSTDogZnVu
Y3Rpb24ocG9ydCwgZGV0YWlscykKICAgICB7Ci0gICAgICAgIHZhciB1cmwgPSAvKiogQHR5cGUg
e3N0cmluZ30gKi8gZGV0YWlscy51cmw7CisgICAgICAgIHZhciB1cmwgPSAvKiogQHR5cGUge3N0
cmluZ30gKi8gKGRldGFpbHMudXJsKTsKICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IFdl
Ykluc3BlY3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHVybCkgfHwgV2ViSW5zcGVj
dG9yLnJlc291cmNlRm9yVVJMKHVybCk7CiAgICAgICAgIGlmICghY29udGVudFByb3ZpZGVyKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDgyLDcgKzQ4Miw3IEBAIFdlYkluc3BlY3Rv
ci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgX29uR2V0UmVzb3VyY2VDb250
ZW50OiBmdW5jdGlvbihtZXNzYWdlLCBwb3J0KQogICAgIHsKLSAgICAgICAgdmFyIHVybCA9IC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyBtZXNzYWdlLnVybDsKKyAgICAgICAgdmFyIHVybCA9IC8qKiBA
dHlwZSB7c3RyaW5nfSAqLyAobWVzc2FnZS51cmwpOwogICAgICAgICB2YXIgY29udGVudFByb3Zp
ZGVyID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwodXJsKSB8fCBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKICAgICAgICAgaWYgKCFjb250ZW50UHJv
dmlkZXIpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzLkVfTk9URk9VTkQodXJsKTsK
QEAgLTUwMCw3ICs1MDAsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2FsbGJhY2sobWVzc2FnZS5yZXF1ZXN0
SWQsIHBvcnQsIHJlc3BvbnNlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciB1cmwgPSAvKiog
QHR5cGUge3N0cmluZ30gKi8gbWVzc2FnZS51cmw7CisgICAgICAgIHZhciB1cmwgPSAvKiogQHR5
cGUge3N0cmluZ30gKi8gKG1lc3NhZ2UudXJsKTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IFdlYkluc3BlY3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHVybCk7CiAgICAgICAg
IGlmICghdWlTb3VyY2VDb2RlKSB7CiAgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwucmVzb3VyY2VGb3JVUkwodXJsKTsKQEAgLTYyNSwyMCAr
NjI1LDIwIEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogCiAg
ICAgX25vdGlmeVJlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9w
b3N0Tm90aWZpY2F0aW9uKFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkuRXZlbnRzLlJlc291cmNl
QWRkZWQsIHRoaXMuX21ha2VSZXNvdXJjZSh1aVNvdXJjZUNvZGUpKTsKICAgICB9LAogCiAgICAg
X25vdGlmeVVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YS51aVNvdXJjZUNvZGU7Ci0gICAgICAgIHZhciBjb250
ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRhdGEuY29udGVudDsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gKGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAvKiog
QHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEuY29udGVudCk7CiAgICAgICAgIHRoaXMuX3Bv
c3ROb3RpZmljYXRpb24oV2ViSW5zcGVjdG9yLmV4dGVuc2lvbkFQSS5FdmVudHMuUmVzb3VyY2VD
b250ZW50Q29tbWl0dGVkLCB0aGlzLl9tYWtlUmVzb3VyY2UodWlTb3VyY2VDb2RlKSwgY29udGVu
dCk7CiAgICAgfSwKIAogICAgIF9ub3RpZnlSZXF1ZXN0RmluaXNoZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5O
ZXR3b3JrUmVxdWVzdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gKGV2ZW50LmRhdGEpOwogICAg
ICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKFdlYkluc3BlY3Rvci5leHRlbnNpb25BUEkuRXZl
bnRzLk5ldHdvcmtSZXF1ZXN0RmluaXNoZWQsIHRoaXMuX3JlcXVlc3RJZChyZXF1ZXN0KSwgKG5l
dyBXZWJJbnNwZWN0b3IuSEFSRW50cnkocmVxdWVzdCkpLmJ1aWxkKCkpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZp
ZXcuanMKaW5kZXggYjhjY2Q5YWQxNjBkNDNiN2VlZWJlZGVkZjYxMjUxYWQ3NDhkYTMxNy4uN2I0
N2M2ZGYwNzU0M2M1OGEzMTJjZTg5OGUzZDc0ZDA4MjA3NmIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanMKQEAgLTY4
LDcgKzY4LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICh0aGlzLl9jb250ZW50KSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2NvbnRl
bnQudXBkYXRlTWV0YWRhdGEobWV0YWRhdGEpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lfSAqLyB0aGlzLl9pbm5lclZpZXc7CisgICAgICAgICAgICB2YXIgc291cmNlRnJhbWUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0gKi8gKHRoaXMuX2lubmVyVmll
dyk7CiAgICAgICAgICAgICB0aGlzLl9jb250ZW50LnJlcXVlc3RDb250ZW50KHNvdXJjZUZyYW1l
LnNldENvbnRlbnQuYmluZChzb3VyY2VGcmFtZSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgdGhpcy5faW5uZXJWaWV3LmRldGFjaCgpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFdlYklu
c3BlY3Rvci5GaWxlQ29udGVudFZpZXcuRmlsZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgdmFyIHNpemUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gdGhpcy5fbWV0YWRhdGEu
c2l6ZTsKKyAgICAgICAgdmFyIHNpemUgPSAvKiogQHR5cGUge251bWJlcn0gKi8gKHRoaXMuX21l
dGFkYXRhLnNpemUpOwogICAgICAgICB0aGlzLl9maWxlLnJlcXVlc3RGaWxlQ29udGVudCh0cnVl
LCAwLCBzaXplLCB0aGlzLl9jaGFyc2V0IHx8ICIiLCB0aGlzLl9maWxlQ29udGVudFJlY2VpdmVk
LmJpbmQodGhpcywgY2FsbGJhY2spKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCmluZGV4IGNhNWJmNzMw
MGQ0MTYxZDQwZmY2ODVkODk0ZWI5N2ZlN2QwNTJhZGYuLjZiMTU4MTBiNDYyMzg1MmU3MDJjZTU3
MGEwOTBmMDAwNWM4NTUxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC01Niw3ICs1Niw3IEBAIFdlYkluc3Bl
Y3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9mcmFtZUFk
ZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOworICAgICAg
ICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0g
Ki8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9hdHRhY2hGcmFtZVJlY3Vyc2l2ZWx5KGZy
YW1lKTsKICAgICB9LAogCkBAIC02NSw3ICs2NSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9mcmFtZU5hdmlnYXRlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZyYW1l
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5k
YXRhKTsKICAgICAgICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CiAgICAg
fSwKIApAQCAtNzQsNyArNzQsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewotICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAg
ICAgdGhpcy5fZGV0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMK
aW5kZXggMTc0ZTM0NTBiMzczOGMwZmVjM2ViZDFhNWRjOTRjNGE1ZGMwY2FjNS4uMTQ0NjVmNWUw
OTA3OTYzMmNmNzhjYzJlMGQyMTQ5Y2IwMjNiNzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCkBAIC0xMzUsNyArMTM1
LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1WaWV3LkVudHJ5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgaWYgKHRoaXMuX2VudHJ5LmlzRGlyZWN0b3J5KQogICAgICAg
ICAgICAgICAgIHRoaXMuX3ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRW
aWV3KCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5GaWxlfSAqLyB0aGlzLl9lbnRy
eTsKKyAgICAgICAgICAgICAgICB2YXIgZmlsZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1Nb2RlbC5GaWxlfSAqLyAodGhpcy5fZW50cnkpOwogICAgICAgICAgICAgICAgIHRo
aXMuX3ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVDb250ZW50VmlldyhmaWxlKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMjExLDcgKzIxMSw3IEBAIFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fZW50cnkuaXNEaXJlY3RvcnkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl92
aWV3ICYmIHRoaXMuX3ZpZXcgPT09IHRoaXMuX2ZpbGVTeXN0ZW1WaWV3LnZpc2libGVWaWV3KSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGZpbGVDb250ZW50VmlldyA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkZpbGVDb250ZW50Vmlld30gKi8gdGhpcy5fdmlldzsKKyAgICAgICAgICAgICAgICB2
YXIgZmlsZUNvbnRlbnRWaWV3ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRW
aWV3fSAqLyAodGhpcy5fdmlldyk7CiAgICAgICAgICAgICAgICAgZmlsZUNvbnRlbnRWaWV3LnJl
ZnJlc2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJSZWdpc3RyeS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzCmluZGV4IGM4
YTY0OGFjYjg1ZWExZTQ3NDMxNDY2NzRkZDk3MzE2MDhhZWI4MDkuLjZiOTA5MzExM2NkNGIwMjBk
NzQ4YzEyMGNjM2NhMjdlMGY4NzUzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGFuZGxlclJlZ2lzdHJ5LmpzCkBAIC0xMTEsNyArMTExLDcgQEAg
V2ViSW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlIHx8IHRh
cmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCB0YXJnZXQgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29udGVu
dFByb3ZpZGVyfSAqLyB0YXJnZXQ7CisgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9ICovICh0YXJnZXQpOwogICAgICAg
ICBpZiAoIWNvbnRlbnRQcm92aWRlci5jb250ZW50VVJMKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBXZWJJbnNwZWN0b3IuSGFuZGxlclJlZ2lzdHJ5LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gc2F2ZShmb3JjZVNhdmVBcykKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKGNvbnRlbnRQcm92aWRlciBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBjb250ZW50UHJvdmlkZXI7CisgICAg
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gKi8gKGNvbnRlbnRQcm92aWRlcik7CiAgICAgICAgICAgICAgICAgaWYgKHVp
U291cmNlQ29kZS5pc0RpcnR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZG9TYXZlKGZvcmNl
U2F2ZUFzLCB1aVNvdXJjZUNvZGUud29ya2luZ0NvcHkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHVpU291cmNlQ29kZS5jb21taXRXb3JraW5nQ29weShmdW5jdGlvbigpIHsgfSk7CkBAIC0xNjYs
NyArMTY2LDcgQEAgV2ViSW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeS5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBOb2RlKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgdmFyIHRhcmdldE5vZGUgPSAvKiogQHR5cGUge05vZGV9ICovIHRh
cmdldDsKKyAgICAgICAgdmFyIHRhcmdldE5vZGUgPSAvKiogQHR5cGUge05vZGV9ICovICh0YXJn
ZXQpOwogCiAgICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gdGFyZ2V0Tm9kZS5lbmNsb3NpbmdO
b2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIikgfHwgdGFyZ2V0
Tm9kZS5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJ3ZWJraXQtaHRtbC1leHRlcm5hbC1s
aW5rIik7CiAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90TG9hZGVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RMb2FkZXIuanMKaW5kZXgg
ODcyNTQ4MmE1YjMzMjQzZjdlMWM0NjJkNTc0YmI5YTNiODMwY2UwNi4uMWE0NTdjZTI0ZTBiZGQ2
ZjQ3ZGIyYjE3N2NjNjg5ZGFjYzI0ZTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RMb2FkZXIuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RMb2FkZXIuanMKQEAgLTEyOSw3ICsx
MjksNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TG9hZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHZhciBjbG9zaW5nQnJhY2tldEluZGV4ID0gV2ViSW5zcGVjdG9yLmZpbmRCYWxh
bmNlZEN1cmx5QnJhY2tldHModGhpcy5fanNvbik7CiAgICAgICAgICAgICBpZiAoY2xvc2luZ0Jy
YWNrZXRJbmRleCA9PT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
dGhpcy5fc25hcHNob3Quc25hcHNob3QgPSAvKiogQHR5cGUge0hlYXBTbmFwc2hvdEhlYWRlcn0g
Ki9KU09OLnBhcnNlKHRoaXMuX2pzb24uc2xpY2UoMCwgY2xvc2luZ0JyYWNrZXRJbmRleCkpOwor
ICAgICAgICAgICAgdGhpcy5fc25hcHNob3Quc25hcHNob3QgPSAvKiogQHR5cGUge0hlYXBTbmFw
c2hvdEhlYWRlcn0gKi8gKEpTT04ucGFyc2UodGhpcy5fanNvbi5zbGljZSgwLCBjbG9zaW5nQnJh
Y2tldEluZGV4KSkpOwogICAgICAgICAgICAgdGhpcy5fanNvbiA9IHRoaXMuX2pzb24uc2xpY2Uo
Y2xvc2luZ0JyYWNrZXRJbmRleCk7CiAgICAgICAgICAgICB0aGlzLl9zdGF0ZSA9ICJmaW5kLW5v
ZGVzIjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCmluZGV4IGNjZDM2MzBhNjQxNDQzMjExZjJjMTZm
MmNjMmRiZDc0YTc2NmIxZDYuLmVlZTk2NGYyZWE5Nzk3MWMwNWVjNzY4OGE3NjAwODBhOGU4MTlj
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFZpZXcuanMKQEAgLTM2OCw3ICszNjgsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5fYmFzZVByb2ZpbGVVaWQgPSB0aGlzLl9wcm9maWxlcygpW3RoaXMuYmFzZVNlbGVjdEVs
ZW1lbnQuc2VsZWN0ZWRJbmRleF0udWlkOwotICAgICAgICB2YXIgZGF0YUdyaWQgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWR9ICovIHRoaXMuZGF0YUdy
aWQ7CisgICAgICAgIHZhciBkYXRhR3JpZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdERpZmZEYXRhR3JpZH0gKi8gKHRoaXMuZGF0YUdyaWQpOwogICAgICAgICAvLyBDaGFu
Z2Ugc2V0IGJhc2UgZGF0YSBzb3VyY2Ugb25seSBpZiBtYWluIGRhdGEgc291cmNlIGlzIGFscmVh
ZHkgc2V0LgogICAgICAgICBpZiAoZGF0YUdyaWQuc25hcHNob3QpCiAgICAgICAgICAgICB0aGlz
LmJhc2VQcm9maWxlLmxvYWQoZGF0YUdyaWQuc2V0QmFzZURhdGFTb3VyY2UuYmluZChkYXRhR3Jp
ZCkpOwpAQCAtODY2LDcgKzg2Niw3IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LndhaXQgPSB0cnVl
OwogICAgICAgICAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMucHJvZmlsZVR5cGUo
KS5pZCwgdGhpcy51aWQpOwogICAgICAgICB9Ci0gICAgICAgIHZhciBsb2FkZXJQcm94eSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5fSAqLyB0aGlzLl9y
ZWNlaXZlcjsKKyAgICAgICAgdmFyIGxvYWRlclByb3h5ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90TG9hZGVyUHJveHl9ICovICh0aGlzLl9yZWNlaXZlcik7CiAgICAgICAg
IGxvYWRlclByb3h5LmFkZENvbnN1bWVyKGNhbGxiYWNrKTsKICAgICB9LAogCkBAIC05MzcsNyAr
OTM3LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKHNuYXBzaG90UHJveHkpCiAgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFByb3h5
ID0gc25hcHNob3RQcm94eTsKICAgICAgICAgdGhpcy5fdXBkYXRlU25hcHNob3RTdGF0dXMoKTsK
LSAgICAgICAgdmFyIHdvcmtlciA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFdvcmtlcn0gKi8gdGhpcy5fc25hcHNob3RQcm94eS53b3JrZXI7CisgICAgICAgIHZhciB3b3Jr
ZXIgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovICh0aGlz
Ll9zbmFwc2hvdFByb3h5Lndvcmtlcik7CiAgICAgICAgIHRoaXMuaXNUZW1wb3JhcnkgPSBmYWxz
ZTsKICAgICAgICAgd29ya2VyLnN0YXJ0Q2hlY2tpbmdGb3JMb25nUnVubmluZ0NhbGxzKCk7CiAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5k
ZXhlZERCTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4
ZWREQk1vZGVsLmpzCmluZGV4IDBjNGZlZDA3ZTc2M2YyMmZlYmVjODUxMmVjNWJkODRhNmExY2Fk
YjguLmU2NDQwYzFiZGVjMDRkM2NhZWE1OWYxNDgxMGY5OTk1YmI4NjI3ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwpA
QCAtMTk4LDcgKzE5OCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICovCiAgICAgX2ZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZVRyZWVGcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgcmVzb3VyY2VU
cmVlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8g
KGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9wcm9jZXNzRnJhbWVOYXZpZ2F0ZWQocmVzb3Vy
Y2VUcmVlRnJhbWUpOwogICAgIH0sCiAKQEAgLTIwNyw3ICsyMDcsNyBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9mcmFtZURldGFjaGVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZVRyZWVGcmFtZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRh
OworICAgICAgICB2YXIgcmVzb3VyY2VUcmVlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9vcmln
aW5SZW1vdmVkRnJvbUZyYW1lKHJlc291cmNlVHJlZUZyYW1lLmlkKTsKICAgICB9LAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdz
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5q
cwppbmRleCBkMzAwMDZhNzg4MDA0MjI2M2UwYjY4ZDY4NGJhNmMyYTMwZTViNTY3Li40MWUyZGU5
ODc4M2VmNWM1ZTI0NTVjZjQxODE5YjQwYmE3Y2MzODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKQEAgLTE4Myw3ICsx
ODMsNyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgfQogICAgICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIl0iKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB2YXIga2V5UGF0aFN0cmluZyA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyBrZXlQYXRoOworICAg
ICAgICAgICAgdmFyIGtleVBhdGhTdHJpbmcgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGtleVBh
dGgpOwogICAgICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fa2V5UGF0aFN0cmluZ0ZyYWdtZW50KGtleVBhdGhTdHJpbmcpKTsKICAgICAgICAgfQogICAg
ICAgICBrZXlDb2x1bW5IZWFkZXJGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiKSIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKaW5kZXggYTMwMTYwNjhlM2M5ZDQ4
YmFjZjdjNTM4MjRmZmRkNGRhYjVkM2U3YS4uYjkyODI0Yjk5ZWZhMzBlMGRjOWZiYzQyYjgwNWE0
M2E5ZDkzM2JiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKQEAgLTEwNSw3ICsxMDUsNyBAQCBX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBfb25Gb3JtYXR0ZWRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRhdGEuY29udGVudDsK
KyAgICAgICAgdmFyIGNvbnRlbnQgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEu
Y29udGVudCk7CiAgICAgICAgIHRoaXMuX2lubmVyU2V0Q29udGVudChjb250ZW50KTsKICAgICB9
LAogCkBAIC00ODksMjMgKzQ4OSwyMyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9icmVha3BvaW50QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgdmFyIHVpTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5VSUxvY2F0aW9ufSAqLyBldmVudC5kYXRhLnVpTG9jYXRpb247CisgICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gKGV2ZW50LmRh
dGEudWlMb2NhdGlvbik7CiAKICAgICAgICAgaWYgKHVpTG9jYXRpb24udWlTb3VyY2VDb2RlICE9
PSB0aGlzLl91aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5C
cmVha3BvaW50fSAqLyBldmVudC5kYXRhLmJyZWFrcG9pbnQ7CisgICAgICAgIHZhciBicmVha3Bv
aW50ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2lu
dH0gKi8gKGV2ZW50LmRhdGEuYnJlYWtwb2ludCk7CiAgICAgICAgIGlmICh0aGlzLmxvYWRlZCkK
ICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnREZWNvcmF0aW9uKHVpTG9jYXRpb24ubGlu
ZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24oKSwgYnJlYWtwb2ludC5lbmFibGVkKCksIGZh
bHNlKTsKICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
VUlMb2NhdGlvbn0gKi8gZXZlbnQuZGF0YS51aUxvY2F0aW9uOworICAgICAgICB2YXIgdWlMb2Nh
dGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259ICovIChldmVudC5kYXRh
LnVpTG9jYXRpb24pOwogICAgICAgICBpZiAodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUgIT09IHRo
aXMuX3VpU291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFr
cG9pbnR9ICovIGV2ZW50LmRhdGEuYnJlYWtwb2ludDsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50fSAq
LyAoZXZlbnQuZGF0YS5icmVha3BvaW50KTsKICAgICAgICAgdmFyIHJlbWFpbmluZ0JyZWFrcG9p
bnQgPSB0aGlzLl9icmVha3BvaW50TWFuYWdlci5maW5kQnJlYWtwb2ludCh0aGlzLl91aVNvdXJj
ZUNvZGUsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgICAgIGlmICghcmVtYWluaW5nQnJl
YWtwb2ludCAmJiB0aGlzLmxvYWRlZCkKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9p
bnREZWNvcmF0aW9uKHVpTG9jYXRpb24ubGluZU51bWJlcik7CkBAIC01MTMsMTQgKzUxMywxNCBA
QCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAg
IF9jb25zb2xlTWVzc2FnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZh
ciBtZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1l
c3NhZ2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2V9ICovIChldmVudC5kYXRhKTsK
ICAgICAgICAgaWYgKHRoaXMubG9hZGVkKQogICAgICAgICAgICAgdGhpcy5hZGRNZXNzYWdlVG9T
b3VyY2UobWVzc2FnZS5saW5lTnVtYmVyLCBtZXNzYWdlLm9yaWdpbmFsTWVzc2FnZSk7CiAgICAg
fSwKIAogICAgIF9jb25zb2xlTWVzc2FnZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIG1lc3NhZ2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5QcmVzZW50YXRp
b25Db25zb2xlTWVzc2FnZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZX0gKi8gKGV2
ZW50LmRhdGEpOwogICAgICAgICBpZiAodGhpcy5sb2FkZWQpCiAgICAgICAgICAgICB0aGlzLnJl
bW92ZU1lc3NhZ2VGcm9tU291cmNlKG1lc3NhZ2UubGluZU51bWJlciwgbWVzc2FnZS5vcmlnaW5h
bE1lc3NhZ2UpOwogICAgIH0sCkBAIC01ODIsNyArNTgyLDcgQEAgV2ViSW5zcGVjdG9yLkphdmFT
Y3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSBldmVudC5kYXRhLmxpbmVOdW1iZXI7Ci0gICAgICAgIHZh
ciBldmVudE9iamVjdCA9IC8qKiBAdHlwZSB7RXZlbnR9ICovIGV2ZW50LmRhdGEuZXZlbnQ7Cisg
ICAgICAgIHZhciBldmVudE9iamVjdCA9IC8qKiBAdHlwZSB7RXZlbnR9ICovIChldmVudC5kYXRh
LmV2ZW50KTsKIAogICAgICAgICBpZiAoZXZlbnRPYmplY3QuYnV0dG9uICE9IDAgfHwgZXZlbnRP
YmplY3QuYWx0S2V5IHx8IGV2ZW50T2JqZWN0LmN0cmxLZXkgfHwgZXZlbnRPYmplY3QubWV0YUtl
eSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYzMCw3ICs2MzAsNyBAQCBXZWJJbnNwZWN0b3Iu
SmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY29udGlu
dWVUb0xpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewotICAgICAgICB2YXIgcmF3TG9j
YXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAq
LyB0aGlzLl91aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24obGluZU51bWJlciwg
MCk7CisgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuTG9jYXRpb259ICovICh0aGlzLl91aVNvdXJjZUNvZGUudWlMb2NhdGlvblRv
UmF3TG9jYXRpb24obGluZU51bWJlciwgMCkpOwogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5jb250aW51ZVRvTG9jYXRpb24ocmF3TG9jYXRpb24pOwogICAgIH0sCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGlj
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGlj
cy5qcwppbmRleCBlNzVjZDAyYjMzOGMxN2ZkMTE4ZTI5OTdkNjZhYTBhYWZkY2U4NzFjLi5iNDIx
MjZkYWVhYzVhNDk0ZTFiMjg0Y2RiNzcwZmE3ZWIwOWE3ZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCkBAIC00
MDksNyArNDA5LDcgQEAgV2ViSW5zcGVjdG9yLk1lbW9yeVN0YXRpc3RpY3MucHJvdG90eXBlID0g
ewogCiAgICAgc2hvdzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGFuY2hvciA9IC8q
KiBAdHlwZSB7RWxlbWVudHxudWxsfSAqLyB0aGlzLl9jb250YWluZXJBbmNob3IubmV4dFNpYmxp
bmc7CisgICAgICAgIHZhciBhbmNob3IgPSAvKiogQHR5cGUge0VsZW1lbnR9ICovICh0aGlzLl9j
b250YWluZXJBbmNob3IubmV4dFNpYmxpbmcpOwogICAgICAgICB0aGlzLl9tZW1vcnlTcGxpdFZp
ZXcuc2hvdyh0aGlzLl90aW1lbGluZVBhbmVsLmVsZW1lbnQsIGFuY2hvcik7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZVNpemUoKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaERpdmlkZXJzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcuanMK
aW5kZXggYjZmNjgwYzYxOTExYmQ5ZDk5ZGNlODEzMjM2ZTkwZTdjNTc2MTYxOC4uYzkxMDNiYmEy
ZjMxYTY4ZmQ4YjYyODJjZWY2ZDMxOGYzMDk3OGQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yVmlldy5qcwpAQCAtODQsMjUgKzg0LDI1
IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNv
dXJjZUNvZGVUaXRsZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8g
ZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5f
dXBkYXRlU2NyaXB0VGl0bGUodWlTb3VyY2VDb2RlKQogICAgIH0sCiAKICAgICBfdWlTb3VyY2VD
b2RlV29ya2luZ0NvcHlDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICov
IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVNjcmlwdFRpdGxlKHVpU291cmNlQ29kZSkKICAgICB9LAogCiAgICAgX3VpU291cmNl
Q29kZVdvcmtpbmdDb3B5Q29tbWl0dGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZVNjcmlwdFRpdGxlKHVpU291cmNlQ29kZSkKICAgICB9LAogCiAgICAgX3VpU291
cmNlQ29kZUZvcm1hdHRlZENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhp
cy5fdXBkYXRlU2NyaXB0VGl0bGUodWlTb3VyY2VDb2RlKTsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMKaW5kZXggODRmZjEx
MDIxYmY3ZTA5NWE5MzA3NzM5NzcxNzhlMzBiMzZhYjQzZS4uZmM0NTg1NmIxZjYwMTUzYTNkNGI5
MzUxYTUyZDkyNDY5OTMwNTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya0xvZy5qcwpAQCAtOTcsNyArOTcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX29uUmVxdWVzdFN0YXJ0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJl
cXVlc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gKGV2ZW50
LmRhdGEpOwogICAgICAgICB0aGlzLl9yZXF1ZXN0cy5wdXNoKHJlcXVlc3QpOwogICAgICAgICB0
aGlzLl9yZXF1ZXN0Rm9ySWRbcmVxdWVzdC5yZXF1ZXN0SWRdID0gcmVxdWVzdDsKICAgICAgICAg
cmVxdWVzdC5fX3BhZ2UgPSB0aGlzLl9jdXJyZW50UGFnZUxvYWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwppbmRleCBhZDAx
Mjg2OTA0MmU1YWMzYmU0NDkyOGMwM2NiZTY1NzBjNjM5ZWUwLi5mMGI5ZTVjYzRiODQ5NzNjYzI5
NmM0YTAyOGRiMTcxMzE0YjQwYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKQEAgLTEwNCw3ICsxMDQsNyBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9jYWNo
ZURpc2FibGVkU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIGVuYWJsZWQgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIGV2ZW50LmRhdGE7CisgICAgICAg
IHZhciBlbmFibGVkID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAg
ICAgIE5ldHdvcmtBZ2VudC5zZXRDYWNoZURpc2FibGVkKGVuYWJsZWQpOwogICAgIH0sCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMK
aW5kZXggMDYyOWJmNjNjNjMzYjVmYzA4OWMzZGUwMjk5MjBhMDk4NTgwN2Y4MS4uNzM3ZWZjYWMy
Yzg2ZmQ5MmEwMjNlZDIzNGI4NzUxNGZhMjkyMzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTc5NSw3ICs3OTUsNyBA
QCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IF9vblJlcXVlc3RVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBy
ZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3R9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVl
c3QocmVxdWVzdCk7CiAgICAgfSwKIApAQCAtODIwLDcgKzgyMCw3IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9wcmVzZXJ2ZUxv
Z1RvZ2dsZS50b2dnbGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBmcmFt
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5k
YXRhOworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVGcmFtZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgbG9hZGVySWQgPSBmcmFt
ZS5sb2FkZXJJZDsKIAogICAgICAgICAvLyBQcmVzZXJ2ZSBwcm92aXNpb25hbCBsb2FkIHJlcXVl
c3RzLgpAQCAtMTUxOCw3ICsxNTE4LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIHJldmVhbCgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbCh0aGlzKTsKLSAg
ICAgICAgICAgIHRoaXMucmV2ZWFsQW5kSGlnaGxpZ2h0UmVxdWVzdCgvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gdGFyZ2V0KTsKKyAgICAgICAgICAgIHRoaXMucmV2
ZWFsQW5kSGlnaGxpZ2h0UmVxdWVzdCgvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVx
dWVzdH0gKi8gKHRhcmdldCkpOwogICAgICAgICB9CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51
VGl0bGVzKCkgPyAiUmV2ZWFsIGluIG5ldHdvcmsgcGFuZWwiIDogIlJldmVhbCBpbiBOZXR3b3Jr
IFBhbmVsIiksIHJldmVhbC5iaW5kKHRoaXMpKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNv
ZGVQcm92aWRlci5qcwppbmRleCBjMmQwZjAzODU5MjhiNTU0NmUwOTljOTZjMTNkZTgyOGU4OTI2
M2M5Li4xMGZhODZjOTYwMTE5NjRlMmQ0M2JjODdjNjgyODIyZTgwNmMyMmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQ
cm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcwpAQCAtNjcsNyArNjcsNyBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBf
cGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBz
Y3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgaWYgKCFzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5pc0lu
bGluZVNjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB2YXIgaXNEeW5hbWlj
QW5vbnltb3VzU2NyaXB0OwpAQCAtOTMsNyArOTMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1VJ
U291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcmVzb3VyY2VB
ZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFy
IHJlc291cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIChldmVudC5k
YXRhKTsKICAgICAgICAgdGhpcy5fYWRkRmlsZShyZXNvdXJjZS51cmwsIHJlc291cmNlKTsKICAg
ICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09i
amVjdFBvcG92ZXJIZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L09iamVjdFBvcG92ZXJIZWxwZXIuanMKaW5kZXggMzgwZjRkYjhmMGFjNmUxZmE3MDFhYTEyMzU2
YzExYjVkZDMwOTZkYy4uYjBiZDQzMWE2YWZmZDMyODIxYzMzY2U1YmEwODk5MjMxYmQ1NDJiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3Bv
dmVySGVscGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2Jq
ZWN0UG9wb3ZlckhlbHBlci5qcwpAQCAtOTAsNyArOTAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0
UG9wb3ZlckhlbHBlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbk5hbWUudGV4dENvbnRlbnQgPSByZXNwb25zZS5uYW1lIHx8IHJlc3BvbnNlLmluZmVycmVk
TmFtZSB8fCByZXNwb25zZS5kaXNwbGF5TmFtZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihh
bm9ueW1vdXMgZnVuY3Rpb24pIik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xp
bmtpZmllciA9IG5ldyBXZWJJbnNwZWN0b3IuTGlua2lmaWVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9ufSAqLyByZXNwb25zZS5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuTG9jYXRpb259ICovIChyZXNwb25zZS5sb2NhdGlvbik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgbGluayA9IHRoaXMuX2xpbmtpZmllci5saW5raWZ5UmF3TG9jYXRpb24ocmF3
TG9jYXRpb24sICJmdW5jdGlvbi1sb2NhdGlvbi1saW5rIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobGluaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZS5hcHBlbmRD
aGlsZChsaW5rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzCmlu
ZGV4IGEwY2M5Nzg0OGQ1NmQ3ZjAzOTM0MDBmNzE3ZjRhMzJlMzEyZTQ4NGQuLjEyMGM2NzU4MmRh
YjAzZGM1MGUzMjUwYWFhNWYwMjMzMDJkMTZiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25z
b2xlTWVzc2FnZUhlbHBlci5qcwpAQCAtNTUsNyArNTUsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2Vu
dGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9j
b25zb2xlTWVzc2FnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBt
ZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2V9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKCFtZXNzYWdlLnVybCB8
fCAhbWVzc2FnZS5pc0Vycm9yT3JXYXJuaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTkyLDcgKzkyLDcgQEAgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVs
cGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5j
dGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBzY3JpcHQgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICB2
YXIgbWVzc2FnZXMgPSB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzW3NjcmlwdC5zb3VyY2VV
UkxdOwogICAgICAgICBpZiAoIW1lc3NhZ2VzKQpAQCAtMTAxLDcgKzEwMSw3IEBAIFdlYkluc3Bl
Y3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciBwZW5kaW5nTWVzc2FnZXMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtZXNzYWdlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBtZXNz
YWdlc1tpXTsKLSAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIG1lc3NhZ2UubG9jYXRpb24oKTsKKyAg
ICAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb259ICovIChtZXNzYWdlLmxvY2F0aW9uKCkpOwogICAgICAgICAgICAg
aWYgKHNjcmlwdC5zY3JpcHRJZCA9PT0gcmF3TG9jYXRpb24uc2NyaXB0SWQpCiAgICAgICAgICAg
ICAgICAgdGhpcy5fYWRkQ29uc29sZU1lc3NhZ2VUb1NjcmlwdChtZXNzYWdlLCByYXdMb2NhdGlv
bik7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggNWI2YTI0ZGQyYzM3NWRmNGU0ODM2ZTVi
MDFjY2Y3YjRhNDBmZjhmOS4uM2U5MDg4NTgyNTIxNGNjNGE2ZTIxODhiYzJiMGIxY2VmZjgzMWE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxl
c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZXNQYW5lbC5qcwpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcu
Y3VycmVudFBhbmVsKCkgIT09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dmFyIG9iamVjdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gdGFy
Z2V0OworICAgICAgICB2YXIgb2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0fSAqLyAodGFyZ2V0KTsKICAgICAgICAgdmFyIG9iamVjdElkID0gb2JqZWN0Lm9iamVj
dElkOwogICAgICAgICBpZiAoIW9iamVjdElkKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1h
cHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2Ny
aXB0TWFwcGluZy5qcwppbmRleCBiMGQzYTgxMDVmNjA5MzEyMDFmYjZhNTE0YWYxMTI4NTBlYTZk
MDQ2Li4zYmY1ZTMwMWM5NjkxZWUzYWU4ODc5ZTE4MjQ1NjE0MmRiYTQ3NDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGlu
Zy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2Ny
aXB0TWFwcGluZy5qcwpAQCAtNTYsNyArNTYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2Nh
dGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgewotICAgICAgICB2YXIgZGVidWdnZXJN
b2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbn0gKi8gcmF3TG9jYXRpb247CisgICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24g
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAocmF3
TG9jYXRpb24pOwogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuc2NyaXB0Rm9ySWQoZGVidWdnZXJNb2RlbExvY2F0aW9uLnNjcmlwdElkKTsKICAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVVJU291cmNlQ29kZUZvclNjcmlwdChz
Y3JpcHQpIHx8IHRoaXMuX2dldE9yQ3JlYXRlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKHNjcmlwdCk7
CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuc2NyaXB0RmlsZSgpICYmIHVpU291cmNlQ29kZS5z
Y3JpcHRGaWxlKCkuaGFzRGl2ZXJnZWRGcm9tVk0oKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNv
dXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoISF1aVNvdXJjZUNvZGUudXJsKTsKIAogICAgICAgICB2YXIgc2NyaXB0cyA9IHRo
aXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKQEAgLTM5OCw3ICszOTgs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRG
aWxlLkV2ZW50cy5EaWRNZXJnZVRvVk0sIHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFy
IHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbn0gKi8gdGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDAsIDAp
OworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAodGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKDAsIDApKTsKICAgICAgICAgaWYgKCFyYXdMb2NhdGlvbikKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LnNjcmlwdEZvcklkKHJhd0xvY2F0aW9uLnNjcmlwdElkKTsKQEAgLTQwNyw3ICs0MDcsNyBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxlLnByb3RvdHlwZSA9IHsKIAogICAgIF93b3Jr
aW5nQ29weUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHdhc0Rp
cnR5ID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyBldmVudC5kYXRhLndhc0RpcnR5OworICAgICAg
ICB2YXIgd2FzRGlydHkgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChldmVudC5kYXRhLndhc0Rp
cnR5KTsKICAgICAgICAgaWYgKCF3YXNEaXJ0eSAmJiB0aGlzLl91aVNvdXJjZUNvZGUuaXNEaXJ0
eSgpICYmICF0aGlzLl9oYXNEaXZlcmdlZEZyb21WTSkgewogICAgICAgICAgICAgdGhpcy5faXNE
aXZlcmdpbmdGcm9tVk0gPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdEZpbGUuRXZlbnRzLldpbGxEaXZlcmdlRnJvbVZN
LCB0aGlzLl91aVNvdXJjZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKaW5kZXggZjU1Mjc5MTVjMWVlZWZm
ODRmMjNlNDkxYmExZDZkMDQwZmExZTQ3ZC4uZTllMTJiOWRiNGNiOGYyYTNmODI0NWQ3MjQ5ZTBk
OTM3NDFmYmYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVRyZWVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzCkBAIC0xNzYsNyArMTc2LDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9j
YWNoZWRSZXNvdXJjZXNQcm9jZXNzZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8g
ZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5OZXR3b3JrUmVxdWVzdH0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAocmVxdWVzdC5m
YWlsZWQgfHwgcmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIp
CiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9jb25zb2xlTWVz
c2FnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtc2cgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAg
ICAgdmFyIG1zZyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfSAqLyAo
ZXZlbnQuZGF0YSk7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IG1zZy51cmwgPyB0aGlzLnJlc291
cmNlRm9yVVJMKG1zZy51cmwpIDogbnVsbDsKICAgICAgICAgaWYgKHJlc291cmNlKQogICAgICAg
ICAgICAgdGhpcy5fYWRkQ29uc29sZU1lc3NhZ2VUb1Jlc291cmNlKG1zZywgcmVzb3VyY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMKaW5kZXggNDMwZWE4YTVkODczY2Y2YjgzY2Q4OGExMmI3MGVlZTg1OTU0ZWRhNS4uMmRh
M2U5ZTFkNmZlYTg5YmYzZjk1NDgzNThjZWY0MGU2NjJkMjgyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0yOTcs
NyArMjk3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgKi8KICAgICBfZGF0YWJhc2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgZGF0YWJhc2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EYXRhYmFzZX0gKi8gZXZl
bnQuZGF0YTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
RGF0YWJhc2V9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRkRGF0YWJhc2UoZGF0
YWJhc2UpOwogICAgIH0sCiAKQEAgLTMzMSw3ICszMzEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9kb21TdG9yYWdlQWRkZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5ET01TdG9yYWdlfSovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBkb21T
dG9yYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZX0qLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIHRoaXMuX2FkZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7CiAgICAgfSwKIApA
QCAtNTc3LDcgKzU3Nyw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICovCiAgICAgX2RvbVN0b3JhZ2VVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciBzdG9yYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZX0qLyBldmVudC5kYXRhOworICAgICAgICB2YXIgc3RvcmFnZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2V9Ki8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgdmlldyA9
IHRoaXMuX2RvbVN0b3JhZ2VWaWV3cy5nZXQoc3RvcmFnZSk7CiAgICAgICAgIGlmICh0aGlzLnZp
c2libGVWaWV3ICYmIHZpZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCiAgICAgICAgICAgICB2aWV3
LnVwZGF0ZSgpOwpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaW5kZXhlZERCQWRkZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGRhdGFiYXNlSWQgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkfSAqLyBldmVudC5kYXRhOwor
ICAgICAgICB2YXIgZGF0YWJhc2VJZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLkRhdGFiYXNlSWR9ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICB2YXIgaWRiRGF0
YWJhc2VUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVu
dCh0aGlzLl9zdG9yYWdlUGFuZWwsIHRoaXMuX2luZGV4ZWREQk1vZGVsLCBkYXRhYmFzZUlkKTsK
ICAgICAgICAgdGhpcy5faWRiRGF0YWJhc2VUcmVlRWxlbWVudHMucHVzaChpZGJEYXRhYmFzZVRy
ZWVFbGVtZW50KTsKQEAgLTE0NjAsNyArMTQ2MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2luZGV4ZWREQlJlbW92ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGRhdGFiYXNlSWQgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkfSAqLyBldmVudC5kYXRh
OworICAgICAgICB2YXIgZGF0YWJhc2VJZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLkRhdGFiYXNlSWR9ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICB2YXIgaWRi
RGF0YWJhc2VUcmVlRWxlbWVudCA9IHRoaXMuX2lkYkRhdGFiYXNlVHJlZUVsZW1lbnQoZGF0YWJh
c2VJZCkKICAgICAgICAgaWYgKCFpZGJEYXRhYmFzZVRyZWVFbGVtZW50KQpAQCAtMTQ3Niw3ICsx
NDc2LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgKi8KICAgICBfaW5kZXhlZERCTG9hZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBkYXRhYmFzZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLkRhdGFiYXNlfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZGF0YWJhc2UgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZX0gKi8gKGV2ZW50LmRh
dGEpOwogCiAgICAgICAgIHZhciBpZGJEYXRhYmFzZVRyZWVFbGVtZW50ID0gdGhpcy5faWRiRGF0
YWJhc2VUcmVlRWxlbWVudChkYXRhYmFzZS5kYXRhYmFzZUlkKQogICAgICAgICBpZiAoIWlkYkRh
dGFiYXNlVHJlZUVsZW1lbnQpCkBAIC0xNTM4LDE0ICsxNTM4LDE0IEBAIFdlYkluc3BlY3Rvci5G
aWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9maWxlU3lzdGVt
QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gKi8gZXZl
bnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2
YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJl
ZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCBmaWxlU3lzdGVtKTsKICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChmaWxlU3lzdGVtVHJlZUVsZW1lbnQpOwogICAgIH0sCiAKICAgICBfZmlsZVN5
c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZpbGVTeXN0
ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gKi8gKGV2ZW50LmRhdGEpOwogICAg
ICAgICB2YXIgZmlsZVN5c3RlbVRyZWVFbGVtZW50ID0gdGhpcy5fZmlsZVN5c3RlbVRyZWVFbGVt
ZW50QnlOYW1lKGZpbGVTeXN0ZW0ubmFtZSk7CiAgICAgICAgIGlmICghZmlsZVN5c3RlbVRyZWVF
bGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgV2ViSW5z
cGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIF9maWxl
U3lzdGVtVHJlZUVsZW1lbnRCeU5hbWU6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1OYW1lKQogICAgIHsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICB2YXIgY2hpbGQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVHJlZUVsZW1lbnR9ICovIHRoaXMuY2hpbGRyZW5baV07CisgICAgICAgICAgICB2YXIgY2hp
bGQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnR9ICovICh0
aGlzLmNoaWxkcmVuW2ldKTsKICAgICAgICAgICAgIGlmIChjaGlsZC5maWxlU3lzdGVtTmFtZSA9
PT0gZmlsZVN5c3RlbU5hbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5b
aV07CiAgICAgICAgIH0KQEAgLTIyMTEsNyArMjIxMSw3IEBAIFdlYkluc3BlY3Rvci5TZWFyY2hS
ZXN1bHRzVHJlZUVsZW1lbnRzVHJhdmVyc2VyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBf
dHJhdmVyc2VOZXh0OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fSAqLyB0cmVl
RWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgdGhpcy5fcm9vdCwgdHJ1ZSk7
CisgICAgICAgIHJldHVybiAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVF
bGVtZW50fSAqLyAodHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRo
aXMuX3Jvb3QsIHRydWUpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yMjIwLDcgKzIyMjAsNyBA
QCBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0c1RyZWVFbGVtZW50c1RyYXZlcnNlci5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgX3RyYXZlcnNlUHJldmlvdXM6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkJhc2VT
dG9yYWdlVHJlZUVsZW1lbnR9ICovIHRyZWVFbGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxl
bWVudChmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fSAqLyAodHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91
c1RyZWVFbGVtZW50KGZhbHNlLCB0cnVlKSk7CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlW
aWV3LmpzCmluZGV4IDU2YjgyMjY3NjJlNTRhZjQ4MjRiOGI2M2U3MDRhZTQyMjRkM2FjNmEuLjQ1
OTJlNGFkNTExODk5OTc0YjA3MWVkYmNmMzYwYTIzZjZjNGY3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcu
anMKQEAgLTEyOCw3ICsxMjgsNyBAQCBXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5Vmlldy5w
cm90b3R5cGUgPSB7CiAKICAgICBfcmV2aXNpb25BZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSAqLyBldmVudC5kYXRhLnVpU291cmNlQ29kZTsKKyAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50
LmRhdGEudWlTb3VyY2VDb2RlKTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZUl0ZW0gPSB0aGlz
Ll91aVNvdXJjZUNvZGVJdGVtcy5nZXQodWlTb3VyY2VDb2RlKTsKICAgICAgICAgaWYgKCF1aVNv
dXJjZUNvZGVJdGVtKSB7CiAgICAgICAgICAgICB1aVNvdXJjZUNvZGVJdGVtID0gdGhpcy5fY3Jl
YXRlVUlTb3VyY2VDb2RlSXRlbSh1aVNvdXJjZUNvZGUpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIFdl
Ykluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNv
dXJjZUNvZGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlVUlT
b3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TQVNTU291cmNlTWFwcGluZy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanMKaW5kZXggYzA4
Zjg4YTE2NTYyNGE5ZmM5ODI5NjdlMDk1NTA2NTEyNjc5ZWQ0Mi4uNDNiYzFlN2NmNDY2NDBlNzY4
ZDk3NmQ5MWVhZjBiNzY2ZWQwNTA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TQVNTU291cmNlTWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NBU1NTb3VyY2VNYXBwaW5nLmpzCkBAIC02Nyw3ICs2Nyw3IEBA
IFdlYkluc3BlY3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgX2ZpbGVTYXZlRmluaXNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFy
IHNhc3NVUkwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFy
IHNhc3NVUkwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBm
dW5jdGlvbiBjYWxsYmFjaygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90
aW1lb3V0Rm9yVVJMW3Nhc3NVUkxdOwpAQCAtMTA0LDcgKzEwNCw3IEBAIFdlYkluc3BlY3Rvci5T
QVNTU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Jlc291cmNlQWRk
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBy
ZXNvdXJjZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VU
eXBlcy5TdHlsZXNoZWV0KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xODksNyArMTg5LDcg
QEAgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAg
ewotICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0
aW9uICovIHJhd0xvY2F0aW9uOworICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUgV2Vi
SW5zcGVjdG9yLkNTU0xvY2F0aW9uICovIChyYXdMb2NhdGlvbik7CiAgICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gdGhpcy5fdWlMb2NhdGlvbnNbbG9jYXRpb24udXJsICsgIjoiICsgbG9jYXRpb24u
bGluZU51bWJlcl07CiAgICAgICAgIGlmICghdWlMb2NhdGlvbikgewogICAgICAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwobG9jYXRp
b24udXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NvcGVDaGFpblNpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMKaW5kZXggYWI2OTJlOWRhYjkzN2Q4ODZmY2Uw
ODRmNDY4ZDQzNWZjZTc0MGMzNS4uMTIwOTUyNmI3ZWJiM2NlZThjODI0NGQzMzk2ZjM0NmJiZGUx
ZWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29w
ZUNoYWluU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMKQEAgLTgzLDcgKzgzLDcgQEAgV2ViSW5zcGVj
dG9yLlNjb3BlQ2hhaW5TaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgZXhjZXB0aW9uID0gZGV0YWlscy5yZWFzb24gPT09IFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkJyZWFrUmVhc29uLkV4Y2VwdGlvbiA/IGRldGFpbHMuYXV4RGF0YSA6IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmFQcm9wZXJ0aWVzID0gZXh0cmFQcm9wZXJ0aWVzIHx8IFtdOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleGNlcHRpb25PYmplY3QgPSAvKiogQHR5
cGUge1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9ICovIGV4Y2VwdGlvbjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZXhjZXB0aW9uT2JqZWN0ID0gLyoqIEB0eXBlIHtSdW50aW1l
QWdlbnQuUmVtb3RlT2JqZWN0fSAqLyAoZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHRyYVByb3BlcnRpZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dFByb3BlcnR5KCI8ZXhjZXB0aW9uPiIsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQoZXhjZXB0aW9uT2JqZWN0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzCmluZGV4IGFhZjM4N2FhNzljNDkxMzFlMWU5ZDI5MDQwNTJlYzQyMmFkMGZjNTYu
LjQ0NWM1ZDE0MDEzMDQzODUyOTAyZjdhZGE1MTZjZTM2NDZjM2M4MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCkBAIC0yMjQsNyArMjI0LDcgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
dWlMb2NhdGlvbjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxM
b2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259
ICovIHRoaXMucmF3TG9jYXRpb24oKTsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlv
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovICh0
aGlzLnJhd0xvY2F0aW9uKCkpOwogICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0LnJhd0xvY2F0
aW9uVG9VSUxvY2F0aW9uKGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5saW5lTnVtYmVyLCBkZWJ1Z2dl
ck1vZGVsTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCmluZGV4IGI5
OWVhYjdjZDUxZmNjYWY1NTU2NmQzMTM0ODFhNTg3ZGMzOTNjZGIuLjNlZWRlYmEyN2I3YzZhMDRl
ZTk0ODgzNThlYTRhYjZiOTM0YjJlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCkBAIC0xMjUsNyArMTI1LDcgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2NhY2hlZFdvcmtlcikgewogICAgICAgICAgICAgdGhpcy5fY2FjaGVkV29y
a2VyID0gbmV3IFdvcmtlcigiU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzIik7Ci0gICAgICAgICAg
ICB0aGlzLl9jYWNoZWRXb3JrZXIub25tZXNzYWdlID0gLyoqIEB0eXBlIHtmdW5jdGlvbih0aGlz
Oldvcmtlcil9ICovIHRoaXMuX2RpZEZvcm1hdENvbnRlbnQuYmluZCh0aGlzKTsKKyAgICAgICAg
ICAgIHRoaXMuX2NhY2hlZFdvcmtlci5vbm1lc3NhZ2UgPSAvKiogQHR5cGUge2Z1bmN0aW9uKHRo
aXM6V29ya2VyKX0gKi8gKHRoaXMuX2RpZEZvcm1hdENvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZFdvcmtlcjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4
IDk0Njk4NzAyMWM0ZDE0YmU3NGRkOTYzYmQxZmY1YjEwMjUwNGQ5YzguLjlhMDNhZDIzNDZiYjY4
YzVjMzIyZDkzZDViNzQzZTVlYWZmOTM0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0yMzcsNyArMjM3LDcgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3VpU291
cmNlQ29kZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRh
dGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRkVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX3VpU291cmNlQ29kZVJlbW92
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIucmVtb3Zl
VUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvci5yZW1v
dmVVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlU291cmNl
RnJhbWUodWlTb3VyY2VDb2RlKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICBfZWRpdG9yQ2xvc2VkOiBmdW5jdGlvbihldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvckNvbnRyb2xsZXIuaGlkZU5hdmlnYXRv
ck92ZXJsYXkoKTsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRh
dGEpOwogCiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VUlTb3VyY2VDb2RlID09PSB1aVNvdXJj
ZUNvZGUpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVudFVJU291cmNlQ29kZTsKQEAg
LTU1Miw3ICs1NTIsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsK
IAogICAgIF9lZGl0b3JTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAq
LyBldmVudC5kYXRhOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHZhciBzb3Vy
Y2VGcmFtZSA9IHRoaXMuX3Nob3dGaWxlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX25h
dmlnYXRvckNvbnRyb2xsZXIuaGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKICAgICAgICAgc291cmNl
RnJhbWUuZm9jdXMoKTsKQEAgLTU2MSw3ICs1NjEsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9zY3JpcHRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhLnVpU291cmNlQ29kZTsKKyAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8g
KGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlKTsKICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhp
cy5fc2hvd0ZpbGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yQ29udHJv
bGxlci5oaWRlTmF2aWdhdG9yT3ZlcmxheSgpOwogICAgICAgICBpZiAoc291cmNlRnJhbWUgJiYg
ZXZlbnQuZGF0YS5mb2N1c1NvdXJjZSkKQEAgLTkxOCw3ICs5MTgsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBjYW5TZWFyY2hBbmRSZXBs
YWNlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgdmlldyA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lfSAqLyB0aGlzLnZpc2libGVWaWV3OworICAgICAgICB2YXIg
dmlldyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lfSAqLyAodGhpcy52aXNp
YmxlVmlldyk7CiAgICAgICAgIHJldHVybiAhIXZpZXcgJiYgdmlldy5jYW5FZGl0U291cmNlKCk7
CiAgICAgfSwKIApAQCAtOTI3LDcgKzkyNyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoOiBmdW5jdGlv
bih0ZXh0KQogICAgIHsKLSAgICAgICAgdmFyIHZpZXcgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZX0gKi8gdGhpcy52aXNpYmxlVmlldzsKKyAgICAgICAgdmFyIHZpZXcgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0gKi8gKHRoaXMudmlzaWJsZVZpZXcp
OwogICAgICAgICB2aWV3LnJlcGxhY2VTZWFyY2hNYXRjaFdpdGgodGV4dCk7CiAgICAgfSwKIApA
QCAtOTM3LDcgKzkzNyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIHJlcGxhY2VBbGxXaXRoOiBmdW5jdGlvbihxdWVyeSwgdGV4dCkKICAg
ICB7Ci0gICAgICAgIHZhciB2aWV3ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWV9ICovIHRoaXMudmlzaWJsZVZpZXc7CisgICAgICAgIHZhciB2aWV3ID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWV9ICovICh0aGlzLnZpc2libGVWaWV3KTsKICAgICAgICAg
dmlldy5yZXBsYWNlQWxsV2l0aChxdWVyeSwgdGV4dCk7CiAgICAgfSwKIApAQCAtOTYxLDcgKzk2
MSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzb3VyY2VGcmFtZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUpIHsKLSAgICAgICAgICAgIHZhciBqYXZhU2NyaXB0
U291cmNlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJh
bWV9ICovIHNvdXJjZUZyYW1lOworICAgICAgICAgICAgdmFyIGphdmFTY3JpcHRTb3VyY2VGcmFt
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZX0gKi8gKHNv
dXJjZUZyYW1lKTsKICAgICAgICAgICAgIGphdmFTY3JpcHRTb3VyY2VGcmFtZS50b2dnbGVCcmVh
a3BvaW50T25DdXJyZW50TGluZSgpOwogICAgICAgICB9ICAgICAgICAgICAgCiAgICAgfSwKQEAg
LTEwMjcsOCArMTAyNyw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgX2ZpbGVSZW5hbWVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICov
IGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlOwotICAgICAgICB2YXIgbmFtZSA9IC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyBldmVudC5kYXRhLm5hbWU7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291
cmNlQ29kZSk7CisgICAgICAgIHZhciBuYW1lID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVu
dC5kYXRhLm5hbWUpOwogICAgICAgICBpZiAoIXVpU291cmNlQ29kZS5pc1NuaXBwZXQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwu
cmVuYW1lU2NyaXB0U25pcHBldCh1aVNvdXJjZUNvZGUsIG5hbWUpOwpAQCAtMTA2OSw3ICsxMDY5
LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgX2l0ZW1SZW5hbWluZ1JlcXVlc3RlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIAogICAg
ICAgICB2YXIgc2hvdWxkSGlkZU5hdmlnYXRvciA9ICF0aGlzLl9uYXZpZ2F0b3JDb250cm9sbGVy
LmlzTmF2aWdhdG9yUGlubmVkKCk7CiAgICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3JDb250cm9s
bGVyLmlzTmF2aWdhdG9ySGlkZGVuKCkpCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gKi8gdGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAodGFyZ2V0KTsKICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIG1vZGlmaWNhdGlv
bnMuLi4iKSwgdGhpcy5fc2hvd0xvY2FsSGlzdG9yeS5iaW5kKHRoaXMsIHVpU291cmNlQ29kZSkp
OwogICAgICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodWlT
b3VyY2VDb2RlLnVybCk7CiAgICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS5yZXF1ZXN0
KQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHJlbW90
ZU9iamVjdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gdGFyZ2V0
OworICAgICAgICB2YXIgcmVtb3RlT2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0fSAqLyAodGFyZ2V0KTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC50eXBlICE9
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbERlc2NyaXB0b3IuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbERlc2NyaXB0b3Iu
anMKaW5kZXggYTMyMzBhYTJiNmE5ZGQ2NjZlNGFkZjMxZmJiMmQ3MzhmYTFmYmZkZC4uOGYzODdm
NjViNmVmMTgwM2Y2YWQ5ZGJiOTEwMmJhNWFhN2NkYjI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsRGVzY3JpcHRv
ci5qcwpAQCAtNDcsNyArNDcsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsRGVzY3JpcHRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBoYXNBcHBsaWNhYmxlSXRlbXMgPSB0YXJnZXQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlOwogCiAgICAgICAgIGlmICghaGFz
QXBwbGljYWJsZUl0ZW1zICYmIHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QpIHsKLSAgICAgICAgICAgIHZhciByZW1vdGVPYmplY3QgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3R9ICovIHRhcmdldDsKKyAgICAgICAgICAgIHZhciByZW1vdGVP
YmplY3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9ICovICh0YXJnZXQp
OwogICAgICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC50eXBlICE9PSAiZnVuY3Rpb24iKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzCmluZGV4IDRk
ZTc1MDlkYzU0Mjk4NzI0YjE4Y2FhMTVjNDFmMjdjMjAxNGNjMjEuLmJkN2UyNmMyYWY3NDQ1NjQ3
MTNmYWU4MDRjMGI2ODNjYzExMGQyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU291cmNlTWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanMKQEAgLTQ5LDcgKzQ5
LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikK
ICAgICB7Ci0gICAgICAgIHZhciBsb2NhdGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NT
TG9jYXRpb24gKi8gcmF3TG9jYXRpb247CisgICAgICAgIHZhciBsb2NhdGlvbiA9IC8qKiBAdHlw
ZSBXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb24gKi8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclVSTFtsb2NhdGlvbi51cmxdOwog
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwg
bG9jYXRpb24ubGluZU51bWJlciwgMCk7CiAgICAgfSwKQEAgLTY3LDcgKzY3LDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogCiAgICAgX3VpU291cmNl
Q29kZUFkZGVkVG9Xb3Jrc3BhY2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8g
ZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAoIXVpU291
cmNlQ29kZS51cmwgfHwgdGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJMW3VpU291cmNlQ29kZS51cmxd
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmNvbnRlbnRU
eXBlKCkgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRh
aW5lci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9y
Q29udGFpbmVyLmpzCmluZGV4IGQ0YTRlOWUwYTcwNjA4MGFlM2JhZTExZThjZWI2M2NjM2M2NWZj
MTUuLjA1NmFkYmNhMWUxYWQ4NTUwOGMxOTRkZWFmZjc5M2Q2YjViOTRhNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVy
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9y
Q29udGFpbmVyLmpzCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRp
dG9yQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9zY3JvbGxDaGFuZ2VkOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBsaW5lTnVtYmVyID0gLyoqIEB0eXBlIHtudW1i
ZXJ9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBsaW5lTnVtYmVyID0gLyoqIEB0eXBlIHtu
dW1iZXJ9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5faGlzdG9yeS51cGRhdGVTY3Jv
bGxMaW5lTnVtYmVyKHRoaXMuX2N1cnJlbnRGaWxlLnVybCwgbGluZU51bWJlcik7CiAgICAgICAg
IHRoaXMuX2hpc3Rvcnkuc2F2ZSh0aGlzLl9wcmV2aW91c2x5Vmlld2VkRmlsZXNTZXR0aW5nKTsK
ICAgICB9LAogCiAgICAgX3NlbGVjdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHJhbmdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSAq
LyBldmVudC5kYXRhOworICAgICAgICB2YXIgcmFuZ2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5UZXh0UmFuZ2V9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5faGlzdG9yeS51cGRh
dGVTZWxlY3Rpb25SYW5nZSh0aGlzLl9jdXJyZW50RmlsZS51cmwsIHJhbmdlKTsKICAgICAgICAg
dGhpcy5faGlzdG9yeS5zYXZlKHRoaXMuX3ByZXZpb3VzbHlWaWV3ZWRGaWxlc1NldHRpbmcpOwog
ICAgIH0sCkBAIC0yOTUsOCArMjk1LDggQEAgV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRh
aW5lci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3RhYkNsb3NlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB2YXIgdGFiSWQgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gZXZl
bnQuZGF0YS50YWJJZDsKLSAgICAgICAgdmFyIHVzZXJHZXN0dXJlID0gLyoqIEB0eXBlIHtib29s
ZWFufSAqLyBldmVudC5kYXRhLmlzVXNlckdlc3R1cmU7CisgICAgICAgIHZhciB0YWJJZCA9IC8q
KiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YS50YWJJZCk7CisgICAgICAgIHZhciB1c2Vy
R2VzdHVyZSA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gKGV2ZW50LmRhdGEuaXNVc2VyR2VzdHVy
ZSk7CiAKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX2ZpbGVzW3RhYklkXTsKICAg
ICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGaWxlID09PSB1aVNvdXJjZUNvZGUpIHsKQEAgLTMxOSw4
ICszMTksOCBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfdGFiU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHRhYklkID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRhdGEudGFiSWQ7
Ci0gICAgICAgIHZhciB1c2VyR2VzdHVyZSA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gZXZlbnQu
ZGF0YS5pc1VzZXJHZXN0dXJlOworICAgICAgICB2YXIgdGFiSWQgPSAvKiogQHR5cGUge3N0cmlu
Z30gKi8gKGV2ZW50LmRhdGEudGFiSWQpOworICAgICAgICB2YXIgdXNlckdlc3R1cmUgPSAvKiog
QHR5cGUge2Jvb2xlYW59ICovIChldmVudC5kYXRhLmlzVXNlckdlc3R1cmUpOwogCiAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl9maWxlc1t0YWJJZF07CiAgICAgICAgIHRoaXMuX2lu
bmVyU2hvd0ZpbGUodWlTb3VyY2VDb2RlLCB1c2VyR2VzdHVyZSk7CkBAIC0zNjIsMjUgKzM2Miwy
NSBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKIAog
ICAgIF91aVNvdXJjZUNvZGVUaXRsZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAg
ICAgdGhpcy5fdXBkYXRlRmlsZVRpdGxlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIAogICAgIF91
aVNvdXJjZUNvZGVXb3JraW5nQ29weUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAg
ICAgdGhpcy5fdXBkYXRlRmlsZVRpdGxlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIAogICAgIF91
aVNvdXJjZUNvZGVXb3JraW5nQ29weUNvbW1pdHRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSAqLyBldmVudC50YXJnZXQ7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC50YXJnZXQpOwogICAg
ICAgICB0aGlzLl91cGRhdGVGaWxlVGl0bGUodWlTb3VyY2VDb2RlKTsKICAgICB9LAogCiAgICAg
X3VpU291cmNlQ29kZUZvcm1hdHRlZENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAg
ICAgdGhpcy5fdXBkYXRlRmlsZVRpdGxlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCmlu
ZGV4IGU1MGNkNWI2MGZmM2JlNzMxY2NjMDhiODNiNzY0YjNhZDMwNmU0YmUuLjkyNGQzNTNhNjZh
YzExZDliZGViYWJmOGQzYWY4MTg0YmQzZGY2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKQEAgLTI5NSw3ICsyOTUsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNb2RlbExvYWRlci5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdmFyIGl0ZW1zOwogICAgICAgICB0cnkgewotICAgICAgICAgICAgaXRlbXMgPSAvKiogQHR5
cGUge0FycmF5fSAqLyBKU09OLnBhcnNlKGpzb24pOworICAgICAgICAgICAgaXRlbXMgPSAvKiog
QHR5cGUge0FycmF5fSAqLyAoSlNPTi5wYXJzZShqc29uKSk7CiAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93RXJyb3JNZXNzYWdlKCJNYWxmb3JtZWQg
dGltZWxpbmUgZGF0YS4iKTsKICAgICAgICAgICAgIHRoaXMuX21vZGVsLnJlc2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZUZy
YW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGVG
cmFtZS5qcwppbmRleCA3ZTBiZjUxY2RkZmViY2NlYTEyNGNiZGY0Y2I3MGRkZGY5ODg3NmJlLi40
M2Q3NjJkYmU3ZWIzYmE0MWI5MzIzNWIwODljNjk3NmM1ZmNhZDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZUZyYW1lLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlRnJhbWUuanMK
QEAgLTgyLDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZUZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICBfb25Gb3JtYXR0ZWRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50
LmRhdGEuY29udGVudDsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAvKiogQHR5cGUge3N0cmluZ30g
Ki8gKGV2ZW50LmRhdGEuY29udGVudCk7CiAgICAgICAgIHRoaXMuX2lubmVyU2V0Q29udGVudChj
b250ZW50KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dvcmtzcGFjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV29ya3NwYWNlLmpzCmluZGV4IGFjODExMzBhZWE2NjYwNmIxZjExZTJiMGE1YTljZTIzZDRl
OWQ2ZDYuLjA5YWJlMTZjMTYwNDRlMjZlMzk1ZGM0N2Q5MGViMzI1YTUxZTI2YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCkBAIC01MCw3
ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVyLnByb3RvdHlwZSA9IHsK
IAogICAgIF9mcmFtZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBm
cmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVu
dC5kYXRhOworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVGcmFtZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAoZnJhbWUuaXNNYWlu
RnJhbWUoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXZpc2lvbi5maWx0ZXJPdXRTdGFs
ZVJldmlzaW9ucygpOwogICAgIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBXZWJJbnNwZWN0b3IuUHJv
amVjdC5wcm90b3R5cGUgPSB7CiAKICAgICBfZmlsZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciBmaWxlRGVzY3JpcHRvciA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LkZpbGVEZXNjcmlwdG9yfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZmlsZURlc2NyaXB0
b3IgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlRGVzY3JpcHRvcn0gKi8gKGV2ZW50LmRh
dGEpOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy51aVNvdXJjZUNvZGVGb3JVUkwo
ZmlsZURlc2NyaXB0b3IucGF0aCk7CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKQEAgLTE1Niw3ICsxNTYsNyBAQCBXZWJJbnNwZWN0
b3IuUHJvamVjdC5wcm90b3R5cGUgPSB7CiAKICAgICBfZmlsZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8gZXZl
bnQuZGF0YTsKKyAgICAgICAgdmFyIHBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50
LmRhdGEpOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy51aVNvdXJjZUNvZGVGb3JV
UkwocGF0aCk7CiAgICAgICAgIGlmICghdWlTb3VyY2VDb2RlKQogICAgICAgICAgICAgcmV0dXJu
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172305</attachid>
            <date>2012-11-05 03:17:22 -0800</date>
            <delta_ts>2012-11-05 05:26:35 -0800</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-101066-20121105151535.patch</filename>
            <type>text/plain</type>
            <size>95982</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk2MzE0YmIxYmE4Zjk1
ZjQ1ZGFlMDJlZjhlYjU0Y2IxMzZiYmM1NC4uZTA4NTg1MTg5YjI4NzY2NTcxYzk1MmM1OTA1Mjc1
OWM0Njk1YzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxMi0xMS0wMiAgQW5k
cmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGaXgganNjb21waWxlciBjYXN0IHN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FzdHMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mICIv
KiogQHR5cGUge1R5cGVOYW1lfSAqLyAoZXhwcikiIGluc3RlYWQgb2YgIi8qKiBAdHlwZSB7VHlw
ZU5hbWV9ICovIGV4cHIiLgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1vZGVsLnByb3RvdHlwZS5fZnJhbWVOYXZpZ2F0ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5wcm90b3R5cGUuX2ZyYW1l
RGV0YWNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBl
Ll9vblJlcXVlc3RTdGFydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVy
Vmlldy5wcm90b3R5cGUuX29uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlRm9y
bWF0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZS5fbG9jYXRpb25V
cGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9icmVha3BvaW50QWRkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUuX2RvY3VtZW50VXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnBy
b3RvdHlwZS5fbmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFt
ZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlwZS5fcmVnaW9uTGF5b3V0VXBkYXRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlw
ZS5fc2VsZWN0ZWROb2RlQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb2Zp
bGVIZWFkZXIucHJvdG90eXBlLmNyZWF0ZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkxpdmVMb2NhdGlvbi5wcm90b3R5cGUudWlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZUNvbXB1dGVkU3R5bGVQYXlsb2FkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJhd0xv
Y2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlw
dE1hcHBpbmcucHJvdG90eXBlLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLl9mcmFtZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2ZyYW1lUmVtb3ZlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Eb2N1
bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmRpZFNldEJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnNl
dEJyZWFrcG9pbnRCeVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5w
cm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlw
ZS5zZXRCcmVha3BvaW50QnlTb3VyY2VJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlLmdldCBsb2NhdGlvbik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcGFyc2VkU2NyaXB0U291
cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RpcmVjdG9yeUNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fc29ydCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl91cGRhdGVC
cmVhZGNydW1iSWZOZWVkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbERlc2NyaXB0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bERlc2NyaXB0b3IucHJvdG90eXBlLmFwcGVuZEFwcGxpY2FibGVJdGVtcyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoLmdl
dCBub2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkFk
ZFJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlLl9oYW5kbGVPcGVuVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25TZXRSZXNvdXJjZUNvbnRlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlm
eVJlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUuX25vdGlmeVVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlmeVJlcXVlc3RGaW5p
c2hlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWV0YWRh
dGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LkZpbGVD
b250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9mcmFtZUFkZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fZnJhbWVEZXRhY2hl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbnNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50
cnlUcmVlRWxlbWVudC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IYW5kbGVyUmVnaXN0cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGFuZGxl
clJlZ2lzdHJ5LnByb3RvdHlwZS5fYXBwZW5kSHJlZkl0ZW1zKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdExvYWRlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlLndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUJhc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5sb2FkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX3NuYXBzaG90UmVjZWl2ZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZURl
dGFjaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZS5fa2V5Q29sdW1u
SGVhZGVyRnJhZ21lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VG
cmFtZS5wcm90b3R5cGUuX29uRm9ybWF0dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9icmVh
a3BvaW50UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VSZW1vdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
Ll9oYW5kbGVHdXR0ZXJDbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZUZyYW1lLnByb3RvdHlwZS5fY29udGludWVUb0xpbmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL05hdmlnYXRvclZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
Vmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVdvcmtpbmdDb3B5
Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUu
X3VpU291cmNlQ29kZVdvcmtpbmdDb3B5Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlRm9ybWF0dGVkQ2hhbmdlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlLl9vblJlcXVlc3RTdGFydGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fY2FjaGVEaXNhYmxlZFNldHRp
bmdDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX29uUmVx
dWVzdFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZS5fbWFpbkZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwucHJvdG90eXBlLnJldmVhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsLnByb3RvdHlwZS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUuX3BhcnNlZFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyLnByb3RvdHlwZS5fcmVzb3VyY2VBZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFBvcG92ZXJIZWxwZXIucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2Jq
ZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUuX3Nob3dPYmplY3RQb3BvdmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVy
LnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNj
cmlwdE1hcHBpbmcucHJvdG90eXBlLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdEZpbGUucHJvdG90eXBlLl93b3JraW5n
Q29weUNvbW1pdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxl
LnByb3RvdHlwZS5fd29ya2luZ0NvcHlDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fb25SZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX2RhdGFiYXNlQWRk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fZG9t
U3RvcmFnZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2luZGV4ZWREQkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUuX2luZGV4ZWREQlJlbW92ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZS5faW5kZXhlZERCTG9h
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fZmlsZVN5c3RlbUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fZmlsZVN5c3RlbVJlbW92ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9maWxl
U3lzdGVtVHJlZUVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFJl
c3VsdHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJvdG90eXBlLl90cmF2ZXJzZU5leHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJv
dG90eXBlLl90cmF2ZXJzZVByZXZpb3VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1JldmlzaW9uSGlzdG9yeVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25I
aXN0b3J5Vmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChyYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNo
YWluU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NvcGVDaGFpblNpZGVi
YXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbi5wcm90b3R5
cGUudWlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3Jt
YXR0ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlw
ZS5nZXQgX3dvcmtlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlT
b3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX2VkaXRvckNsb3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fZWRpdG9yU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3NjcmlwdFNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmNhblNlYXJjaEFuZFJlcGxhY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVwbGFjZVNl
bGVjdGlvbldpdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUucmVwbGFjZUFsbFdpdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuc2V0IF9maWxlUmVuYW1lZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYXBwZW5kVUlTb3VyY2VDb2RlSXRlbXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsRGVzY3JpcHRvci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLnByb3RvdHlwZS5hcHBl
bmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U291cmNlTWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUuX3VpU291cmNlQ29kZUFkZGVkVG9X
b3Jrc3BhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29u
dGFpbmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5w
cm90b3R5cGUuX3Njcm9sbENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVk
aXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3NlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3RhYkNsb3NlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdGFi
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5w
cm90b3R5cGUuX3VpU291cmNlQ29kZVRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlV29ya2luZ0Nv
cHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIu
cHJvdG90eXBlLl91aVNvdXJjZUNvZGVXb3JraW5nQ29weUNvbW1pdHRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2Rl
Rm9ybWF0dGVkQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWxMb2FkZXIucHJv
dG90eXBlLndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29k
ZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZUZyYW1lLnByb3Rv
dHlwZS5fb25Gb3JtYXR0ZWRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVy
LnByb3RvdHlwZS5fZnJhbWVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5w
cm90b3R5cGUuX2ZpbGVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5wcm90
b3R5cGUuX2ZpbGVSZW1vdmVkKToKKwogMjAxMi0xMS0wNSAgU2hpbnlhIEthd2FuYWthICA8c2hp
bnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NoYWRvd10gU2hhZG93Um9vdCB0eXBlIGlz
IG5vdCBzZXQgY29ycmVjdGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCmluZGV4IDJiMGYwMjU3
M2MxN2YxNzM1NWY4ZDY4OTcxZGY3NDdhZDk2NDhhMDkuLmVlYjNlZTM5NmE0OTA2Y2QxYTE2MmYy
ODFmZjUyODY2Y2Y3MWQ0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2YXIgVHlwZVV0aWxzID0gewogICAgICAgICB2YXIgY29udGV4dCA9IFR5cGVVdGls
cy5fZHVtbXlDYW52YXMyZENvbnRleHRJbnN0YW5jZTsKICAgICAgICAgaWYgKCFjb250ZXh0KSB7
CiAgICAgICAgICAgICB2YXIgY2FudmFzID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAgICAgICAgY29udGV4dCA9IC8qKiBAdHlwZSB7Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5n
ZXRDb250ZXh0KCIyZCIpKTsKKyAgICAgICAgICAgIGNvbnRleHQgPSAvKiogQHR5cGUge0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRH0gKi8gKFJlc291cmNlLndyYXBwZWRPYmplY3QoY2FudmFzLmdl
dENvbnRleHQoIjJkIikpKTsKICAgICAgICAgICAgIFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENv
bnRleHRJbnN0YW5jZSA9IGNvbnRleHQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNvbnRl
eHQ7CkBAIC0xODksNyArMTg5LDcgQEAgZnVuY3Rpb24gU3RhY2tUcmFjZVY4KHN0YWNrVHJhY2VM
aW1pdCwgdG9wTW9zdEZ1bmN0aW9uVG9JZ25vcmUpCiAgICAgaWYgKHR5cGVvZiBzdGFja1RyYWNl
TGltaXQgPT09ICJudW1iZXIiKQogICAgICAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBzdGFj
a1RyYWNlTGltaXQ7CiAKLSAgICB0aGlzLl9lcnJvciA9IC8qKiBAdHlwZSB7e3N0YWNrOiBBcnJh
eX19ICovIHt9OworICAgIHRoaXMuX2Vycm9yID0gLyoqIEB0eXBlIHt7c3RhY2s6IEFycmF5fX0g
Ki8gKHt9KTsKICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLl9lcnJvciwgdG9wTW9z
dEZ1bmN0aW9uVG9JZ25vcmUgfHwgYXJndW1lbnRzLmNhbGxlZSk7CiAKICAgICBFcnJvci5zdGFj
a1RyYWNlTGltaXQgPSBvbGRTdGFja1RyYWNlTGltaXQ7CkBAIC00MTMsNyArNDEzLDcgQEAgQ2Fs
bC5wcm90b3R5cGUgPSB7CiAgICAgdG9SZXBsYXlhYmxlOiBmdW5jdGlvbihjYWNoZSkKICAgICB7
CiAgICAgICAgIHRoaXMuZnJlZXplKCk7Ci0gICAgICAgIHZhciB0aGlzT2JqZWN0ID0gLyoqIEB0
eXBlIHtSZXBsYXlhYmxlUmVzb3VyY2V9ICovIFJlc291cmNlLnRvUmVwbGF5YWJsZSh0aGlzLl90
aGlzT2JqZWN0LCBjYWNoZSk7CisgICAgICAgIHZhciB0aGlzT2JqZWN0ID0gLyoqIEB0eXBlIHtS
ZXBsYXlhYmxlUmVzb3VyY2V9ICovIChSZXNvdXJjZS50b1JlcGxheWFibGUodGhpcy5fdGhpc09i
amVjdCwgY2FjaGUpKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IFJlc291cmNlLnRvUmVwbGF5YWJs
ZSh0aGlzLl9yZXN1bHQsIGNhY2hlKTsKICAgICAgICAgdmFyIGFyZ3MgPSB0aGlzLl9hcmdzLm1h
cChmdW5jdGlvbihvYmopIHsKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZS50b1JlcGxheWFi
bGUob2JqLCBjYWNoZSk7CkBAIC02NzksNyArNjc5LDcgQEAgUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIHRvUmVwbGF5YWJsZTogZnVuY3Rpb24oY2FjaGUpCiAgICAgewotICAg
ICAgICB2YXIgcmVzdWx0ID0gLyoqIEB0eXBlIHtSZXBsYXlhYmxlUmVzb3VyY2V9ICovIGNhY2hl
LmdldCh0aGlzLl9pZCk7CisgICAgICAgIHZhciByZXN1bHQgPSAvKiogQHR5cGUge1JlcGxheWFi
bGVSZXNvdXJjZX0gKi8gKGNhY2hlLmdldCh0aGlzLl9pZCkpOwogICAgICAgICBpZiAocmVzdWx0
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgdmFyIGRhdGEgPSB7CkBAIC03
MTAsNyArNzEwLDcgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcGxh
eTogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSAv
KiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJjZX0gKi8gY2FjaGUuZ2V0KGRhdGEuaWQpOworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSAvKiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJjZX0gKi8gKGNh
Y2hlLmdldChkYXRhLmlkKSk7CiAgICAgICAgIGlmIChyZXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybiByZXNvdXJjZTsKICAgICAgICAgdGhpcy5faWQgPSBkYXRhLmlkOwpAQCAtMjU5NCw3ICsy
NTk0LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGNvbnRleHRJZDsgY29udGV4dElkID0gY29udGV4dElkc1tpXTsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRJ
ZCwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcGxheUNvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7V2ViR0xSZW5kZXJp
bmdDb250ZXh0fSAqLyBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHJlcGxheUNvbnRleHQpOworICAg
ICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gLyoqIEB0eXBlIHtXZWJHTFJlbmRlcmlu
Z0NvbnRleHR9ICovIChSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHJlcGxheUNvbnRleHQpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMjYxOSw3ICsyNjE5LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IDJEIGNvbnRleHQgZWFjaCB0aW1lIHRvIHN0YXJ0
IHdpdGggYW4gZW1wdHkgY29udGV4dCBkcmF3aW5nIHN0YXRlIHN0YWNrIChtYW5hZ2VkIGJ5IHNh
dmUoKSBhbmQgcmVzdG9yZSgpIG1ldGhvZHMpLgogICAgICAgICB2YXIgY2FudmFzID0gb3JpZ2lu
YWxDb250ZXh0LmNhbnZhcy5jbG9uZU5vZGUodHJ1ZSk7Ci0gICAgICAgIHZhciByZXBsYXlDb250
ZXh0ID0gLyoqIEB0eXBlIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9ICovIFJlc291cmNlLndy
YXBwZWRPYmplY3QoY2FudmFzLmdldENvbnRleHQoIjJkIikpOworICAgICAgICB2YXIgcmVwbGF5
Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyAoUmVzb3Vy
Y2Uud3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSkpOwogICAgICAgICB0aGlz
Ll9yZXBsYXlDb250ZXh0ID0gcmVwbGF5Q29udGV4dDsKICAgICAgICAgcmV0dXJuIHJlcGxheUNv
bnRleHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCmluZGV4IGM4YTU2OTBkZWNkMDhhZjU3MWUwOTY5MDVmNGI5ZDg2N2U0ZTZi
ODMuLmI1ZGI5NTVhYzEzNGFhNzgzYTcyMzg1NmMyMWQ3ZDU0YTE5OWJhMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTYxNCw3
ICs2MTQsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBvYmpl
Y3QgPSB0aGlzLmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKICAgICAgICAgaWYgKCFvYmplY3Qg
fHwgdGhpcy5fc3VidHlwZShvYmplY3QpICE9PSAibm9kZSIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7Tm9kZX0gKi8gb2JqZWN0OworICAgICAg
ICByZXR1cm4gLyoqIEB0eXBlIHtOb2RlfSAqLyAob2JqZWN0KTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC03MDUsNyArNzA1LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAodGhpcy5pc1ByaW1pdGl2ZVZhbHVlKG9iaikpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKIAotICAgICAgICBvYmogPSAvKiogQHR5cGUge09iamVjdH0gKi8gb2JqOworICAgICAgICBv
YmogPSAvKiogQHR5cGUge09iamVjdH0gKi8gKG9iaik7CiAKICAgICAgICAgLy8gVHlwZSBpcyBv
YmplY3QsIGdldCBzdWJ0eXBlLgogICAgICAgICB2YXIgc3VidHlwZSA9IHRoaXMuX3N1YnR5cGUo
b2JqKTsKQEAgLTc5Miw3ICs3OTIsNyBAQCBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QgPSBm
dW5jdGlvbihvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwgZm9yY2VWYWx1ZVR5cGUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBvYmplY3QgPSAvKiogQHR5cGUge09iamVjdH0gKi8gb2Jq
ZWN0OworICAgIG9iamVjdCA9IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyAob2JqZWN0KTsKIAogICAg
IHRoaXMub2JqZWN0SWQgPSBpbmplY3RlZFNjcmlwdC5fYmluZChvYmplY3QsIG9iamVjdEdyb3Vw
TmFtZSk7CiAgICAgdmFyIHN1YnR5cGUgPSBpbmplY3RlZFNjcmlwdC5fc3VidHlwZShvYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNh
dGlvbkNhY2hlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Fw
cGxpY2F0aW9uQ2FjaGVNb2RlbC5qcwppbmRleCBiNTUyOWE2NjYyYmViZWJjZTJkN2EyNDkxYzBj
MmU0ZmUzMGY5ZjgxLi43ZjQwODMwNjU2ZDNiNWE0YTI5MzA0ODM4ZjQyMTkyZWY1N2FiYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9u
Q2FjaGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Fw
cGxpY2F0aW9uQ2FjaGVNb2RlbC5qcwpAQCAtNTYsNyArNTYsNyBAQCBXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1vZGVsLkV2ZW50VHlwZXMgPSB7CiBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmcmFtZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgICAgICB0aGlz
Ll9tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcwLDcgKzcw
LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX2ZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9
ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2Zy
YW1lTWFuaWZlc3RSZW1vdmVkKGZyYW1lLmlkKTsKICAgICB9LAogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMK
aW5kZXggNDhhNTk5MGJhNmJhNzg0NDljMGU2YWNkNTRjNTllMjljZjE4ZGNmZS4uYmY2ZGI0Mzdk
MTc1M2JkOWUxZjBiNWViZDNhZWE2MDc2MDYwYTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCkBAIC03MSw3
ICs3MSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICBfb25SZXF1ZXN0U3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2
YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyBl
dmVudC5kYXRhOworICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIC8vIElnbm9yZSBsb25n
LWxpdmluZyBXZWJTb2NrZXRzIGZvciB0aGUgc2FrZSBvZiBwcm9ncmVzcyBpbmRpY2F0b3IsIGFz
IHdlIHdvbid0IGJlIHdhaXRpbmcgdGhlbSBhbnl3YXkuCiAgICAgICAgIGlmIChyZXF1ZXN0LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLldlYlNvY2tldCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTgxLDcgKzgxLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgIF9vblJlcXVlc3RGaW5pc2hlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5l
dHdvcmtSZXF1ZXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAg
ICAgIC8vIFNlZSByZXNvcmNlU3RhcnRlZCBmb3IgZGV0YWlscy4KICAgICAgICAgaWYgKHJlcXVl
c3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuV2ViU29ja2V0KQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKaW5kZXggNjlmNTZjMDA0MGEwNDE2ZTE2NDM1NjNi
ZWE4MzU0OWFiOTQzYjBlZS4uN2FlNTFiZWNkNGY5NzYyYjJkOTI0ODBlOTA5ODEwMzkyNDBhZjQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3Bv
aW50TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Jy
ZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC05MSw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3VpU291cmNlQ29kZUFkZGVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5jb250ZW50VHlwZSgp
ID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQgfHwgdWlTb3VyY2VDb2RlLmNv
bnRlbnRUeXBlKCkgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50KSB7CiAg
ICAgICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHModWlTb3VyY2VDb2RlKTsKICAgICAg
ICAgICAgIHVpU291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUuRXZlbnRzLkZvcm1hdHRlZENoYW5nZWQsIHRoaXMuX3VpU291cmNlQ29kZUZvcm1hdHRl
ZCwgdGhpcyk7CkBAIC0xMDMsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfdWlTb3VyY2VDb2RlRm9ybWF0dGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3BvaW50cyh1aVNv
dXJjZUNvZGUpOwogICAgIH0sCiAKQEAgLTExMiw3ICsxMTIsNyBAQCBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF91aVNvdXJjZUNvZGVS
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5jb250ZW50
VHlwZSgpICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQgJiYgdWlTb3VyY2VD
b2RlLmNvbnRlbnRUeXBlKCkgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmRpdmVyZ2Vk
VmVyc2lvbikKQEAgLTI3Miw4ICsyNzIsOCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIucHJvdG90eXBlID0gewogCiAgICAgX2JyZWFrcG9pbnRSZXNvbHZlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB2YXIgYnJlYWtwb2ludElkID0gLyoqIEB0eXBlIHtEZWJ1Z2dl
ckFnZW50LkJyZWFrcG9pbnRJZH0gKi8gZXZlbnQuZGF0YS5icmVha3BvaW50SWQ7Ci0gICAgICAg
IHZhciBsb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9j
YXRpb259ICovIGV2ZW50LmRhdGEubG9jYXRpb247CisgICAgICAgIHZhciBicmVha3BvaW50SWQg
PSAvKiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkfSAqLyAoZXZlbnQuZGF0YS5i
cmVha3BvaW50SWQpOworICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAoZXZlbnQuZGF0YS5sb2NhdGlvbik7CiAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludEZvckRlYnVnZ2VySWRbYnJl
YWtwb2ludElkXTsKICAgICAgICAgaWYgKCFicmVha3BvaW50IHx8IGJyZWFrcG9pbnQuX2lzUHJv
dmlzaW9uYWwpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgIF9s
b2NhdGlvblVwZGF0ZWQ6IGZ1bmN0aW9uKGxvY2F0aW9uLCB1aUxvY2F0aW9uKQogICAgIHsKICAg
ICAgICAgdmFyIHN0cmluZ2lmaWVkTG9jYXRpb24gPSBsb2NhdGlvbi5zY3JpcHRJZCArICI6IiAr
IGxvY2F0aW9uLmxpbmVOdW1iZXIgKyAiOiIgKyBsb2NhdGlvbi5jb2x1bW5OdW1iZXI7Ci0gICAg
ICAgIHZhciBvbGRVSUxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlv
bn0gKi8gdGhpcy5fdWlMb2NhdGlvbnNbc3RyaW5naWZpZWRMb2NhdGlvbl07CisgICAgICAgIHZh
ciBvbGRVSUxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8g
KHRoaXMuX3VpTG9jYXRpb25zW3N0cmluZ2lmaWVkTG9jYXRpb25dKTsKICAgICAgICAgaWYgKG9s
ZFVJTG9jYXRpb24pCiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fdWlMb2Nh
dGlvblJlbW92ZWQodGhpcywgb2xkVUlMb2NhdGlvbik7CiAgICAgICAgIGlmICh0aGlzLl91aUxv
Y2F0aW9uc1siIl0pIHsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgX3NldEluRGVidWdnZXI6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMuX3ByaW1hcnlV
SUxvY2F0aW9uLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKCk7Ci0gICAgICAgIHZhciBkZWJ1Z2dl
ck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxv
Y2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlv
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIChy
YXdMb2NhdGlvbik7CiAgICAgICAgIGlmIChkZWJ1Z2dlck1vZGVsTG9jYXRpb24pCiAgICAgICAg
ICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50
QnlTY3JpcHRMb2NhdGlvbihkZWJ1Z2dlck1vZGVsTG9jYXRpb24sIHRoaXMuX2NvbmRpdGlvbiwg
ZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKICAgICAgICAgZWxzZQpAQCAtNTYwLDcgKzU2
MCw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdlID0gZnVuY3Rpb24o
YnJlYWtwb2ludE1hbmFnZXIsIHNldHRpbmcpCiAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmlu
ZyxXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuU3RvcmFnZS5JdGVtPn0gKi8KICAgICB0
aGlzLl9icmVha3BvaW50cyA9IHt9OwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2lu
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdlLkl0ZW19ICovIGJyZWFrcG9pbnRz
W2ldOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLlN0b3JhZ2UuSXRlbX0gKi8gKGJyZWFrcG9pbnRzW2ldKTsKICAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5zb3VyY2VGaWxlSWQgKyAiOiIgKyBicmVh
a3BvaW50LmxpbmVOdW1iZXJdID0gYnJlYWtwb2ludDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJh
clBhbmUuanMKaW5kZXggYWZhNDU3Nzk3ZGI2MDc3YmE2ZDhiY2QyNTc2YmM0Yjc0ZWI4ZDBlZi4u
NTRjMGE4N2MzN2ZkOWIyMjBjYzM2ZDQwZDc3NWQxYTY2ZTU2NGI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRl
YmFyUGFuZS5qcwpAQCAtNzMsOCArNzMsOCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFr
cG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludFJlbW92ZWQoZXZlbnQpOwogCi0gICAgICAgIHZhciBicmVha3BvaW50ID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0gKi8gZXZlbnQu
ZGF0YS5icmVha3BvaW50OwotICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlVJTG9jYXRpb259ICovIGV2ZW50LmRhdGEudWlMb2NhdGlvbjsKKyAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5CcmVha3BvaW50fSAqLyAoZXZlbnQuZGF0YS5icmVha3BvaW50KTsKKyAgICAgICAgdmFyIHVp
TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufSAqLyAoZXZlbnQu
ZGF0YS51aUxvY2F0aW9uKTsKICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChicmVha3BvaW50
LCB1aUxvY2F0aW9uKTsKICAgICB9LAogCkBAIC0xMzksOCArMTM5LDggQEAgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRCcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBfYnJlYWtwb2ludFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5CcmVha3BvaW50fSAqLyBldmVudC5kYXRhLmJyZWFrcG9pbnQ7Ci0gICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gZXZlbnQuZGF0
YS51aUxvY2F0aW9uOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnR9ICovIChldmVudC5kYXRhLmJyZWFr
cG9pbnQpOworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlVJTG9jYXRpb259ICovIChldmVudC5kYXRhLnVpTG9jYXRpb24pOwogICAgICAgICB2YXIgYnJl
YWtwb2ludEl0ZW0gPSB0aGlzLl9pdGVtcy5nZXQoYnJlYWtwb2ludCk7CiAgICAgICAgIGlmICgh
YnJlYWtwb2ludEl0ZW0pCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVj
dGlvbnNWaWV3LmpzCmluZGV4IGIyYTMwMjQwMmIwMmRhMmU2ZDA4NWJmZjJlNzliMzgwNzg5YjM1
MDEuLmI5MmEwNjZkYTZhYTAwNjRkOTA1OTMxMjI4ODBjMjhiZDc1OTUwYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlv
bnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFt
ZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzCkBAIC05MSw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5D
U1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9k
b2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGRvY3Vt
ZW50ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9ICovIGV2ZW50LmRhdGE7
CisgICAgICAgIHZhciBkb2N1bWVudCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTURvY3Vt
ZW50fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3NldERvY3VtZW50KGRvY3VtZW50
KTsKICAgICB9LAogCkBAIC0yMTksNyArMjE5LDcgQEAgV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxv
d0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLmRv
Y3VtZW50Tm9kZUlkICE9PSB0aGlzLl9kb2N1bWVudC5pZCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB2YXIgZmxvdyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZsb3cgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5OYW1lZEZsb3d9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYXBwZW5kTmFtZWRG
bG93KGZsb3cpOwogICAgIH0sCiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBXZWJJbnNwZWN0b3IuQ1NT
TmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGV2ZW50
LmRhdGEuZG9jdW1lbnROb2RlSWQgIT09IHRoaXMuX2RvY3VtZW50LmlkKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHZhciBmbG93ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmFt
ZWRGbG93fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZmxvdyA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLk5hbWVkRmxvd30gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl91cGRh
dGVOYW1lZEZsb3coZmxvdyk7CiAgICAgfSwKIApAQCAtMjk4LDcgKzI5OCw3IEBAIFdlYkluc3Bl
Y3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIF9zZWxlY3RlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01Ob2RlfSAq
LyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3Nob3dOYW1lZEZsb3dGb3JOb2RlKG5vZGUp
OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwppbmRleCBlMTBmOGRjNmVjNjhjNzUx
OWY4MDQyMzYzYzFhZTE0ZjA2NWZhZWM3Li5lOWQ3MWVjODU0ODg0NGEwMDYyZjY2YWZmNDk2Nzg5
ZWI4YjA5NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzCkBAIC0zOTksNyArMzk5LDcgQEAg
V2ViSW5zcGVjdG9yLkNTU1Byb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwpCiAgICAgewotICAgICAgICB2YXIg
cHJvZmlsZSA9IC8qKiBAdHlwZSB7Q1NTQWdlbnQuU2VsZWN0b3JQcm9maWxlfSAqL3RoaXMuX3By
b3RvY29sRGF0YTsKKyAgICAgICAgdmFyIHByb2ZpbGUgPSAvKiogQHR5cGUge0NTU0FnZW50LlNl
bGVjdG9yUHJvZmlsZX0gKi8gKHRoaXMuX3Byb3RvY29sRGF0YSk7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcocHJvZmlsZSk7CiAgICAgfSwK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHls
ZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1v
ZGVsLmpzCmluZGV4IGZlODdjOTdlYTRlODIxOTBkY2ZjOGI5M2IyYzczMjAzOWQ4ZTA0MWUuLjZh
NmYxYzU1NTYwZGRlNjk1OWNlNjNmN2QwYjFhYmQ2YjA1ZDk2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTU0OCw3
ICs1NDgsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5MaXZlTG9jYXRpb24ucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIHVpTG9jYXRpb246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHZhciBjc3NMb2NhdGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb24g
Ki8gdGhpcy5yYXdMb2NhdGlvbigpOworICAgICAgICB2YXIgY3NzTG9jYXRpb24gPSAvKiogQHR5
cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9uICovICh0aGlzLnJhd0xvY2F0aW9uKCkpOwogICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bihjc3NMb2NhdGlvbik7CiAgICAgfSwKIApAQCAtNjM2LDcgKzYzNiw3IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCiAg
Ki8KIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlQ29tcHV0ZWRTdHlsZVBh
eWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogewotICAgIHZhciBuZXdQYXlsb2FkID0gLyoqIEB0
eXBlIHtDU1NBZ2VudC5DU1NTdHlsZX0gKi8geyBjc3NQcm9wZXJ0aWVzOiBbXSwgc2hvcnRoYW5k
RW50cmllczogW10sIHdpZHRoOiAiIiwgaGVpZ2h0OiAiIiB9OworICAgIHZhciBuZXdQYXlsb2Fk
ID0gLyoqIEB0eXBlIHtDU1NBZ2VudC5DU1NTdHlsZX0gKi8gKHsgY3NzUHJvcGVydGllczogW10s
IHNob3J0aGFuZEVudHJpZXM6IFtdLCB3aWR0aDogIiIsIGhlaWdodDogIiIgfSk7CiAgICAgaWYg
KHBheWxvYWQpCiAgICAgICAgIG5ld1BheWxvYWQuY3NzUHJvcGVydGllcyA9IHBheWxvYWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJT
Y3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21w
aWxlclNjcmlwdE1hcHBpbmcuanMKaW5kZXggYjBhOWZjMjJhNzAwNzc0YTA3ZDY2Y2UwYjlhMWY4
YmMxOWYxY2UzNS4uNjI1OWU5YTNmNDIxZTM3MThkODZkNzVkMjAxN2YyNDJiYTdmMjE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21w
aWxlclNjcmlwdE1hcHBpbmcuanMKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmF3TG9jYXRpb25U
b1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIGRl
YnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOworICAgICAgICB2YXIgZGVidWdnZXJNb2RlbExv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0g
Ki8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgdmFyIHNvdXJjZU1hcCA9IHRoaXMuX3NvdXJjZU1h
cEZvclNjcmlwdElkW2RlYnVnZ2VyTW9kZWxMb2NhdGlvbi5zY3JpcHRJZF07CiAgICAgICAgIHZh
ciBsaW5lTnVtYmVyID0gZGVidWdnZXJNb2RlbExvY2F0aW9uLmxpbmVOdW1iZXI7CiAgICAgICAg
IHZhciBjb2x1bW5OdW1iZXIgPSBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVtYmVyIHx8
IDA7CkBAIC0xNDYsNyArMTQ2LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QubG9hZFJlc291cmNlU3luY2hyb25vdXNseShzb3VyY2VNYXBVUkwpOwogICAgICAg
ICAgICAgaWYgKHJlc3BvbnNlLnNsaWNlKDAsIDMpID09PSAiKV19IikKICAgICAgICAgICAgICAg
ICByZXNwb25zZSA9IHJlc3BvbnNlLnN1YnN0cmluZyhyZXNwb25zZS5pbmRleE9mKCdcbicpKTsK
LSAgICAgICAgICAgIHZhciBwYXlsb2FkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291cmNl
TWFwUGF5bG9hZH0gKi8gSlNPTi5wYXJzZShyZXNwb25zZSk7CisgICAgICAgICAgICB2YXIgcGF5
bG9hZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBheWxvYWR9ICovIChKU09O
LnBhcnNlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBzb3VyY2VNYXAgPSBuZXcgV2ViSW5zcGVj
dG9yLlNvdXJjZU1hcFBhcnNlcihzb3VyY2VNYXBVUkwsIHBheWxvYWQpOwogICAgICAgICB9IGNh
dGNoKGUpIHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IDU5
YTgyZmVmYmNmZDE3NzFkMTBiZGQwOGFhZWMxOThlNTVhZjk5ODEuLjllYTViY2E2MTBjMGY4MzVl
ZDZjOTEyNDA3ZmIyZDM0ZjJiYTRhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZyYW1lQWRkZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRMaXN0ID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRnJhbWVFeGVjdXRpb25Db250ZXh0TGlzdH0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgdmFyIGNvbnRleHRMaXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRnJh
bWVFeGVjdXRpb25Db250ZXh0TGlzdH0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9h
ZGRGcmFtZShjb250ZXh0TGlzdCk7CiAgICAgfSwKIApAQCAtMTY1LDcgKzE2NSw3IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZyYW1lUmVt
b3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dExpc3QgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0fSAqLyBldmVu
dC5kYXRhOworICAgICAgICB2YXIgY29udGV4dExpc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRo
aXMuX2ZyYW1lU2VsZWN0b3IucmVtb3ZlT3B0aW9uKGNvbnRleHRMaXN0Ll9jb25zb2xlT3B0aW9u
KTsKICAgICAgICAgdGhpcy5fZnJhbWVDaGFuZ2VkKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IGYzOWEzY2JiOGM2ODQz
NjZiM2QzNTZlYzFhMzg1Y2NjODdlNzZhMGMuLjQwMjA2NDE3MzgzYmUyZmMwZDlkZDVkOGE5NGI5
MmRkYjJiOTc1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcwpAQCAtNzcyLDcgKzc3Miw3IEBAIFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudCA9
IGZ1bmN0aW9uKGRvbUFnZW50LCBwYXlsb2FkKQogewogICAgIFdlYkluc3BlY3Rvci5ET01Ob2Rl
LmNhbGwodGhpcywgZG9tQWdlbnQsIHRoaXMsIGZhbHNlLCBwYXlsb2FkKTsKICAgICB0aGlzLmRv
Y3VtZW50VVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTCB8fCAiIjsKLSAgICB0aGlzLmJhc2VVUkwg
PSAvKiogQHR5cGUge3N0cmluZ30gKi8gcGF5bG9hZC5iYXNlVVJMOworICAgIHRoaXMuYmFzZVVS
TCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocGF5bG9hZC5iYXNlVVJMKTsKICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLmJhc2VVUkwpOwogICAgIHRoaXMueG1sVmVyc2lvbiA9IHBheWxvYWQueG1s
VmVyc2lvbjsKICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcwppbmRleCA0ZTkxM2U5ZDA0
MDc5MWZhZGNmYjhiNTkwNTEzMTYwYzk3OGUwMGNiLi5kNThkYTBlZGI3M2IxMjVmNmQwNDU1MTAz
MGY3ODNmODkwNzE2OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0yMDUsNyArMjA1LDcgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlvbiBkaWRTZXRCcmVh
a3BvaW50KGVycm9yLCBicmVha3BvaW50SWQsIGxvY2F0aW9ucykKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJhd0xvY2F0aW9ucyA9
IC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uPn0g
Ki8gbG9jYXRpb25zOworICAgICAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbnMgPSAvKiogQHR5
cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj59ICovIChsb2Nh
dGlvbnMpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gbnVsbCA6IGJyZWFrcG9p
bnRJZCwgcmF3TG9jYXRpb25zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjI5LDcg
KzIyOSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChlcnJvciwgYnJlYWtwb2ludElkLCBhY3R1YWxM
b2NhdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbn0gKi8gYWN0dWFsTG9jYXRpb247CisgICAgICAgICAgICAgICAgdmFy
IHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbn0gKi8gKGFjdHVhbExvY2F0aW9uKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciA/IG51bGwgOiBicmVha3BvaW50SWQsIFtyYXdMb2NhdGlvbl0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC03MjYsNyArNzI2LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
Q2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgbG9jYXRpb24oKQogICAg
IHsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gdGhpcy5fcGF5bG9hZC5sb2NhdGlvbjsKKyAgICAgICAg
dmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5M
b2NhdGlvbn0gKi8gKHRoaXMuX3BheWxvYWQubG9jYXRpb24pOwogICAgICAgICByZXR1cm4gcmF3
TG9jYXRpb247CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcwppbmRleCA5OGEwNTVlMzMx
NzI4NmU1MDBkOGU3YTY2M2FlOGU1NjY5MjNkMmRlLi5kMzJiMmU0NTRhMjY0M2FmNTczMGM1MWZj
NTM1NzVlOTk5YjI5ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcwpAQCAtNTQsNyArNTQsNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3Jp
cHR9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5n
Rm9yU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGly
ZWN0b3J5Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RpcmVjdG9yeUNvbnRlbnRWaWV3LmpzCmluZGV4IDE0NDI2MGZjYjdkZWU3NGY4MmJkMTFhYzMy
YzcwMTAyMGUzOTNlMWYuLjU3YWU1M2QzZTBkNTNiY2U5MTA5MWZlMjVkYzNhYjY5Zjk0MTE0NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
aXJlY3RvcnlDb250ZW50Vmlldy5qcwpAQCAtODQsNyArODQsNyBAQCBXZWJJbnNwZWN0b3IuRGly
ZWN0b3J5Q29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3NvcnQ6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHZhciBjb2x1bW4gPSAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5z
b3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgdmFyIGNvbHVtbiA9IC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyAodGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIHRoaXMuc29ydE5v
ZGVzKFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmlldy5Ob2RlLmNvbXBhcmF0b3IoY29s
dW1uLCB0aGlzLnNvcnRPcmRlciA9PT0gImRlc2NlbmRpbmciKSwgZmFsc2UpOwogICAgIH0sCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcwppbmRleCAzNDI3ZmIzZjEyNDBjMzAwNmMzM2Y1ZDI5NTE4YmQ2ODNiMWVmNzNkLi5hMGU2
ZTFhMTg0NGVlNDI3YmRiNzFlZDUzYjBjYzJhNDgzNTlhNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC00MTUsNyAr
NDE1LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YXIgbm9kZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIHRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0OworICAgICAgICB2YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5v
ZGV9ICovICh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgaWYgKCFu
b2RlLm5vZGVOYW1lKCkgfHwgbm9kZS5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCkgIT09ICJpbWci
KSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAtNjA0LDcgKzYwNCw3IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG5hbWUgIT09ICJj
bGFzcyIgJiYgbmFtZSAhPT0gImlkIikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2
YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIGV2ZW50LmRhdGEu
bm9kZTsKKyAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01Ob2Rl
fSAqLyAoZXZlbnQuZGF0YS5ub2RlKTsKICAgICAgICAgdmFyIGNydW1icyA9IHRoaXMuY3J1bWJz
RWxlbWVudDsKICAgICAgICAgdmFyIGNydW1iID0gY3J1bWJzLmZpcnN0Q2hpbGQ7CiAgICAgICAg
IHdoaWxlIChjcnVtYikgewpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHZhciByZW1vdGVPYmplY3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3R9ICovIHRhcmdldDsKKyAgICAgICAgdmFyIHJlbW90ZU9iamVjdCA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gKHRhcmdldCk7CiAgICAgICAgIGlmIChyZW1v
dGVPYmplY3Quc3VidHlwZSAhPT0gIm5vZGUiKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxE
ZXNjcmlwdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsRGVzY3JpcHRvci5qcwppbmRleCA0NWFkM2U0Njc0NTk1Yzc2YWRhY2FlMTA1MmQ1MDFh
ZDJkOGRmZjk3Li44ZjcxYWFlMDhkNWFjM2IwZWQ2MzE4YmYzYTc2YmJkYTdlOTA0MjJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxE
ZXNjcmlwdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbERlc2NyaXB0b3IuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWxEZXNjcmlwdG9yLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICgh
KHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB2YXIgcmVtb3RlT2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyB0YXJnZXQ7CisgICAgICAgIHZhciByZW1vdGVPYmplY3Qg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9ICovICh0YXJnZXQpOwogICAg
ICAgICBpZiAocmVtb3RlT2JqZWN0LnN1YnR5cGUgIT09ICJub2RlIikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgdGhpcy5wYW5lbCgpLmFwcGVuZEFwcGxpY2FibGVJdGVtcyhldmVudCwg
Y29udGV4dE1lbnUsIHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggNjY3YWUyZWQ4NWJl
NDVlZWJkODYzOTIwM2M1ZDgxMGE5Y2MyOTYzZS4uYTg3YmM5MjNmNWM3YzE4OTMxYWI0ZDVjOWU0
YzU1MTUwZWUwMjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIF9idWlsZFRhZ0RPTTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgdGFnTmFtZSwgaXNDbG9z
aW5nVGFnLCBpc0Rpc3RpbmN0VHJlZUVsZW1lbnQsIGxpbmtpZnkpCiAgICAgewotICAgICAgICB2
YXIgbm9kZSA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuRE9NTm9kZSAqLyB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0OworICAgICAgICB2YXIgbm9kZSA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuRE9N
Tm9kZSAqLyAodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIHZhciBjbGFzc2VzID0g
WyAid2Via2l0LWh0bWwtdGFnIiBdOwogICAgICAgICBpZiAoaXNDbG9zaW5nVGFnICYmIGlzRGlz
dGluY3RUcmVlRWxlbWVudCkKICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgiY2xvc2UiKTsKQEAg
LTIwMDgsNyArMjAwOCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKHNjcm9sbEludG9W
aWV3KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5ET01Ob2RlfSAqLyB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAg
ICB2YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5yZXNv
bHZlTm9kZShub2RlLCAiIiwgc2Nyb2xsSW50b1ZpZXdDYWxsYmFjayk7CiAgICAgfSwKIApAQCAt
MjA0NCw3ICsyMDQ0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwogCi0gICAgICAgIHZhciBlbnRy
eSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIuVXBkYXRlRW50
cnl9ICovIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2Rlcy5nZXQobm9kZSk7CisgICAgICAgIHZh
ciBlbnRyeSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIuVXBk
YXRlRW50cnl9ICovICh0aGlzLl9yZWNlbnRseU1vZGlmaWVkTm9kZXMuZ2V0KG5vZGUpKTsKICAg
ICAgICAgaWYgKCFlbnRyeSkgewogICAgICAgICAgICAgZW50cnkgPSBuZXcgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZVVwZGF0ZXIuVXBkYXRlRW50cnkoaXNVcGRhdGVkLCBwYXJlbnROb2RlKTsK
ICAgICAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXQobm9kZSwgZW50cnkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blNlcnZlci5qcwppbmRleCBlYjVjYTVkYmU5ZTMwMjk0N2FjZWEwM2FmNTZlOWMzZjYxNWVlM2Vh
Li42ZDA1NTg5MDBiZTEyM2VmYzk3ODAwMTY1MmRhNWUwOWIxNTNiNmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpA
QCAtMTc4LDcgKzE3OCw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gbWVzc2FnZS5oZWFkZXJz
KQogICAgICAgICAgICAgZXh0ZW5zaW9uSGVhZGVyc1tuYW1lXSA9IG1lc3NhZ2UuaGVhZGVyc1tu
YW1lXTsKLSAgICAgICAgdmFyIGFsbEhlYWRlcnMgPSAvKiogQHR5cGUgTmV0d29ya0FnZW50Lkhl
YWRlcnMgKi8ge307CisgICAgICAgIHZhciBhbGxIZWFkZXJzID0gLyoqIEB0eXBlIE5ldHdvcmtB
Z2VudC5IZWFkZXJzICovICh7fSk7CiAgICAgICAgIGZvciAodmFyIGV4dGVuc2lvbiBpbiB0aGlz
Ll9leHRyYUhlYWRlcnMpIHsKICAgICAgICAgICAgIHZhciBoZWFkZXJzID0gdGhpcy5fZXh0cmFI
ZWFkZXJzW2V4dGVuc2lvbl07CiAgICAgICAgICAgICBmb3IgKG5hbWUgaW4gaGVhZGVycykgewpA
QCAtMjkwLDcgKzI5MCw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBl
ID0gewogCiAgICAgX2hhbmRsZU9wZW5VUkw6IGZ1bmN0aW9uKHBvcnQsIGRldGFpbHMpCiAgICAg
ewotICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGRldGFpbHMudXJsOwor
ICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChkZXRhaWxzLnVybCk7CiAg
ICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVpU291
cmNlQ29kZUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCh1cmwpOwog
ICAgICAgICBpZiAoIWNvbnRlbnRQcm92aWRlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQ4Miw3ICs0ODIsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZSA9IHsKIAogICAgIF9vbkdldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9y
dCkKICAgICB7Ci0gICAgICAgIHZhciB1cmwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gbWVzc2Fn
ZS51cmw7CisgICAgICAgIHZhciB1cmwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKG1lc3NhZ2Uu
dXJsKTsKICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IFdlYkluc3BlY3Rvci53b3Jrc3Bh
Y2UudWlTb3VyY2VDb2RlRm9yVVJMKHVybCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJM
KHVybCk7CiAgICAgICAgIGlmICghY29udGVudFByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHVybCk7CkBAIC01MDAsNyArNTAwLDcgQEAgV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9k
aXNwYXRjaENhbGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBwb3J0LCByZXNwb25zZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIG1lc3NhZ2Uu
dXJsOworICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChtZXNzYWdlLnVy
bCk7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVp
U291cmNlQ29kZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkgewogICAg
ICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJl
c291cmNlRm9yVVJMKHVybCk7CkBAIC02MjUsMjAgKzYyNSwyMCBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9ub3RpZnlSZXNvdXJjZUFkZGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICov
IChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0
b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9tYWtlUmVzb3VyY2Uo
dWlTb3VyY2VDb2RlKSk7CiAgICAgfSwKIAogICAgIF9ub3RpZnlVSVNvdXJjZUNvZGVDb250ZW50
Q29tbWl0dGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGEu
dWlTb3VyY2VDb2RlOwotICAgICAgICB2YXIgY29udGVudCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyBldmVudC5kYXRhLmNvbnRlbnQ7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29k
ZSk7CisgICAgICAgIHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5k
YXRhLmNvbnRlbnQpOwogICAgICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKFdlYkluc3BlY3Rv
ci5leHRlbnNpb25BUEkuRXZlbnRzLlJlc291cmNlQ29udGVudENvbW1pdHRlZCwgdGhpcy5fbWFr
ZVJlc291cmNlKHVpU291cmNlQ29kZSksIGNvbnRlbnQpOwogICAgIH0sCiAKICAgICBfbm90aWZ5
UmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1
ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRh
dGE7CisgICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlv
bihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5OZXR3b3JrUmVxdWVzdEZpbmlzaGVk
LCB0aGlzLl9yZXF1ZXN0SWQocmVxdWVzdCksIChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJl
cXVlc3QpKS5idWlsZCgpKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCmluZGV4IGI4Y2NkOWFkMTYwZDQz
YjdlZWViZWRlZGY2MTI1MWFkNzQ4ZGEzMTcuLjdiNDdjNmRmMDc1NDNjNThhMzEyY2U4OThlM2Q3
NGQwODIwNzZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCkBAIC02OCw3ICs2OCw3IEBAIFdlYkluc3BlY3Rvci5G
aWxlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY29udGVudCkg
ewogICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50LnVwZGF0ZU1ldGFkYXRhKG1ldGFkYXRh
KSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB2YXIgc291cmNlRnJhbWUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0gKi8gdGhpcy5faW5uZXJWaWV3
OworICAgICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWV9ICovICh0aGlzLl9pbm5lclZpZXcpOwogICAgICAgICAgICAgdGhpcy5fY29u
dGVudC5yZXF1ZXN0Q29udGVudChzb3VyY2VGcmFtZS5zZXRDb250ZW50LmJpbmQoc291cmNlRnJh
bWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuX2lubmVyVmlldy5kZXRh
Y2goKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LkZp
bGVDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcXVlc3RDb250
ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzaXplID0gLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMuX21ldGFkYXRhLnNpemU7CisgICAgICAgIHZhciBzaXplID0g
LyoqIEB0eXBlIHtudW1iZXJ9ICovICh0aGlzLl9tZXRhZGF0YS5zaXplKTsKICAgICAgICAgdGhp
cy5fZmlsZS5yZXF1ZXN0RmlsZUNvbnRlbnQodHJ1ZSwgMCwgc2l6ZSwgdGhpcy5fY2hhcnNldCB8
fCAiIiwgdGhpcy5fZmlsZUNvbnRlbnRSZWNlaXZlZC5iaW5kKHRoaXMsIGNhbGxiYWNrKSk7CiAg
ICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qcwppbmRleCBjYTViZjczMDBkNDE2MWQ0MGZmNjg1ZDg5NGViOTdmZTdk
MDUyYWRmLi42YjE1ODEwYjQ2MjM4NTJlNzAyY2U1NzBhMDkwZjAwMDVjODU1MThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2Rl
bC5qcwpAQCAtNTYsNyArNTYsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAg
dGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CiAgICAgfSwKIApAQCAtNjUsNyAr
NjUsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICov
IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUZyYW1lfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2F0dGFj
aEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOwogICAgIH0sCiAKQEAgLTc0LDcgKzc0LDcgQEAgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2Zy
YW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZyYW1lID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7
CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUZyYW1lfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2RldGFjaEZyYW1lUmVjdXJz
aXZlbHkoZnJhbWUpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCmluZGV4IDE3NGUzNDUwYjM3MzhjMGZlYzNl
YmQxYTVkYzk0YzRhNWRjMGNhYzUuLjE0NDY1ZjVlMDkwNzk2MzJjZjc4Y2MyZTBkMjE0OWNiMDIz
Yjc5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtVmlldy5qcwpAQCAtMTM1LDcgKzEzNSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0
aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKICAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3
IFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50VmlldygpOwogICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGZpbGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZX0gKi8gdGhpcy5fZW50cnk7CisgICAgICAgICAgICAgICAgdmFyIGZp
bGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0gKi8gKHRo
aXMuX2VudHJ5KTsKICAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5GaWxlQ29udGVudFZpZXcoZmlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIx
MSw3ICsyMTEsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0
b3J5KSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fdmlldyAmJiB0aGlzLl92aWV3ID09PSB0aGlz
Ll9maWxlU3lzdGVtVmlldy52aXNpYmxlVmlldykgewotICAgICAgICAgICAgICAgIHZhciBmaWxl
Q29udGVudFZpZXcgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXd9ICov
IHRoaXMuX3ZpZXc7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVDb250ZW50VmlldyA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmlld30gKi8gKHRoaXMuX3ZpZXcpOwogICAg
ICAgICAgICAgICAgIGZpbGVDb250ZW50Vmlldy5yZWZyZXNoKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IYW5kbGVyUmVnaXN0cnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hhbmRsZXJSZWdpc3RyeS5qcwppbmRleCBjOGE2NDhhY2I4NWVhMWU0NzQzMTQ2Njc0ZGQ5
NzMxNjA4YWViODA5Li42YjkwOTMxMTNjZDRiMDIwZDc0OGMxMjBjYzNjYTI3ZTBmODc1MzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJSZWdp
c3RyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJS
ZWdpc3RyeS5qcwpAQCAtMTExLDcgKzExMSw3IEBAIFdlYkluc3BlY3Rvci5IYW5kbGVyUmVnaXN0
cnkucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSB8fCB0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UgfHwgdGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1
ZXN0KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0gKi8gdGFyZ2V0OworICAg
ICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29udGVu
dFByb3ZpZGVyfSAqLyAodGFyZ2V0KTsKICAgICAgICAgaWYgKCFjb250ZW50UHJvdmlkZXIuY29u
dGVudFVSTCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDMsNyArMTQzLDcgQEAgV2Vi
SW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9u
IHNhdmUoZm9yY2VTYXZlQXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChjb250ZW50UHJv
dmlkZXIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gY29udGVudFByb3ZpZGVyOworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChjb250ZW50UHJv
dmlkZXIpOwogICAgICAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNEaXJ0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGRvU2F2ZShmb3JjZVNhdmVBcywgdWlTb3VyY2VDb2RlLndvcmtp
bmdDb3B5KCkpOwogICAgICAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUuY29tbWl0V29ya2lu
Z0NvcHkoZnVuY3Rpb24oKSB7IH0pOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFdlYkluc3BlY3Rvci5I
YW5kbGVyUmVnaXN0cnkucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0
IGluc3RhbmNlb2YgTm9kZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciB0YXJn
ZXROb2RlID0gLyoqIEB0eXBlIHtOb2RlfSAqLyB0YXJnZXQ7CisgICAgICAgIHZhciB0YXJnZXRO
b2RlID0gLyoqIEB0eXBlIHtOb2RlfSAqLyAodGFyZ2V0KTsKIAogICAgICAgICB2YXIgYW5jaG9y
RWxlbWVudCA9IHRhcmdldE5vZGUuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0
LWh0bWwtcmVzb3VyY2UtbGluayIpIHx8IHRhcmdldE5vZGUuZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhDbGFzcygid2Via2l0LWh0bWwtZXh0ZXJuYWwtbGluayIpOwogICAgICAgICBpZiAoIWFuY2hv
ckVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdExvYWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90TG9hZGVyLmpzCmluZGV4IDg3MjU0ODJhNWIzMzI0M2Y3ZTFjNDYyZDU3
NGJiOWEzYjgzMGNlMDYuLjFhNDU3Y2UyNGUwYmRkNmY0N2RiMmIxNzdjYzY4OWRhY2MyNGU0NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBz
aG90TG9hZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90TG9hZGVyLmpzCkBAIC0xMjksNyArMTI5LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdExvYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgY2xvc2luZ0JyYWNr
ZXRJbmRleCA9IFdlYkluc3BlY3Rvci5maW5kQmFsYW5jZWRDdXJseUJyYWNrZXRzKHRoaXMuX2pz
b24pOwogICAgICAgICAgICAgaWYgKGNsb3NpbmdCcmFja2V0SW5kZXggPT09IC0xKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMuX3NuYXBzaG90LnNuYXBzaG90ID0g
LyoqIEB0eXBlIHtIZWFwU25hcHNob3RIZWFkZXJ9ICovSlNPTi5wYXJzZSh0aGlzLl9qc29uLnNs
aWNlKDAsIGNsb3NpbmdCcmFja2V0SW5kZXgpKTsKKyAgICAgICAgICAgIHRoaXMuX3NuYXBzaG90
LnNuYXBzaG90ID0gLyoqIEB0eXBlIHtIZWFwU25hcHNob3RIZWFkZXJ9ICovIChKU09OLnBhcnNl
KHRoaXMuX2pzb24uc2xpY2UoMCwgY2xvc2luZ0JyYWNrZXRJbmRleCkpKTsKICAgICAgICAgICAg
IHRoaXMuX2pzb24gPSB0aGlzLl9qc29uLnNsaWNlKGNsb3NpbmdCcmFja2V0SW5kZXgpOwogICAg
ICAgICAgICAgdGhpcy5fc3RhdGUgPSAiZmluZC1ub2RlcyI7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5q
cwppbmRleCBjY2QzNjMwYTY0MTQ0MzIxMWYyYzE2ZjJjYzJkYmQ3NGE3NjZiMWQ2Li5lZWU5NjRm
MmVhOTc5NzFjMDVlYzc2ODhhNzYwMDgwYThlODE5Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0zNjgs
NyArMzY4LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhp
cy5fcHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsK
LSAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZkRhdGFHcmlkfSAqLyB0aGlzLmRhdGFHcmlkOworICAgICAgICB2YXIgZGF0YUdyaWQg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWR9ICovICh0
aGlzLmRhdGFHcmlkKTsKICAgICAgICAgLy8gQ2hhbmdlIHNldCBiYXNlIGRhdGEgc291cmNlIG9u
bHkgaWYgbWFpbiBkYXRhIHNvdXJjZSBpcyBhbHJlYWR5IHNldC4KICAgICAgICAgaWYgKGRhdGFH
cmlkLnNuYXBzaG90KQogICAgICAgICAgICAgdGhpcy5iYXNlUHJvZmlsZS5sb2FkKGRhdGFHcmlk
LnNldEJhc2VEYXRhU291cmNlLmJpbmQoZGF0YUdyaWQpKTsKQEAgLTg2Niw3ICs4NjYsNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgICAgIFByb2ZpbGVyQWdl
bnQuZ2V0UHJvZmlsZSh0aGlzLnByb2ZpbGVUeXBlKCkuaWQsIHRoaXMudWlkKTsKICAgICAgICAg
fQotICAgICAgICB2YXIgbG9hZGVyUHJveHkgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RMb2FkZXJQcm94eX0gKi8gdGhpcy5fcmVjZWl2ZXI7CisgICAgICAgIHZhciBsb2Fk
ZXJQcm94eSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
fSAqLyAodGhpcy5fcmVjZWl2ZXIpOwogICAgICAgICBsb2FkZXJQcm94eS5hZGRDb25zdW1lcihj
YWxsYmFjayk7CiAgICAgfSwKIApAQCAtOTM3LDcgKzkzNyw3IEBAIFdlYkluc3BlY3Rvci5IZWFw
UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChzbmFwc2hvdFByb3h5KQog
ICAgICAgICAgICAgdGhpcy5fc25hcHNob3RQcm94eSA9IHNuYXBzaG90UHJveHk7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVNuYXBzaG90U3RhdHVzKCk7Ci0gICAgICAgIHZhciB3b3JrZXIgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovIHRoaXMuX3NuYXBzaG90
UHJveHkud29ya2VyOworICAgICAgICB2YXIgd29ya2VyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90V29ya2VyfSAqLyAodGhpcy5fc25hcHNob3RQcm94eS53b3JrZXIpOwog
ICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7CiAgICAgICAgIHdvcmtlci5zdGFydENo
ZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscygpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwppbmRleCAwYzRmZWQw
N2U3NjNmMjJmZWJlYzg1MTJlYzViZDg0YTZhMWNhZGI4Li5lNjQ0MGMxYmRlYzA0ZDNjYWVhNTlm
MTQ4MTBmOTk5NWJiODYyN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKQEAgLTE5OCw3ICsxOTgsNyBAQCBXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9mcmFtZU5h
dmlnYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2VUcmVl
RnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZl
bnQuZGF0YTsKKyAgICAgICAgdmFyIHJlc291cmNlVHJlZUZyYW1lID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhp
cy5fcHJvY2Vzc0ZyYW1lTmF2aWdhdGVkKHJlc291cmNlVHJlZUZyYW1lKTsKICAgICB9LAogCkBA
IC0yMDcsNyArMjA3LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgcmVzb3VyY2VUcmVlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlc291cmNlVHJl
ZUZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fb3JpZ2luUmVtb3ZlZEZyb21GcmFtZShyZXNvdXJj
ZVRyZWVGcmFtZS5pZCk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKaW5kZXggZDMwMDA2YTc4ODAwNDIyNjNl
MGI2OGQ2ODRiYTZjMmEzMGU1YjU2Ny4uNDFlMmRlOTg3ODNlZjVjNWUyNDU1Y2Y0MTgxOWI0MGJh
N2NjMzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luZGV4ZWREQlZpZXdzLmpzCkBAIC0xODMsNyArMTgzLDcgQEAgV2ViSW5zcGVjdG9yLklEQkRh
dGFWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGtleUNvbHVt
bkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJdIikp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGtleVBhdGhTdHJpbmcgPSAvKiog
QHR5cGUge3N0cmluZ30gKi8ga2V5UGF0aDsKKyAgICAgICAgICAgIHZhciBrZXlQYXRoU3RyaW5n
ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChrZXlQYXRoKTsKICAgICAgICAgICAgIGtleUNvbHVt
bkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuX2tleVBhdGhTdHJpbmdGcmFnbWVudChr
ZXlQYXRoU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIikiKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJj
ZUZyYW1lLmpzCmluZGV4IGEzMDE2MDY4ZTNjOWQ0OGJhY2Y3YzUzODI0ZmZkZDRkYWI1ZDNlN2Eu
LmI5MjgyNGI5OWVmYTMwZTBkYzlmYmM0MmI4MDVhNDNhOWQ5MzNiYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJj
ZUZyYW1lLmpzCkBAIC0xMDUsNyArMTA1LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX29uRm9ybWF0dGVkQ2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGVudCA9IC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyBldmVudC5kYXRhLmNvbnRlbnQ7CisgICAgICAgIHZhciBjb250ZW50ID0gLyoq
IEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhLmNvbnRlbnQpOwogICAgICAgICB0aGlzLl9p
bm5lclNldENvbnRlbnQoY29udGVudCk7CiAgICAgfSwKIApAQCAtNDg5LDIzICs0ODksMjMgQEAg
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBf
YnJlYWtwb2ludEFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gZXZlbnQuZGF0
YS51aUxvY2F0aW9uOworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlVJTG9jYXRpb259ICovIChldmVudC5kYXRhLnVpTG9jYXRpb24pOwogCiAgICAgICAg
IGlmICh1aUxvY2F0aW9uLnVpU291cmNlQ29kZSAhPT0gdGhpcy5fdWlTb3VyY2VDb2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBicmVha3BvaW50ID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0gKi8gZXZlbnQuZGF0YS5i
cmVha3BvaW50OworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnR9ICovIChldmVudC5kYXRhLmJyZWFrcG9p
bnQpOwogICAgICAgICBpZiAodGhpcy5sb2FkZWQpCiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVh
a3BvaW50RGVjb3JhdGlvbih1aUxvY2F0aW9uLmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0
aW9uKCksIGJyZWFrcG9pbnQuZW5hYmxlZCgpLCBmYWxzZSk7CiAgICAgfSwKIAogICAgIF9icmVh
a3BvaW50UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlMb2Nh
dGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259ICovIGV2ZW50LmRhdGEu
dWlMb2NhdGlvbjsKKyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5VSUxvY2F0aW9ufSAqLyAoZXZlbnQuZGF0YS51aUxvY2F0aW9uKTsKICAgICAgICAgaWYg
KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlICE9PSB0aGlzLl91aVNvdXJjZUNvZGUpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50fSAqLyBldmVudC5kYXRhLmJyZWFr
cG9pbnQ7CisgICAgICAgIHZhciBicmVha3BvaW50ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0gKi8gKGV2ZW50LmRhdGEuYnJlYWtwb2ludCk7
CiAgICAgICAgIHZhciByZW1haW5pbmdCcmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludE1hbmFn
ZXIuZmluZEJyZWFrcG9pbnQodGhpcy5fdWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLmxpbmVOdW1i
ZXIpOwogICAgICAgICBpZiAoIXJlbWFpbmluZ0JyZWFrcG9pbnQgJiYgdGhpcy5sb2FkZWQpCiAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50RGVjb3JhdGlvbih1aUxvY2F0aW9uLmxp
bmVOdW1iZXIpOwpAQCAtNTEzLDE0ICs1MTMsMTQgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBfY29uc29sZU1lc3NhZ2VBZGRlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVzc2FnZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlfSAqLyBldmVudC5kYXRhOworICAg
ICAgICB2YXIgbWVzc2FnZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNv
bnNvbGVNZXNzYWdlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIGlmICh0aGlzLmxvYWRlZCkK
ICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZVRvU291cmNlKG1lc3NhZ2UubGluZU51bWJlciwg
bWVzc2FnZS5vcmlnaW5hbE1lc3NhZ2UpOwogICAgIH0sCiAKICAgICBfY29uc29sZU1lc3NhZ2VS
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUHJl
c2VudGF0aW9uQ29uc29sZU1lc3NhZ2V9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHRo
aXMubG9hZGVkKQogICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlRnJvbVNvdXJjZShtZXNz
YWdlLmxpbmVOdW1iZXIsIG1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdlKTsKICAgICB9LApAQCAtNTgy
LDcgKzU4Miw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gZXZl
bnQuZGF0YS5saW5lTnVtYmVyOwotICAgICAgICB2YXIgZXZlbnRPYmplY3QgPSAvKiogQHR5cGUg
e0V2ZW50fSAqLyBldmVudC5kYXRhLmV2ZW50OworICAgICAgICB2YXIgZXZlbnRPYmplY3QgPSAv
KiogQHR5cGUge0V2ZW50fSAqLyAoZXZlbnQuZGF0YS5ldmVudCk7CiAKICAgICAgICAgaWYgKGV2
ZW50T2JqZWN0LmJ1dHRvbiAhPSAwIHx8IGV2ZW50T2JqZWN0LmFsdEtleSB8fCBldmVudE9iamVj
dC5jdHJsS2V5IHx8IGV2ZW50T2JqZWN0Lm1ldGFLZXkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC02MzAsNyArNjMwLDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NvbnRpbnVlVG9MaW5lOiBmdW5jdGlvbihsaW5lTnVt
YmVyKQogICAgIHsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gdGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIDApOworICAgICAgICB2YXIgcmF3TG9jYXRp
b24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAo
dGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIDAp
KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY29udGludWVUb0xvY2F0aW9u
KHJhd0xvY2F0aW9uKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKaW5kZXggZTc1Y2QwMmIzMzhjMTdm
ZDExOGUyOTk3ZDY2YWEwYWFmZGNlODcxYy4uYjQyMTI2ZGFlYWM1YTQ5NGUxYjI4NGNkYjc3MGZh
N2ViMDlhN2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9NZW1vcnlTdGF0aXN0aWNzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwpAQCAtNDA5LDcgKzQwOSw3IEBAIFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZSA9IHsKIAogICAgIHNob3c6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHZhciBhbmNob3IgPSAvKiogQHR5cGUge0VsZW1lbnR8bnVsbH0gKi8g
dGhpcy5fY29udGFpbmVyQW5jaG9yLm5leHRTaWJsaW5nOworICAgICAgICB2YXIgYW5jaG9yID0g
LyoqIEB0eXBlIHtFbGVtZW50fSAqLyAodGhpcy5fY29udGFpbmVyQW5jaG9yLm5leHRTaWJsaW5n
KTsKICAgICAgICAgdGhpcy5fbWVtb3J5U3BsaXRWaWV3LnNob3codGhpcy5fdGltZWxpbmVQYW5l
bC5lbGVtZW50LCBhbmNob3IpOwogICAgICAgICB0aGlzLl91cGRhdGVTaXplKCk7CiAgICAgICAg
IHRoaXMuX3JlZnJlc2hEaXZpZGVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzCmluZGV4IGI2ZjY4MGM2MTkxMWJkOWQ5OWRj
ZTgxMzIzNmU5MGU3YzU3NjE2MTguLmM5MTAzYmJhMmYzMWE2OGZkOGI2MjgyY2VmNmQzMThmMzA5
NzhkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2
aWdhdG9yVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05h
dmlnYXRvclZpZXcuanMKQEAgLTg0LDI1ICs4NCwyNSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfdWlTb3VyY2VDb2RlVGl0bGVDaGFuZ2VkOiBmdW5j
dGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8g
KGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFRpdGxlKHVpU291cmNl
Q29kZSkKICAgICB9LAogCiAgICAgX3VpU291cmNlQ29kZVdvcmtpbmdDb3B5Q2hhbmdlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC50YXJnZXQ7CisgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICov
IChldmVudC50YXJnZXQpOwogICAgICAgICB0aGlzLl91cGRhdGVTY3JpcHRUaXRsZSh1aVNvdXJj
ZUNvZGUpCiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVXb3JraW5nQ29weUNvbW1pdHRlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC50YXJnZXQ7CisgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
ICovIChldmVudC50YXJnZXQpOwogICAgICAgICB0aGlzLl91cGRhdGVTY3JpcHRUaXRsZSh1aVNv
dXJjZUNvZGUpCiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVGb3JtYXR0ZWRDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFRpdGxlKHVpU291
cmNlQ29kZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrTG9nLmpzCmluZGV4IDg0ZmYxMTAyMWJmN2UwOTVhOTMwNzczOTc3MTc4ZTMw
YjM2YWI0M2UuLmZjNDU4NTZiMWY2MDE1M2EzZDRiOTM1MWE1MmQ5MjQ2OTkzMDU2NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0xvZy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMKQEAg
LTk3LDcgKzk3LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9vblJlcXVlc3RTdGFydGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9
ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVx
dWVzdHMucHVzaChyZXF1ZXN0KTsKICAgICAgICAgdGhpcy5fcmVxdWVzdEZvcklkW3JlcXVlc3Qu
cmVxdWVzdElkXSA9IHJlcXVlc3Q7CiAgICAgICAgIHJlcXVlc3QuX19wYWdlID0gdGhpcy5fY3Vy
cmVudFBhZ2VMb2FkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya01hbmFnZXIuanMKaW5kZXggYWQwMTI4NjkwNDJlNWFjM2JlNDQ5MjhjMDNjYmU2
NTcwYzYzOWVlMC4uZjBiOWU1Y2M0Yjg0OTczY2MyOTZjNGEwMjhkYjE3MTMxNGI0MGE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5h
Z2VyLmpzCkBAIC0xMDQsNyArMTA0LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY2FjaGVEaXNhYmxlZFNldHRpbmdDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBlbmFibGVkID0gLyoqIEB0eXBlIHti
b29sZWFufSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZW5hYmxlZCA9IC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBOZXR3b3JrQWdlbnQuc2V0Q2FjaGVE
aXNhYmxlZChlbmFibGVkKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDA2MjliZjYzYzYzM2I1ZmMwODlj
M2RlMDI5OTIwYTA5ODU4MDdmODEuLjczN2VmY2FjMmM4NmZkOTJhMDIzZWQyMzRiODc1MTRmYTI5
MjMzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzCkBAIC03OTUsNyArNzk1LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfb25SZXF1ZXN0VXBkYXRlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgcmVxdWVz
dCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0KHJlcXVlc3QpOwogICAgIH0sCiAKQEAg
LTgyMCw3ICs4MjAsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAodGhpcy5fcHJlc2VydmVMb2dUb2dnbGUudG9nZ2xlZCkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZyYW1lID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRh
KTsKICAgICAgICAgdmFyIGxvYWRlcklkID0gZnJhbWUubG9hZGVySWQ7CiAKICAgICAgICAgLy8g
UHJlc2VydmUgcHJvdmlzaW9uYWwgbG9hZCByZXF1ZXN0cy4KQEAgLTE1MTgsNyArMTUxOCw3IEBA
IFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlv
biByZXZlYWwoKQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaW5zcGVjdG9y
Vmlldy5zZXRDdXJyZW50UGFuZWwodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLnJldmVhbEFuZEhp
Z2hsaWdodFJlcXVlc3QoLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICov
IHRhcmdldCk7CisgICAgICAgICAgICB0aGlzLnJldmVhbEFuZEhpZ2hsaWdodFJlcXVlc3QoLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovICh0YXJnZXQpKTsKICAgICAg
ICAgfQogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIlJldmVhbCBpbiBuZXR3
b3JrIHBhbmVsIiA6ICJSZXZlYWwgaW4gTmV0d29yayBQYW5lbCIpLCByZXZlYWwuYmluZCh0aGlz
KSk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMKaW5kZXggYzJkMGYw
Mzg1OTI4YjU1NDZlMDk5Yzk2YzEzZGU4MjhlODkyNjNjOS4uMTBmYTg2Yzk2MDExOTY0ZTJkNDNi
Yzg3YzY4MjgyMmU4MDZjMjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMK
QEAgLTY3LDcgKzY3LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3BhcnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuU2NyaXB0fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgc2NyaXB0ID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIGlmICgh
c2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgdmFyIGlzRHluYW1pY0Fub255bW91c1NjcmlwdDsKQEAgLTkzLDcg
KzkzLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgX3Jlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlJlc291cmNlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2FkZEZp
bGUocmVzb3VyY2UudXJsLCByZXNvdXJjZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzCmlu
ZGV4IDM4MGY0ZGI4ZjBhYzZlMWZhNzAxYWExMjM1NmMxMWI1ZGQzMDk2ZGMuLmIwYmQ0MzFhNmFm
ZmQzMjgyMWMzM2NlNWJhMDg5OTIzMWJkNTQyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIuanMKQEAgLTkw
LDcgKzkwLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFBvcG92ZXJIZWxwZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLnRleHRDb250ZW50ID0gcmVz
cG9uc2UubmFtZSB8fCByZXNwb25zZS5pbmZlcnJlZE5hbWUgfHwgcmVzcG9uc2UuZGlzcGxheU5h
bWUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOwogCiAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9saW5raWZpZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkxpbmtpZmllcigpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gcmVzcG9u
c2UubG9jYXRpb247CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAocmVzcG9u
c2UubG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSB0aGlzLl9s
aW5raWZpZXIubGlua2lmeVJhd0xvY2F0aW9uKHJhd0xvY2F0aW9uLCAiZnVuY3Rpb24tbG9jYXRp
b24tbGluayIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmspCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGl0bGUuYXBwZW5kQ2hpbGQobGluayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNz
YWdlSGVscGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50
YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcwppbmRleCBhMGNjOTc4NDhkNTZkN2YwMzkzNDAw
ZjcxN2Y0YTMyZTMxMmU0ODRkLi4xMjBjNjc1ODJkYWIwM2RjNTBlMzI1MGFhYTVmMDIzMzAyZDE2
YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNl
bnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMKQEAgLTU1
LDcgKzU1LDcgQEAgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVy
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY29uc29sZU1lc3NhZ2VBZGRlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVzc2FnZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgbWVzc2Fn
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIGlmICghbWVzc2FnZS51cmwgfHwgIW1lc3NhZ2UuaXNFcnJvck9yV2Fybmlu
ZygpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC05Miw3ICs5Miw3IEBAIFdlYkluc3BlY3Rv
ci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgX3BhcnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAg
ICB2YXIgc2NyaXB0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSAqLyBldmVudC5k
YXRhOworICAgICAgICB2YXIgc2NyaXB0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2NyaXB0
fSAqLyAoZXZlbnQuZGF0YSk7CiAKICAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fcGVuZGlu
Z0NvbnNvbGVNZXNzYWdlc1tzY3JpcHQuc291cmNlVVJMXTsKICAgICAgICAgaWYgKCFtZXNzYWdl
cykKQEAgLTEwMSw3ICsxMDEsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1l
c3NhZ2VIZWxwZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcGVuZGluZ01lc3NhZ2VzID0g
W107CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gbWVzc2FnZXNbaV07Ci0gICAgICAgICAgICB2YXIg
cmF3TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0
aW9ufSAqLyBtZXNzYWdlLmxvY2F0aW9uKCk7CisgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24g
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAobWVz
c2FnZS5sb2NhdGlvbigpKTsKICAgICAgICAgICAgIGlmIChzY3JpcHQuc2NyaXB0SWQgPT09IHJh
d0xvY2F0aW9uLnNjcmlwdElkKQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnNvbGVNZXNz
YWdlVG9TY3JpcHQobWVzc2FnZSwgcmF3TG9jYXRpb24pOwogICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpz
CmluZGV4IDViNmEyNGRkMmMzNzVkZjRlNDgzNmU1YjAxY2NmN2I0YTQwZmY4ZjkuLjNlOTA4ODU4
MjUyMTRjYzRhNmUyMTg4YmMyYjBiMWNlZmY4MzFhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTEwOTEsNyArMTA5
MSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5pbnNwZWN0b3JWaWV3LmN1cnJlbnRQYW5lbCgpICE9PSB0aGlzKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBvYmplY3QgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3R9ICovIHRhcmdldDsKKyAgICAgICAgdmFyIG9iamVjdCA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gKHRhcmdldCk7CiAgICAg
ICAgIHZhciBvYmplY3RJZCA9IG9iamVjdC5vYmplY3RJZDsKICAgICAgICAgaWYgKCFvYmplY3RJ
ZCkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKaW5kZXggYjBkM2E4
MTA1ZjYwOTMxMjAxZmI2YTUxNGFmMTEyODUwZWE2ZDA0Ni4uM2JmNWUzMDFjOTY5MWVlM2FlODg3
OWUxODI0NTYxNDJkYmE0NzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKQEAgLTU2LDcgKzU2
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9u
KQogICAgIHsKLSAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOworICAg
ICAgICB2YXIgZGVidWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgdmFyIHNj
cmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGRlYnVnZ2VyTW9k
ZWxMb2NhdGlvbi5zY3JpcHRJZCk7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93
b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KSB8fCB0aGlzLl9nZXRPckNyZWF0
ZVRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQpOwogICAgICAgICBpZiAodWlTb3VyY2VDb2Rl
LnNjcmlwdEZpbGUoKSAmJiB1aVNvdXJjZUNvZGUuc2NyaXB0RmlsZSgpLmhhc0RpdmVyZ2VkRnJv
bVZNKCkpCkBAIC0yNzYsNyArMjc2LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFw
cGluZy5wcm90b3R5cGUgPSB7CiAKICAgICBfdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZTog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOworICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAq
LyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdWlTb3VyY2VDb2RlLnVy
bCk7CiAKICAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U2NyaXB0RmlsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0RmlsZS5FdmVudHMuRGlkTWVyZ2VUb1ZNLCB0
aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHRoaXMuX3VpU291cmNlQ29k
ZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigwLCAwKTsKKyAgICAgICAgdmFyIHJhd0xvY2F0aW9u
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gKHRo
aXMuX3VpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigwLCAwKSk7CiAgICAgICAg
IGlmICghcmF3TG9jYXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHZhciBzY3Jp
cHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChyYXdMb2NhdGlvbi5z
Y3JpcHRJZCk7CkBAIC00MDcsNyArNDA3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0
RmlsZS5wcm90b3R5cGUgPSB7CiAKICAgICBfd29ya2luZ0NvcHlDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHZhciB3YXNEaXJ0eSA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0g
Ki8gZXZlbnQuZGF0YS53YXNEaXJ0eTsKKyAgICAgICAgdmFyIHdhc0RpcnR5ID0gLyoqIEB0eXBl
IHtib29sZWFufSAqLyAoZXZlbnQuZGF0YS53YXNEaXJ0eSk7CiAgICAgICAgIGlmICghd2FzRGly
dHkgJiYgdGhpcy5fdWlTb3VyY2VDb2RlLmlzRGlydHkoKSAmJiAhdGhpcy5faGFzRGl2ZXJnZWRG
cm9tVk0pIHsKICAgICAgICAgICAgIHRoaXMuX2lzRGl2ZXJnaW5nRnJvbVZNID0gdHJ1ZTsKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3Jp
cHRGaWxlLkV2ZW50cy5XaWxsRGl2ZXJnZUZyb21WTSwgdGhpcy5fdWlTb3VyY2VDb2RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVl
TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJl
ZU1vZGVsLmpzCmluZGV4IGY1NTI3OTE1YzFlZWVmZjg0ZjIzZTQ5MWJhMWQ2ZDA0MGZhMWU0N2Qu
LmU5ZTEyYjlkYjRjYjhmMmEzZjgyNDVkNzI0OWUwZDkzNzQxZmJmMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VUcmVlTW9kZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5q
cwpAQCAtMTc2LDcgKzE3Niw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkUmVzb3VyY2VzUHJvY2Vzc2VkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBy
ZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIChldmVu
dC5kYXRhKTsKICAgICAgICAgaWYgKHJlcXVlc3QuZmFpbGVkIHx8IHJlcXVlc3QudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuWEhSKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0yMzMsNyArMjMzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICBfY29uc29sZU1lc3NhZ2VBZGRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgbXNnID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBtc2cgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5Db25zb2xlTWVzc2FnZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIg
cmVzb3VyY2UgPSBtc2cudXJsID8gdGhpcy5yZXNvdXJjZUZvclVSTChtc2cudXJsKSA6IG51bGw7
CiAgICAgICAgIGlmIChyZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMuX2FkZENvbnNvbGVNZXNz
YWdlVG9SZXNvdXJjZShtc2csIHJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmluZGV4IDQzMGVhOGE1ZDg3M2Nm
NmI4M2NkODhhMTJiNzBlZWU4NTk1NGVkYTUuLjJkYTNlOWUxZDZmZWE4OWJmM2Y5NTQ4MzU4Y2Vm
NDBlNjYyZDI4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMjk3LDcgKzI5Nyw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2RhdGFiYXNlQWRkZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGRhdGFiYXNlID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuRGF0YWJhc2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBkYXRh
YmFzZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRhdGFiYXNlfSAqLyAoZXZlbnQuZGF0YSk7
CiAgICAgICAgIHRoaXMuX2FkZERhdGFiYXNlKGRhdGFiYXNlKTsKICAgICB9LAogCkBAIC0zMzEs
NyArMzMxLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgKi8KICAgICBfZG9tU3RvcmFnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBkb21TdG9yYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZX0q
LyBldmVudC5kYXRhOworICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2V9Ki8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9hZGRET01T
dG9yYWdlKGRvbVN0b3JhZ2UpOwogICAgIH0sCiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9kb21TdG9y
YWdlVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgc3RvcmFnZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2V9Ki8gZXZlbnQuZGF0YTsKKyAgICAg
ICAgdmFyIHN0b3JhZ2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01TdG9yYWdlfSovIChl
dmVudC5kYXRhKTsKICAgICAgICAgdmFyIHZpZXcgPSB0aGlzLl9kb21TdG9yYWdlVmlld3MuZ2V0
KHN0b3JhZ2UpOwogICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyAmJiB2aWV3ID09PSB0aGlz
LnZpc2libGVWaWV3KQogICAgICAgICAgICAgdmlldy51cGRhdGUoKTsKQEAgLTE0NDYsNyArMTQ0
Niw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX2luZGV4ZWREQkFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBkYXRhYmFzZUlkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwuRGF0YWJhc2VJZH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGRhdGFiYXNlSWQgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkfSAqLyAoZXZl
bnQuZGF0YSk7CiAKICAgICAgICAgdmFyIGlkYkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLklEQkRhdGFiYXNlVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFnZVBhbmVsLCB0aGlz
Ll9pbmRleGVkREJNb2RlbCwgZGF0YWJhc2VJZCk7CiAgICAgICAgIHRoaXMuX2lkYkRhdGFiYXNl
VHJlZUVsZW1lbnRzLnB1c2goaWRiRGF0YWJhc2VUcmVlRWxlbWVudCk7CkBAIC0xNDYwLDcgKzE0
NjAsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIF9pbmRleGVkREJSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBkYXRhYmFzZUlkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwuRGF0YWJhc2VJZH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGRhdGFiYXNlSWQg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZUlkfSAqLyAo
ZXZlbnQuZGF0YSk7CiAKICAgICAgICAgdmFyIGlkYkRhdGFiYXNlVHJlZUVsZW1lbnQgPSB0aGlz
Ll9pZGJEYXRhYmFzZVRyZWVFbGVtZW50KGRhdGFiYXNlSWQpCiAgICAgICAgIGlmICghaWRiRGF0
YWJhc2VUcmVlRWxlbWVudCkKQEAgLTE0NzYsNyArMTQ3Niw3IEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2luZGV4ZWREQkxv
YWRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZGF0YWJhc2UgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZX0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuRGF0YWJhc2V9ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICB2YXIgaWRiRGF0
YWJhc2VUcmVlRWxlbWVudCA9IHRoaXMuX2lkYkRhdGFiYXNlVHJlZUVsZW1lbnQoZGF0YWJhc2Uu
ZGF0YWJhc2VJZCkKICAgICAgICAgaWYgKCFpZGJEYXRhYmFzZVRyZWVFbGVtZW50KQpAQCAtMTUz
OCwxNCArMTUzOCwxNCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbUxpc3RUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAKICAgICBfZmlsZVN5c3RlbUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciBmaWxlU3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmls
ZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmaWxl
U3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0
ZW19ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxlbWVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50KHRoaXMuX3N0b3JhZ2VQYW5l
bCwgZmlsZVN5c3RlbSk7CiAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoZmlsZVN5c3RlbVRyZWVF
bGVtZW50KTsKICAgICB9LAogCiAgICAgX2ZpbGVTeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihldmVu
dCkKICAgICB7Ci0gICAgICAgIHZhciBmaWxlU3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZh
ciBmaWxlU3lzdGVtID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZp
bGVTeXN0ZW19ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIGZpbGVTeXN0ZW1UcmVlRWxl
bWVudCA9IHRoaXMuX2ZpbGVTeXN0ZW1UcmVlRWxlbWVudEJ5TmFtZShmaWxlU3lzdGVtLm5hbWUp
OwogICAgICAgICBpZiAoIWZpbGVTeXN0ZW1UcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE1NTYsNyArMTU1Niw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBfZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lOiBm
dW5jdGlvbihmaWxlU3lzdGVtTmFtZSkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGNoaWxkID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50fSAqLyB0aGlzLmNo
aWxkcmVuW2ldOworICAgICAgICAgICAgdmFyIGNoaWxkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbVRyZWVFbGVtZW50fSAqLyAodGhpcy5jaGlsZHJlbltpXSk7CiAgICAgICAg
ICAgICBpZiAoY2hpbGQuZmlsZVN5c3RlbU5hbWUgPT09IGZpbGVTeXN0ZW1OYW1lKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuW2ldOwogICAgICAgICB9CkBAIC0yMjExLDcg
KzIyMTEsNyBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0c1RyZWVFbGVtZW50c1RyYXZlcnNl
ci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3RyYXZlcnNlTmV4dDogZnVuY3Rpb24odHJl
ZUVsZW1lbnQpCiAgICAgewotICAgICAgICByZXR1cm4gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
QmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0gKi8gdHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVs
ZW1lbnQoZmFsc2UsIHRoaXMuX3Jvb3QsIHRydWUpOworICAgICAgICByZXR1cm4gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0gKi8gKHRyZWVFbGVtZW50LnRy
YXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCB0aGlzLl9yb290LCB0cnVlKSk7CiAgICAgfSwK
IAogICAgIC8qKgpAQCAtMjIyMCw3ICsyMjIwLDcgQEAgV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3Vs
dHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF90cmF2
ZXJzZVByZXZpb3VzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fSAqLyB0cmVl
RWxlbWVudC50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQoZmFsc2UsIHRydWUpOworICAgICAg
ICByZXR1cm4gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudH0g
Ki8gKHRyZWVFbGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudChmYWxzZSwgdHJ1ZSkp
OwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qcwppbmRleCA1NmI4MjI2NzYyZTU0
YWY0ODI0YjhiNjNlNzA0YWU0MjI0ZDNhYzZhLi40NTkyZTRhZDUxMTg5OTk3NGIwNzFlZGJjZjM2
MGEyM2Y2YzRmNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3LmpzCkBAIC0xMjgsNyArMTI4LDcgQEAgV2Vi
SW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3Jldmlz
aW9uQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YS51
aVNvdXJjZUNvZGU7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29kZSk7CiAgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGVJdGVtID0gdGhpcy5fdWlTb3VyY2VDb2RlSXRlbXMuZ2V0KHVp
U291cmNlQ29kZSk7CiAgICAgICAgIGlmICghdWlTb3VyY2VDb2RlSXRlbSkgewogICAgICAgICAg
ICAgdWlTb3VyY2VDb2RlSXRlbSA9IHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZUl0ZW0odWlTb3Vy
Y2VDb2RlKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfdWlTb3VyY2VDb2RlUmVtb3ZlZDogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQu
ZGF0YSk7CiAgICAgICAgIHRoaXMuX3JlbW92ZVVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwog
ICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U0FTU1NvdXJjZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NBU1NTb3VyY2VNYXBwaW5nLmpzCmluZGV4IGMwOGY4OGExNjU2MjRhOWZjOTgyOTY3ZTA5NTUw
NjUxMjY3OWVkNDIuLjQzYmMxZTdjZjQ2NjQwZTc2OGQ5NzZkOTFlYWYwYjc2NmVkMDUwNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TQVNTU291
cmNlTWFwcGluZy5qcwpAQCAtNjcsNyArNjcsNyBAQCBXZWJJbnNwZWN0b3IuU0FTU1NvdXJjZU1h
cHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9maWxlU2F2ZUZpbmlzaGVkOiBmdW5j
dGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzYXNzVVJMID0gLyoqIEB0eXBlIHtzdHJp
bmd9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBzYXNzVVJMID0gLyoqIEB0eXBlIHtzdHJp
bmd9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQogICAgICAg
ICB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGltZW91dEZvclVSTFtzYXNzVVJMXTsKQEAg
LTEwNCw3ICsxMDQsNyBAQCBXZWJJbnNwZWN0b3IuU0FTU1NvdXJjZU1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIF9yZXNvdXJjZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNl
fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgcmVzb3VyY2UgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5SZXNvdXJjZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAocmVzb3VyY2Uu
dHlwZSAhPT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldCkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIFdlYkluc3BlY3Rvci5TQVNTU291cmNl
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRp
b246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIGxvY2F0aW9uID0g
LyoqIEB0eXBlIFdlYkluc3BlY3Rvci5DU1NMb2NhdGlvbiAqLyByYXdMb2NhdGlvbjsKKyAgICAg
ICAgdmFyIGxvY2F0aW9uID0gLyoqIEB0eXBlIFdlYkluc3BlY3Rvci5DU1NMb2NhdGlvbiAqLyAo
cmF3TG9jYXRpb24pOwogICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHRoaXMuX3VpTG9jYXRpb25z
W2xvY2F0aW9uLnVybCArICI6IiArIGxvY2F0aW9uLmxpbmVOdW1iZXJdOwogICAgICAgICBpZiAo
IXVpTG9jYXRpb24pIHsKICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jr
c3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKGxvY2F0aW9uLnVybCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5l
LmpzCmluZGV4IGFiNjkyZTlkYWI5MzdkODg2ZmNlMDg0ZjQ2OGQ0MzVmY2U3NDBjMzUuLjEyMDk1
MjZiN2ViYjNjZWU4YzgyNDRkMzM5NmYzNDZiYmRlMWVmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5lLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5l
LmpzCkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluU2lkZWJhclBhbmUu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4Y2VwdGlvbiA9IGRl
dGFpbHMucmVhc29uID09PSBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5CcmVha1JlYXNvbi5F
eGNlcHRpb24gPyBkZXRhaWxzLmF1eERhdGEgOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhUHJvcGVy
dGllcyA9IGV4dHJhUHJvcGVydGllcyB8fCBbXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgZXhjZXB0aW9uT2JqZWN0ID0gLyoqIEB0eXBlIHtSdW50aW1lQWdlbnQuUmVtb3RlT2Jq
ZWN0fSAqLyBleGNlcHRpb247CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4Y2Vw
dGlvbk9iamVjdCA9IC8qKiBAdHlwZSB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0gKi8gKGV4
Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFQcm9wZXJ0aWVzLnB1
c2gobmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSgiPGV4Y2VwdGlvbj4iLCBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKGV4Y2VwdGlvbk9iamVjdCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwppbmRleCBhYWYzODdhYTc5
YzQ5MTMxZTFlOWQyOTA0MDUyZWM0MjJhZDBmYzU2Li40NDVjNWQxNDAxMzA0Mzg1MjkwMmY3YWRh
NTE2Y2UzNjQ2YzNjODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdC5qcwpAQCAtMjI0LDcgKzIyNCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHQuTG9jYXRp
b24ucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHVpTG9jYXRpb246IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyB0aGlzLnJhd0xvY2F0aW9uKCk7Cisg
ICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAodGhpcy5yYXdMb2NhdGlvbigpKTsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihkZWJ1Z2dlck1v
ZGVsTG9jYXRpb24ubGluZU51bWJlciwgZGVidWdnZXJNb2RlbExvY2F0aW9uLmNvbHVtbk51bWJl
cik7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdEZvcm1hdHRlci5qcwppbmRleCBiOTllYWI3Y2Q1MWZjY2FmNTU1NjZkMzEzNDgx
YTU4N2RjMzkzY2RiLi4zZWVkZWJhMjdiN2M2YTA0ZWU5NDg4MzU4ZWE0YWI2YjkzNGIyZWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1h
dHRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZv
cm1hdHRlci5qcwpAQCAtMTI1LDcgKzEyNSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0
ZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jYWNoZWRXb3JrZXIp
IHsKICAgICAgICAgICAgIHRoaXMuX2NhY2hlZFdvcmtlciA9IG5ldyBXb3JrZXIoIlNjcmlwdEZv
cm1hdHRlcldvcmtlci5qcyIpOwotICAgICAgICAgICAgdGhpcy5fY2FjaGVkV29ya2VyLm9ubWVz
c2FnZSA9IC8qKiBAdHlwZSB7ZnVuY3Rpb24odGhpczpXb3JrZXIpfSAqLyB0aGlzLl9kaWRGb3Jt
YXRDb250ZW50LmJpbmQodGhpcyk7CisgICAgICAgICAgICB0aGlzLl9jYWNoZWRXb3JrZXIub25t
ZXNzYWdlID0gLyoqIEB0eXBlIHtmdW5jdGlvbih0aGlzOldvcmtlcil9ICovICh0aGlzLl9kaWRG
b3JtYXRDb250ZW50LmJpbmQodGhpcykpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlz
Ll9jYWNoZWRXb3JrZXI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA5NDY5ODcwMjFjNGQxNGJlNzRkZDk2M2Jk
MWZmNWIxMDI1MDRkOWM4Li45YTAzYWQyMzQ2YmI2OGM1YzMyMmQ5M2Q1Yjc0M2U1ZWFmZjkzNDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcwpAQCAtMjM3LDcgKzIzNyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIF91aVNvdXJjZUNvZGVBZGRlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgdWlTb3VyY2VD
b2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwogICAgIH0s
CiAKQEAgLTI1NSw3ICsyNTUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgIF91aVNvdXJjZUNvZGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKICAgICAg
ICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnJlbW92ZVVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUp
OwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3IucmVtb3ZlVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7CiAgICAgICAgIHRoaXMuX3JlbW92ZVNvdXJjZUZyYW1lKHVpU291cmNlQ29kZSk7CkBAIC01
NDAsNyArNTQwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgX2VkaXRvckNsb3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9u
YXZpZ2F0b3JDb250cm9sbGVyLmhpZGVOYXZpZ2F0b3JPdmVybGF5KCk7Ci0gICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2
ZW50LmRhdGE7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICBpZiAodGhpcy5f
Y3VycmVudFVJU291cmNlQ29kZSA9PT0gdWlTb3VyY2VDb2RlKQogICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX2N1cnJlbnRVSVNvdXJjZUNvZGU7CkBAIC01NTIsNyArNTUyLDcgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZWRpdG9yU2VsZWN0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8g
KGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zaG93RmlsZSh1
aVNvdXJjZUNvZGUpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JDb250cm9sbGVyLmhpZGVOYXZp
Z2F0b3JPdmVybGF5KCk7CiAgICAgICAgIHNvdXJjZUZyYW1lLmZvY3VzKCk7CkBAIC01NjEsNyAr
NTYxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBf
c2NyaXB0U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQu
ZGF0YS51aVNvdXJjZUNvZGU7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29kZSk7
CiAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dGaWxlKHVpU291cmNlQ29kZSk7
CiAgICAgICAgIHRoaXMuX25hdmlnYXRvckNvbnRyb2xsZXIuaGlkZU5hdmlnYXRvck92ZXJsYXko
KTsKICAgICAgICAgaWYgKHNvdXJjZUZyYW1lICYmIGV2ZW50LmRhdGEuZm9jdXNTb3VyY2UpCkBA
IC05MTgsNyArOTE4LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgY2FuU2VhcmNoQW5kUmVwbGFjZTogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdmFyIHZpZXcgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0gKi8g
dGhpcy52aXNpYmxlVmlldzsKKyAgICAgICAgdmFyIHZpZXcgPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZX0gKi8gKHRoaXMudmlzaWJsZVZpZXcpOwogICAgICAgICByZXR1cm4g
ISF2aWV3ICYmIHZpZXcuY2FuRWRpdFNvdXJjZSgpOwogICAgIH0sCiAKQEAgLTkyNyw3ICs5Mjcs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICByZXBsYWNlU2VsZWN0aW9uV2l0aDogZnVuY3Rpb24odGV4dCkKICAgICB7Ci0gICAgICAgIHZh
ciB2aWV3ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291cmNlRnJhbWV9ICovIHRoaXMudmlz
aWJsZVZpZXc7CisgICAgICAgIHZhciB2aWV3ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWV9ICovICh0aGlzLnZpc2libGVWaWV3KTsKICAgICAgICAgdmlldy5yZXBsYWNlU2Vh
cmNoTWF0Y2hXaXRoKHRleHQpOwogICAgIH0sCiAKQEAgLTkzNyw3ICs5MzcsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZXBsYWNlQWxs
V2l0aDogZnVuY3Rpb24ocXVlcnksIHRleHQpCiAgICAgewotICAgICAgICB2YXIgdmlldyA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lfSAqLyB0aGlzLnZpc2libGVWaWV3Owor
ICAgICAgICB2YXIgdmlldyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lfSAq
LyAodGhpcy52aXNpYmxlVmlldyk7CiAgICAgICAgIHZpZXcucmVwbGFjZUFsbFdpdGgocXVlcnks
IHRleHQpOwogICAgIH0sCiAKQEAgLTk2MSw3ICs5NjEsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
c291cmNlRnJhbWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1l
KSB7Ci0gICAgICAgICAgICB2YXIgamF2YVNjcmlwdFNvdXJjZUZyYW1lID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lfSAqLyBzb3VyY2VGcmFtZTsKKyAgICAg
ICAgICAgIHZhciBqYXZhU2NyaXB0U291cmNlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5KYXZhU2NyaXB0U291cmNlRnJhbWV9ICovIChzb3VyY2VGcmFtZSk7CiAgICAgICAgICAgICBq
YXZhU2NyaXB0U291cmNlRnJhbWUudG9nZ2xlQnJlYWtwb2ludE9uQ3VycmVudExpbmUoKTsKICAg
ICAgICAgfSAgICAgICAgICAgIAogICAgIH0sCkBAIC0xMDI3LDggKzEwMjcsOCBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9maWxlUmVuYW1lZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhLnVpU291cmNlQ29kZTsK
LSAgICAgICAgdmFyIG5hbWUgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gZXZlbnQuZGF0YS5uYW1l
OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSAqLyAoZXZlbnQuZGF0YS51aVNvdXJjZUNvZGUpOworICAgICAgICB2YXIgbmFt
ZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZlbnQuZGF0YS5uYW1lKTsKICAgICAgICAgaWYg
KCF1aVNvdXJjZUNvZGUuaXNTbmlwcGV0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLnJlbmFtZVNjcmlwdFNuaXBwZXQodWlTb3Vy
Y2VDb2RlLCBuYW1lKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9pdGVtUmVuYW1pbmdSZXF1ZXN0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gKGV2ZW50LmRhdGEpOwogICAgICAgICAKICAgICAgICAgdmFyIHNob3VsZEhpZGVOYXZpZ2F0
b3IgPSAhdGhpcy5fbmF2aWdhdG9yQ29udHJvbGxlci5pc05hdmlnYXRvclBpbm5lZCgpOwogICAg
ICAgICBpZiAodGhpcy5fbmF2aWdhdG9yQ29udHJvbGxlci5pc05hdmlnYXRvckhpZGRlbigpKQpA
QCAtMTExNSw3ICsxMTE1LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIHRhcmdldDsKKyAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gKi8gKHRhcmdldCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJMb2NhbCBtb2RpZmljYXRpb25zLi4uIiksIHRoaXMuX3Nob3dMb2NhbEhp
c3RvcnkuYmluZCh0aGlzLCB1aVNvdXJjZUNvZGUpKTsKICAgICAgICAgdmFyIHJlc291cmNlID0g
V2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHVpU291cmNlQ29kZS51cmwpOwogICAgICAgICBp
ZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UucmVxdWVzdCkKQEAgLTExMzAsNyArMTEzMCw3IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYg
KCEodGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHZhciByZW1vdGVPYmplY3QgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3R9ICovIHRhcmdldDsKKyAgICAgICAgdmFyIHJlbW90ZU9iamVj
dCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gKHRhcmdldCk7CiAg
ICAgICAgIGlmIChyZW1vdGVPYmplY3QudHlwZSAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLmpzCmluZGV4IGEzMjMwYWEyYjZhOWRkNjY2
ZTRhZGYzMWZiYjJkNzM4ZmExZmJmZGQuLjhmMzg3ZjY1YjZlZjE4MDNmNmFkOWRiYjkxMDJiYTVh
YTdjZGIyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsRGVzY3JpcHRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbERlc2NyaXB0b3IuanMKQEAgLTQ3LDcgKzQ3LDcgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbERlc2NyaXB0b3IucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgaGFzQXBwbGljYWJsZUl0ZW1zID0gdGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZTsKIAogICAgICAgICBpZiAoIWhhc0FwcGxpY2FibGVJdGVtcyAmJiB0YXJnZXQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KSB7Ci0gICAgICAgICAgICB2YXIg
cmVtb3RlT2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyB0
YXJnZXQ7CisgICAgICAgICAgICB2YXIgcmVtb3RlT2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyAodGFyZ2V0KTsKICAgICAgICAgICAgIGlmIChyZW1vdGVP
YmplY3QudHlwZSAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU291cmNlTWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U3R5bGVzU291cmNlTWFwcGluZy5qcwppbmRleCA0ZGU3NTA5ZGM1NDI5ODcyNGIxOGNhYTE1YzQx
ZjI3YzIwMTRjYzIxLi5iZDdlMjZjMmFmNzQ0NTY0NzEzZmFlODA0YzBiNjgzY2MxMTBkMmQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJj
ZU1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTb3VyY2VNYXBwaW5nLmpzCkBAIC00OSw3ICs0OSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNT
b3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlM
b2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgewotICAgICAgICB2YXIgbG9jYXRp
b24gPSAvKiogQHR5cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9uICovIHJhd0xvY2F0aW9uOwor
ICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9u
ICovIChyYXdMb2NhdGlvbik7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNv
dXJjZUNvZGVGb3JVUkxbbG9jYXRpb24udXJsXTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIDApOwog
ICAgIH0sCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBwaW5n
LnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlOiBmdW5j
dGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUudXJsIHx8IHRoaXMuX3VpU291
cmNlQ29kZUZvclVSTFt1aVNvdXJjZUNvZGUudXJsXSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgaWYgKHVpU291cmNlQ29kZS5jb250ZW50VHlwZSgpICE9PSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUeXBlcy5TdHlsZXNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWluZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcwppbmRleCBkNGE0ZTll
MGE3MDYwODBhZTNiYWUxMWU4Y2ViNjNjYzNjNjVmYzE1Li4wNTZhZGJjYTFlMWFkODU1MDhjMTk0
ZGVhZmY3OTNkNmI1Yjk0YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcwpAQCAtMTI3LDE0ICsx
MjcsMTQgQEAgV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7
CiAKICAgICBfc2Nyb2xsQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2
YXIgbGluZU51bWJlciA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyBldmVudC5kYXRhOworICAgICAg
ICB2YXIgbGluZU51bWJlciA9IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoZXZlbnQuZGF0YSk7CiAg
ICAgICAgIHRoaXMuX2hpc3RvcnkudXBkYXRlU2Nyb2xsTGluZU51bWJlcih0aGlzLl9jdXJyZW50
RmlsZS51cmwsIGxpbmVOdW1iZXIpOwogICAgICAgICB0aGlzLl9oaXN0b3J5LnNhdmUodGhpcy5f
cHJldmlvdXNseVZpZXdlZEZpbGVzU2V0dGluZyk7CiAgICAgfSwKIAogICAgIF9zZWxlY3Rpb25D
aGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByYW5nZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFy
IHJhbmdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIHRoaXMuX2hpc3RvcnkudXBkYXRlU2VsZWN0aW9uUmFuZ2UodGhpcy5fY3Vy
cmVudEZpbGUudXJsLCByYW5nZSk7CiAgICAgICAgIHRoaXMuX2hpc3Rvcnkuc2F2ZSh0aGlzLl9w
cmV2aW91c2x5Vmlld2VkRmlsZXNTZXR0aW5nKTsKICAgICB9LApAQCAtMjk1LDggKzI5NSw4IEBA
IFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIF90YWJDbG9zZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHRh
YklkID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRhdGEudGFiSWQ7Ci0gICAgICAgIHZh
ciB1c2VyR2VzdHVyZSA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gZXZlbnQuZGF0YS5pc1VzZXJH
ZXN0dXJlOworICAgICAgICB2YXIgdGFiSWQgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50
LmRhdGEudGFiSWQpOworICAgICAgICB2YXIgdXNlckdlc3R1cmUgPSAvKiogQHR5cGUge2Jvb2xl
YW59ICovIChldmVudC5kYXRhLmlzVXNlckdlc3R1cmUpOwogCiAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSB0aGlzLl9maWxlc1t0YWJJZF07CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50Rmls
ZSA9PT0gdWlTb3VyY2VDb2RlKSB7CkBAIC0zMTksOCArMzE5LDggQEAgV2ViSW5zcGVjdG9yLlRh
YmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3RhYlNlbGVj
dGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB0YWJJZCA9IC8qKiBAdHlw
ZSB7c3RyaW5nfSAqLyBldmVudC5kYXRhLnRhYklkOwotICAgICAgICB2YXIgdXNlckdlc3R1cmUg
PSAvKiogQHR5cGUge2Jvb2xlYW59ICovIGV2ZW50LmRhdGEuaXNVc2VyR2VzdHVyZTsKKyAgICAg
ICAgdmFyIHRhYklkID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhLnRhYklkKTsK
KyAgICAgICAgdmFyIHVzZXJHZXN0dXJlID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyAoZXZlbnQu
ZGF0YS5pc1VzZXJHZXN0dXJlKTsKIAogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5f
ZmlsZXNbdGFiSWRdOwogICAgICAgICB0aGlzLl9pbm5lclNob3dGaWxlKHVpU291cmNlQ29kZSwg
dXNlckdlc3R1cmUpOwpAQCAtMzYyLDI1ICszNjIsMjUgQEAgV2ViSW5zcGVjdG9yLlRhYmJlZEVk
aXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAKICAgICBfdWlTb3VyY2VDb2RlVGl0bGVDaGFu
Z2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGVUaXRsZSh1
aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICBfdWlTb3VyY2VDb2RlV29ya2luZ0NvcHlDaGFu
Z2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGVUaXRsZSh1
aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICBfdWlTb3VyY2VDb2RlV29ya2luZ0NvcHlDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0Owor
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5fdXBkYXRlRmlsZVRpdGxl
KHVpU291cmNlQ29kZSk7CiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVGb3JtYXR0ZWRDaGFu
Z2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGVUaXRsZSh1
aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcwppbmRleCBlNTBjZDViNjBmZjNiZTczMWNjYzA4
YjgzYjc2NGIzYWQzMDZlNGJlLi45MjRkMzUzYTY2YWMxMWQ5YmRlYmFiZjhkM2FmODE4NGJkM2Rm
NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZU1vZGVsLmpzCkBAIC0yOTUsNyArMjk1LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9k
ZWxMb2FkZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBpdGVtczsKICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGl0ZW1zID0gLyoqIEB0eXBlIHtBcnJheX0gKi8gSlNPTi5wYXJzZShq
c29uKTsKKyAgICAgICAgICAgIGl0ZW1zID0gLyoqIEB0eXBlIHtBcnJheX0gKi8gKEpTT04ucGFy
c2UoanNvbikpOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3Iuc2hvd0Vycm9yTWVzc2FnZSgiTWFsZm9ybWVkIHRpbWVsaW5lIGRhdGEuIik7CiAgICAgICAg
ICAgICB0aGlzLl9tb2RlbC5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IDk1NzY4ODc3ODI1YzhiYjAzNmNk
ZmMzMmM1NjMxYzlmMzIxODY0ODguLmQzMWM4MGE5YmJhNjc2MGRjOWVkMzFkMzA3NTA3Y2NjYmVl
ODYzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGlt
ZWxpbmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rp
bWVsaW5lUGFuZWwuanMKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuX2hlYWRlckxpbmVDb3VudCA9IDE7CiAKLSAg
ICB0aGlzLl9tYWluVGhyZWFkVGFza3MgPSAvKiogQHR5cGUgeyFBcnJheS48e3N0YXJ0VGltZTog
bnVtYmVyLCBlbmRUaW1lOiBudW1iZXJ9Pn0gKi8gW107CisgICAgdGhpcy5fbWFpblRocmVhZFRh
c2tzID0gLyoqIEB0eXBlIHshQXJyYXkuPHtzdGFydFRpbWU6IG51bWJlciwgZW5kVGltZTogbnVt
YmVyfT59ICovIChbXSk7CiAgICAgdGhpcy5fbWFpblRocmVhZE1vbml0b3JpbmdFbmFibGVkID0g
ZmFsc2U7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93Q3B1T25UaW1lbGluZVJ1
bGVyLmdldCgpICYmIENhcGFiaWxpdGllcy50aW1lbGluZUNhbk1vbml0b3JNYWluVGhyZWFkKQog
ICAgICAgICB0aGlzLl9lbmFibGVNYWluVGhyZWFkTW9uaXRvcmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGVGcmFtZS5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlRnJhbWUuanMK
aW5kZXggN2UwYmY1MWNkZGZlYmNjZWExMjRjYmRmNGNiNzBkZGRmOTg4NzZiZS4uNDNkNzYyZGJl
N2ViM2JhNDFiOTMyMzViMDg5YzY5NzZjNWZjYWQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGVGcmFtZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZUZyYW1lLmpzCkBAIC04Miw3
ICs4Miw3IEBAIFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVGcmFtZS5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX29uRm9ybWF0dGVkQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgY29udGVudCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyBldmVudC5kYXRhLmNv
bnRlbnQ7CisgICAgICAgIHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVu
dC5kYXRhLmNvbnRlbnQpOwogICAgICAgICB0aGlzLl9pbm5lclNldENvbnRlbnQoY29udGVudCk7
CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Xb3Jrc3BhY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtz
cGFjZS5qcwppbmRleCBhYzgxMTMwYWVhNjY2MDZiMWYxMWUyYjBhNWE5Y2UyM2Q0ZTlkNmQ2Li4w
OWFiZTE2YzE2MDQ0ZTI2ZTM5NWRjNDdkOTBlYjMyNWE1MWUyNmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcwpAQCAtNTAsNyArNTAsNyBA
QCBXZWJJbnNwZWN0b3IuV29ya3NwYWNlQ29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAKICAgICBf
ZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZnJhbWUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsK
KyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmV2aXNpb24uZmlsdGVyT3V0U3RhbGVSZXZpc2lv
bnMoKTsKICAgICB9CkBAIC0xNDEsNyArMTQxLDcgQEAgV2ViSW5zcGVjdG9yLlByb2plY3QucHJv
dG90eXBlID0gewogCiAgICAgX2ZpbGVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAg
ICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlRGVz
Y3JpcHRvcn0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZpbGVEZXNjcmlwdG9yID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuRmlsZURlc2NyaXB0b3J9ICovIChldmVudC5kYXRhKTsKICAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMudWlTb3VyY2VDb2RlRm9yVVJMKGZpbGVEZXNj
cmlwdG9yLnBhdGgpOwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50CkBAIC0xNTYsNyArMTU2LDcgQEAgV2ViSW5zcGVjdG9yLlByb2pl
Y3QucHJvdG90eXBlID0gewogCiAgICAgX2ZpbGVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciBwYXRoID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRhdGE7
CisgICAgICAgIHZhciBwYXRoID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhKTsK
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMudWlTb3VyY2VDb2RlRm9yVVJMKHBhdGgp
OwogICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybjsK
</data>
<flag name="review"
          id="186562"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172319</attachid>
            <date>2012-11-05 05:26:04 -0800</date>
            <delta_ts>2012-11-05 06:15:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101066-20121105172417.patch</filename>
            <type>text/plain</type>
            <size>95987</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjk2MzE0YmIxYmE4Zjk1
ZjQ1ZGFlMDJlZjhlYjU0Y2IxMzZiYmM1NC4uZTA4NTg1MTg5YjI4NzY2NTcxYzk1MmM1OTA1Mjc1
OWM0Njk1YzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxMi0xMS0wMiAgQW5k
cmV5IEFkYWlraW4gIDxhYW5kcmV5QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGaXgganNjb21waWxlciBjYXN0IHN5bnRheAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMDY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FzdHMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mICIv
KiogQHR5cGUge1R5cGVOYW1lfSAqLyAoZXhwcikiIGluc3RlYWQgb2YgIi8qKiBAdHlwZSB7VHlw
ZU5hbWV9ICovIGV4cHIiLgorCisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2Fu
dmFzTW9kdWxlU291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1vZGVsLnByb3RvdHlwZS5fZnJhbWVOYXZpZ2F0ZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5wcm90b3R5cGUuX2ZyYW1l
RGV0YWNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRMYXVuY2hlclZpZXcucHJvdG90eXBl
Ll9vblJlcXVlc3RTdGFydGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVy
Vmlldy5wcm90b3R5cGUuX29uUmVxdWVzdEZpbmlzaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlRm9y
bWF0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtwb2ludFJlc29sdmVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZS5fbG9jYXRpb25V
cGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFrcG9pbnRzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9icmVha3BvaW50QWRkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUuX2RvY3VtZW50VXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnBy
b3RvdHlwZS5fbmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFt
ZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlwZS5fcmVnaW9uTGF5b3V0VXBkYXRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTTmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlw
ZS5fc2VsZWN0ZWROb2RlQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb2Zp
bGVIZWFkZXIucHJvdG90eXBlLmNyZWF0ZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkxpdmVMb2NhdGlvbi5wcm90b3R5cGUudWlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZUNvbXB1dGVkU3R5bGVQYXlsb2FkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJhd0xv
Y2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlw
dE1hcHBpbmcucHJvdG90eXBlLmxvYWRTb3VyY2VNYXBGb3JTY3JpcHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcucHJvdG90eXBlLl9mcmFtZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2ZyYW1lUmVtb3ZlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Eb2N1
bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmRpZFNldEJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnNl
dEJyZWFrcG9pbnRCeVVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5w
cm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlw
ZS5zZXRCcmVha3BvaW50QnlTb3VyY2VJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5DYWxsRnJhbWUucHJvdG90eXBlLmdldCBsb2NhdGlvbik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcGFyc2VkU2NyaXB0U291
cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RpcmVjdG9yeUNvbnRlbnRWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRpcmVjdG9yeUNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fc29ydCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl91cGRhdGVC
cmVhZGNydW1iSWZOZWVkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNQYW5lbERlc2NyaXB0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bERlc2NyaXB0b3IucHJvdG90eXBlLmFwcGVuZEFwcGxpY2FibGVJdGVtcyk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoLmdl
dCBub2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkFk
ZFJlcXVlc3RIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIu
cHJvdG90eXBlLl9oYW5kbGVPcGVuVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRlbnNp
b25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZS5fb25TZXRSZXNvdXJjZUNvbnRlbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlm
eVJlc291cmNlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5w
cm90b3R5cGUuX25vdGlmeVVJU291cmNlQ29kZUNvbnRlbnRDb21taXR0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX25vdGlmeVJlcXVlc3RGaW5p
c2hlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fbWV0YWRh
dGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LkZpbGVD
b250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9mcmFtZUFkZGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fZnJhbWVEZXRhY2hl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtVmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbnNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50
cnlUcmVlRWxlbWVudC5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IYW5kbGVyUmVnaXN0cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGFuZGxl
clJlZ2lzdHJ5LnByb3RvdHlwZS5fYXBwZW5kSHJlZkl0ZW1zKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdExvYWRlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3RMb2FkZXIucHJvdG90eXBlLndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUuX2NoYW5nZUJhc2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5sb2FkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX3NuYXBzaG90UmVjZWl2ZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZU5hdmlnYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZURl
dGFjaGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZS5fa2V5Q29sdW1u
SGVhZGVyRnJhZ21lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlw
dFNvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VG
cmFtZS5wcm90b3R5cGUuX29uRm9ybWF0dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fYnJlYWtwb2ludEFkZGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9icmVh
a3BvaW50UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZy
YW1lLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VSZW1vdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
Ll9oYW5kbGVHdXR0ZXJDbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZUZyYW1lLnByb3RvdHlwZS5fY29udGludWVUb0xpbmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5N
ZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL05hdmlnYXRvclZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
Vmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVdvcmtpbmdDb3B5
Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUu
X3VpU291cmNlQ29kZVdvcmtpbmdDb3B5Q29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYXZpZ2F0b3JWaWV3LnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlRm9ybWF0dGVkQ2hhbmdlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9nLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2cucHJvdG90eXBlLl9vblJlcXVlc3RTdGFydGVkKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5fY2FjaGVEaXNhYmxlZFNldHRp
bmdDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX29uUmVx
dWVzdFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZS5fbWFpbkZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwucHJvdG90eXBlLnJldmVhbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsLnByb3RvdHlwZS5hcHBlbmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUuX3BhcnNlZFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyLnByb3RvdHlwZS5fcmVzb3VyY2VBZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdFBvcG92ZXJIZWxwZXIucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2Jq
ZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5cGUuX3Nob3dPYmplY3RQb3BvdmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVy
LnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRT
b3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNj
cmlwdE1hcHBpbmcucHJvdG90eXBlLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdEZpbGUucHJvdG90eXBlLl93b3JraW5n
Q29weUNvbW1pdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxl
LnByb3RvdHlwZS5fd29ya2luZ0NvcHlDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVHJlZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fb25SZXF1ZXN0RmluaXNoZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLnByb3RvdHlwZS5fY29uc29sZU1lc3NhZ2VBZGRl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX2RhdGFiYXNlQWRk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fZG9t
U3RvcmFnZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2luZGV4ZWREQkFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUuX2luZGV4ZWREQlJlbW92ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZS5faW5kZXhlZERCTG9h
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fZmlsZVN5c3RlbUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtTGlzdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fZmlsZVN5c3RlbVJlbW92ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9maWxl
U3lzdGVtVHJlZUVsZW1lbnRCeU5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFJl
c3VsdHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJvdG90eXBlLl90cmF2ZXJzZU5leHQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdHNUcmVlRWxlbWVudHNUcmF2ZXJzZXIucHJv
dG90eXBlLl90cmF2ZXJzZVByZXZpb3VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1JldmlzaW9uSGlzdG9yeVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmV2aXNpb25I
aXN0b3J5Vmlldy5wcm90b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChyYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNo
YWluU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NvcGVDaGFpblNpZGVi
YXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5Mb2NhdGlvbi5wcm90b3R5
cGUudWlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3Jt
YXR0ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlw
ZS5nZXQgX3dvcmtlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlT
b3VyY2VDb2RlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX2VkaXRvckNsb3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fZWRpdG9yU2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3NjcmlwdFNlbGVjdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmNhblNlYXJjaEFuZFJlcGxhY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVwbGFjZVNl
bGVjdGlvbldpdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUucmVwbGFjZUFsbFdpdGgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuc2V0IF9maWxlUmVuYW1lZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYXBwZW5kVUlTb3VyY2VDb2RlSXRlbXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsRGVzY3JpcHRvci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLnByb3RvdHlwZS5hcHBl
bmRBcHBsaWNhYmxlSXRlbXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U291cmNlTWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUuX3VpU291cmNlQ29kZUFkZGVkVG9X
b3Jrc3BhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29u
dGFpbmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5w
cm90b3R5cGUuX3Njcm9sbENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVk
aXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3NlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3RhYkNsb3NlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdGFi
U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5w
cm90b3R5cGUuX3VpU291cmNlQ29kZVRpdGxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlV29ya2luZ0Nv
cHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIu
cHJvdG90eXBlLl91aVNvdXJjZUNvZGVXb3JraW5nQ29weUNvbW1pdHRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2Rl
Rm9ybWF0dGVkQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTW9kZWxMb2FkZXIucHJv
dG90eXBlLndyaXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29k
ZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZUZyYW1lLnByb3Rv
dHlwZS5fb25Gb3JtYXR0ZWRDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVy
LnByb3RvdHlwZS5fZnJhbWVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5w
cm90b3R5cGUuX2ZpbGVBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvamVjdC5wcm90
b3R5cGUuX2ZpbGVSZW1vdmVkKToKKwogMjAxMi0xMS0wNSAgU2hpbnlhIEthd2FuYWthICA8c2hp
bnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NoYWRvd10gU2hhZG93Um9vdCB0eXBlIGlz
IG5vdCBzZXQgY29ycmVjdGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCmluZGV4IDJiMGYwMjU3
M2MxN2YxNzM1NWY4ZDY4OTcxZGY3NDdhZDk2NDhhMDkuLmVlYjNlZTM5NmE0OTA2Y2QxYTE2MmYy
ODFmZjUyODY2Y2Y3MWQ0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKQEAgLTEzOCw3ICsx
MzgsNyBAQCB2YXIgVHlwZVV0aWxzID0gewogICAgICAgICB2YXIgY29udGV4dCA9IFR5cGVVdGls
cy5fZHVtbXlDYW52YXMyZENvbnRleHRJbnN0YW5jZTsKICAgICAgICAgaWYgKCFjb250ZXh0KSB7
CiAgICAgICAgICAgICB2YXIgY2FudmFzID0gaW5zcGVjdGVkV2luZG93LmRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgICAgICAgICAgY29udGV4dCA9IC8qKiBAdHlwZSB7Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KGNhbnZhcy5n
ZXRDb250ZXh0KCIyZCIpKTsKKyAgICAgICAgICAgIGNvbnRleHQgPSAvKiogQHR5cGUge0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRH0gKi8gKFJlc291cmNlLndyYXBwZWRPYmplY3QoY2FudmFzLmdl
dENvbnRleHQoIjJkIikpKTsKICAgICAgICAgICAgIFR5cGVVdGlscy5fZHVtbXlDYW52YXMyZENv
bnRleHRJbnN0YW5jZSA9IGNvbnRleHQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGNvbnRl
eHQ7CkBAIC0xODksNyArMTg5LDcgQEAgZnVuY3Rpb24gU3RhY2tUcmFjZVY4KHN0YWNrVHJhY2VM
aW1pdCwgdG9wTW9zdEZ1bmN0aW9uVG9JZ25vcmUpCiAgICAgaWYgKHR5cGVvZiBzdGFja1RyYWNl
TGltaXQgPT09ICJudW1iZXIiKQogICAgICAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBzdGFj
a1RyYWNlTGltaXQ7CiAKLSAgICB0aGlzLl9lcnJvciA9IC8qKiBAdHlwZSB7e3N0YWNrOiBBcnJh
eX19ICovIHt9OworICAgIHRoaXMuX2Vycm9yID0gLyoqIEB0eXBlIHt7c3RhY2s6IEFycmF5fX0g
Ki8gKHt9KTsKICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLl9lcnJvciwgdG9wTW9z
dEZ1bmN0aW9uVG9JZ25vcmUgfHwgYXJndW1lbnRzLmNhbGxlZSk7CiAKICAgICBFcnJvci5zdGFj
a1RyYWNlTGltaXQgPSBvbGRTdGFja1RyYWNlTGltaXQ7CkBAIC00MTMsNyArNDEzLDcgQEAgQ2Fs
bC5wcm90b3R5cGUgPSB7CiAgICAgdG9SZXBsYXlhYmxlOiBmdW5jdGlvbihjYWNoZSkKICAgICB7
CiAgICAgICAgIHRoaXMuZnJlZXplKCk7Ci0gICAgICAgIHZhciB0aGlzT2JqZWN0ID0gLyoqIEB0
eXBlIHtSZXBsYXlhYmxlUmVzb3VyY2V9ICovIFJlc291cmNlLnRvUmVwbGF5YWJsZSh0aGlzLl90
aGlzT2JqZWN0LCBjYWNoZSk7CisgICAgICAgIHZhciB0aGlzT2JqZWN0ID0gLyoqIEB0eXBlIHtS
ZXBsYXlhYmxlUmVzb3VyY2V9ICovIChSZXNvdXJjZS50b1JlcGxheWFibGUodGhpcy5fdGhpc09i
amVjdCwgY2FjaGUpKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IFJlc291cmNlLnRvUmVwbGF5YWJs
ZSh0aGlzLl9yZXN1bHQsIGNhY2hlKTsKICAgICAgICAgdmFyIGFyZ3MgPSB0aGlzLl9hcmdzLm1h
cChmdW5jdGlvbihvYmopIHsKICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZS50b1JlcGxheWFi
bGUob2JqLCBjYWNoZSk7CkBAIC02NzksNyArNjc5LDcgQEAgUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIHRvUmVwbGF5YWJsZTogZnVuY3Rpb24oY2FjaGUpCiAgICAgewotICAg
ICAgICB2YXIgcmVzdWx0ID0gLyoqIEB0eXBlIHtSZXBsYXlhYmxlUmVzb3VyY2V9ICovIGNhY2hl
LmdldCh0aGlzLl9pZCk7CisgICAgICAgIHZhciByZXN1bHQgPSAvKiogQHR5cGUge1JlcGxheWFi
bGVSZXNvdXJjZX0gKi8gKGNhY2hlLmdldCh0aGlzLl9pZCkpOwogICAgICAgICBpZiAocmVzdWx0
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgdmFyIGRhdGEgPSB7CkBAIC03
MTAsNyArNzEwLDcgQEAgUmVzb3VyY2UucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcGxh
eTogZnVuY3Rpb24oZGF0YSwgY2FjaGUpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSAv
KiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJjZX0gKi8gY2FjaGUuZ2V0KGRhdGEuaWQpOworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSAvKiogQHR5cGUge1JlcGxheWFibGVSZXNvdXJjZX0gKi8gKGNh
Y2hlLmdldChkYXRhLmlkKSk7CiAgICAgICAgIGlmIChyZXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybiByZXNvdXJjZTsKICAgICAgICAgdGhpcy5faWQgPSBkYXRhLmlkOwpAQCAtMjU5NCw3ICsy
NTk0LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGNvbnRleHRJZDsgY29udGV4dElkID0gY29udGV4dElkc1tpXTsgKytpKSB7CiAg
ICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KGNvbnRleHRJ
ZCwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcGxheUNvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmVwbGF5Q29udGV4dCA9IC8qKiBAdHlwZSB7V2ViR0xSZW5kZXJp
bmdDb250ZXh0fSAqLyBSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHJlcGxheUNvbnRleHQpOworICAg
ICAgICAgICAgICAgICAgICByZXBsYXlDb250ZXh0ID0gLyoqIEB0eXBlIHtXZWJHTFJlbmRlcmlu
Z0NvbnRleHR9ICovIChSZXNvdXJjZS53cmFwcGVkT2JqZWN0KHJlcGxheUNvbnRleHQpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMjYxOSw3ICsyNjE5LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IDJEIGNvbnRleHQgZWFjaCB0aW1lIHRvIHN0YXJ0
IHdpdGggYW4gZW1wdHkgY29udGV4dCBkcmF3aW5nIHN0YXRlIHN0YWNrIChtYW5hZ2VkIGJ5IHNh
dmUoKSBhbmQgcmVzdG9yZSgpIG1ldGhvZHMpLgogICAgICAgICB2YXIgY2FudmFzID0gb3JpZ2lu
YWxDb250ZXh0LmNhbnZhcy5jbG9uZU5vZGUodHJ1ZSk7Ci0gICAgICAgIHZhciByZXBsYXlDb250
ZXh0ID0gLyoqIEB0eXBlIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9ICovIFJlc291cmNlLndy
YXBwZWRPYmplY3QoY2FudmFzLmdldENvbnRleHQoIjJkIikpOworICAgICAgICB2YXIgcmVwbGF5
Q29udGV4dCA9IC8qKiBAdHlwZSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSAqLyAoUmVzb3Vy
Y2Uud3JhcHBlZE9iamVjdChjYW52YXMuZ2V0Q29udGV4dCgiMmQiKSkpOwogICAgICAgICB0aGlz
Ll9yZXBsYXlDb250ZXh0ID0gcmVwbGF5Q29udGV4dDsKICAgICAgICAgcmV0dXJuIHJlcGxheUNv
bnRleHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0U291cmNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzCmluZGV4IGM4YTU2OTBkZWNkMDhhZjU3MWUwOTY5MDVmNGI5ZDg2N2U0ZTZi
ODMuLmI1ZGI5NTVhYzEzNGFhNzgzYTcyMzg1NmMyMWQ3ZDU0YTE5OWJhMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKQEAgLTYxNCw3
ICs2MTQsNyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBvYmpl
Y3QgPSB0aGlzLmZpbmRPYmplY3RCeUlkKG9iamVjdElkKTsKICAgICAgICAgaWYgKCFvYmplY3Qg
fHwgdGhpcy5fc3VidHlwZShvYmplY3QpICE9PSAibm9kZSIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7Tm9kZX0gKi8gb2JqZWN0OworICAgICAg
ICByZXR1cm4gLyoqIEB0eXBlIHtOb2RlfSAqLyAob2JqZWN0KTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC03MDUsNyArNzA1LDcgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAodGhpcy5pc1ByaW1pdGl2ZVZhbHVlKG9iaikpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKIAotICAgICAgICBvYmogPSAvKiogQHR5cGUge09iamVjdH0gKi8gb2JqOworICAgICAgICBv
YmogPSAvKiogQHR5cGUge09iamVjdH0gKi8gKG9iaik7CiAKICAgICAgICAgLy8gVHlwZSBpcyBv
YmplY3QsIGdldCBzdWJ0eXBlLgogICAgICAgICB2YXIgc3VidHlwZSA9IHRoaXMuX3N1YnR5cGUo
b2JqKTsKQEAgLTc5Miw3ICs3OTIsNyBAQCBJbmplY3RlZFNjcmlwdC5SZW1vdGVPYmplY3QgPSBm
dW5jdGlvbihvYmplY3QsIG9iamVjdEdyb3VwTmFtZSwgZm9yY2VWYWx1ZVR5cGUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBvYmplY3QgPSAvKiogQHR5cGUge09iamVjdH0gKi8gb2Jq
ZWN0OworICAgIG9iamVjdCA9IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyAob2JqZWN0KTsKIAogICAg
IHRoaXMub2JqZWN0SWQgPSBpbmplY3RlZFNjcmlwdC5fYmluZChvYmplY3QsIG9iamVjdEdyb3Vw
TmFtZSk7CiAgICAgdmFyIHN1YnR5cGUgPSBpbmplY3RlZFNjcmlwdC5fc3VidHlwZShvYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNh
dGlvbkNhY2hlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Fw
cGxpY2F0aW9uQ2FjaGVNb2RlbC5qcwppbmRleCBiNTUyOWE2NjYyYmViZWJjZTJkN2EyNDkxYzBj
MmU0ZmUzMGY5ZjgxLi43ZjQwODMwNjU2ZDNiNWE0YTI5MzA0ODM4ZjQyMTkyZWY1N2FiYjk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9u
Q2FjaGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Fw
cGxpY2F0aW9uQ2FjaGVNb2RlbC5qcwpAQCAtNTYsNyArNTYsNyBAQCBXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1vZGVsLkV2ZW50VHlwZXMgPSB7CiBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICBfZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmcmFtZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyAoZXZlbnQuZGF0
YSk7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgICAgICB0aGlz
Ll9tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcwLDcgKzcw
LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX2ZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9
ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2Zy
YW1lTWFuaWZlc3RSZW1vdmVkKGZyYW1lLmlkKTsKICAgICB9LAogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMK
aW5kZXggNDhhNTk5MGJhNmJhNzg0NDljMGU2YWNkNTRjNTllMjljZjE4ZGNmZS4uYmY2ZGI0Mzdk
MTc1M2JkOWUxZjBiNWViZDNhZWE2MDc2MDYwYTk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3LmpzCkBAIC03MSw3
ICs3MSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICBfb25SZXF1ZXN0U3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2
YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyBl
dmVudC5kYXRhOworICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIC8vIElnbm9yZSBsb25n
LWxpdmluZyBXZWJTb2NrZXRzIGZvciB0aGUgc2FrZSBvZiBwcm9ncmVzcyBpbmRpY2F0b3IsIGFz
IHdlIHdvbid0IGJlIHdhaXRpbmcgdGhlbSBhbnl3YXkuCiAgICAgICAgIGlmIChyZXF1ZXN0LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLldlYlNvY2tldCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTgxLDcgKzgxLDcgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgIF9vblJlcXVlc3RGaW5pc2hlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5l
dHdvcmtSZXF1ZXN0fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgcmVxdWVzdCA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAg
ICAgIC8vIFNlZSByZXNvcmNlU3RhcnRlZCBmb3IgZGV0YWlscy4KICAgICAgICAgaWYgKHJlcXVl
c3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuV2ViU29ja2V0KQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKaW5kZXggNjlmNTZjMDA0MGEwNDE2ZTE2NDM1NjNi
ZWE4MzU0OWFiOTQzYjBlZS4uN2FlNTFiZWNkNGY5NzYyYjJkOTI0ODBlOTA5ODEwMzkyNDBhZjQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3Bv
aW50TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Jy
ZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC05MSw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3VpU291cmNlQ29kZUFkZGVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5jb250ZW50VHlwZSgp
ID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQgfHwgdWlTb3VyY2VDb2RlLmNv
bnRlbnRUeXBlKCkgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50KSB7CiAg
ICAgICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHModWlTb3VyY2VDb2RlKTsKICAgICAg
ICAgICAgIHVpU291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUuRXZlbnRzLkZvcm1hdHRlZENoYW5nZWQsIHRoaXMuX3VpU291cmNlQ29kZUZvcm1hdHRl
ZCwgdGhpcyk7CkBAIC0xMDMsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfdWlTb3VyY2VDb2RlRm9ybWF0dGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3BvaW50cyh1aVNv
dXJjZUNvZGUpOwogICAgIH0sCiAKQEAgLTExMiw3ICsxMTIsNyBAQCBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF91aVNvdXJjZUNvZGVS
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5jb250ZW50
VHlwZSgpICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQgJiYgdWlTb3VyY2VD
b2RlLmNvbnRlbnRUeXBlKCkgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmRpdmVyZ2Vk
VmVyc2lvbikKQEAgLTI3Miw4ICsyNzIsOCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIucHJvdG90eXBlID0gewogCiAgICAgX2JyZWFrcG9pbnRSZXNvbHZlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICB2YXIgYnJlYWtwb2ludElkID0gLyoqIEB0eXBlIHtEZWJ1Z2dl
ckFnZW50LkJyZWFrcG9pbnRJZH0gKi8gZXZlbnQuZGF0YS5icmVha3BvaW50SWQ7Ci0gICAgICAg
IHZhciBsb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9j
YXRpb259ICovIGV2ZW50LmRhdGEubG9jYXRpb247CisgICAgICAgIHZhciBicmVha3BvaW50SWQg
PSAvKiogQHR5cGUge0RlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludElkfSAqLyAoZXZlbnQuZGF0YS5i
cmVha3BvaW50SWQpOworICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAoZXZlbnQuZGF0YS5sb2NhdGlvbik7CiAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludEZvckRlYnVnZ2VySWRbYnJl
YWtwb2ludElkXTsKICAgICAgICAgaWYgKCFicmVha3BvaW50IHx8IGJyZWFrcG9pbnQuX2lzUHJv
dmlzaW9uYWwpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zODUsNyArMzg1LDcgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgIF9s
b2NhdGlvblVwZGF0ZWQ6IGZ1bmN0aW9uKGxvY2F0aW9uLCB1aUxvY2F0aW9uKQogICAgIHsKICAg
ICAgICAgdmFyIHN0cmluZ2lmaWVkTG9jYXRpb24gPSBsb2NhdGlvbi5zY3JpcHRJZCArICI6IiAr
IGxvY2F0aW9uLmxpbmVOdW1iZXIgKyAiOiIgKyBsb2NhdGlvbi5jb2x1bW5OdW1iZXI7Ci0gICAg
ICAgIHZhciBvbGRVSUxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlv
bn0gKi8gdGhpcy5fdWlMb2NhdGlvbnNbc3RyaW5naWZpZWRMb2NhdGlvbl07CisgICAgICAgIHZh
ciBvbGRVSUxvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8g
KHRoaXMuX3VpTG9jYXRpb25zW3N0cmluZ2lmaWVkTG9jYXRpb25dKTsKICAgICAgICAgaWYgKG9s
ZFVJTG9jYXRpb24pCiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fdWlMb2Nh
dGlvblJlbW92ZWQodGhpcywgb2xkVUlMb2NhdGlvbik7CiAgICAgICAgIGlmICh0aGlzLl91aUxv
Y2F0aW9uc1siIl0pIHsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgX3NldEluRGVidWdnZXI6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMuX3ByaW1hcnlV
SUxvY2F0aW9uLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKCk7Ci0gICAgICAgIHZhciBkZWJ1Z2dl
ck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxv
Y2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlv
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIChy
YXdMb2NhdGlvbik7CiAgICAgICAgIGlmIChkZWJ1Z2dlck1vZGVsTG9jYXRpb24pCiAgICAgICAg
ICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50
QnlTY3JpcHRMb2NhdGlvbihkZWJ1Z2dlck1vZGVsTG9jYXRpb24sIHRoaXMuX2NvbmRpdGlvbiwg
ZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKICAgICAgICAgZWxzZQpAQCAtNTYwLDcgKzU2
MCw3IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdlID0gZnVuY3Rpb24o
YnJlYWtwb2ludE1hbmFnZXIsIHNldHRpbmcpCiAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmlu
ZyxXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuU3RvcmFnZS5JdGVtPn0gKi8KICAgICB0
aGlzLl9icmVha3BvaW50cyA9IHt9OwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2lu
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5TdG9yYWdlLkl0ZW19ICovIGJyZWFrcG9pbnRz
W2ldOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLlN0b3JhZ2UuSXRlbX0gKi8gKGJyZWFrcG9pbnRzW2ldKTsKICAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5zb3VyY2VGaWxlSWQgKyAiOiIgKyBicmVh
a3BvaW50LmxpbmVOdW1iZXJdID0gYnJlYWtwb2ludDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJh
clBhbmUuanMKaW5kZXggYWZhNDU3Nzk3ZGI2MDc3YmE2ZDhiY2QyNTc2YmM0Yjc0ZWI4ZDBlZi4u
NTRjMGE4N2MzN2ZkOWIyMjBjYzM2ZDQwZDc3NWQxYTY2ZTU2NGI0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRl
YmFyUGFuZS5qcwpAQCAtNzMsOCArNzMsOCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdEJyZWFr
cG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludFJlbW92ZWQoZXZlbnQpOwogCi0gICAgICAgIHZhciBicmVha3BvaW50ID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0gKi8gZXZlbnQu
ZGF0YS5icmVha3BvaW50OwotICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlVJTG9jYXRpb259ICovIGV2ZW50LmRhdGEudWlMb2NhdGlvbjsKKyAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5CcmVha3BvaW50fSAqLyAoZXZlbnQuZGF0YS5icmVha3BvaW50KTsKKyAgICAgICAgdmFyIHVp
TG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufSAqLyAoZXZlbnQu
ZGF0YS51aUxvY2F0aW9uKTsKICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChicmVha3BvaW50
LCB1aUxvY2F0aW9uKTsKICAgICB9LAogCkBAIC0xMzksOCArMTM5LDggQEAgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRCcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBfYnJlYWtwb2ludFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ci5CcmVha3BvaW50fSAqLyBldmVudC5kYXRhLmJyZWFrcG9pbnQ7Ci0gICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gZXZlbnQuZGF0
YS51aUxvY2F0aW9uOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnR9ICovIChldmVudC5kYXRhLmJyZWFr
cG9pbnQpOworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlVJTG9jYXRpb259ICovIChldmVudC5kYXRhLnVpTG9jYXRpb24pOwogICAgICAgICB2YXIgYnJl
YWtwb2ludEl0ZW0gPSB0aGlzLl9pdGVtcy5nZXQoYnJlYWtwb2ludCk7CiAgICAgICAgIGlmICgh
YnJlYWtwb2ludEl0ZW0pCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU05hbWVkRmxvd0NvbGxlY3Rpb25zVmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVj
dGlvbnNWaWV3LmpzCmluZGV4IGIyYTMwMjQwMmIwMmRhMmU2ZDA4NWJmZjJlNzliMzgwNzg5YjM1
MDEuLmI5MmEwNjZkYTZhYTAwNjRkOTA1OTMxMjI4ODBjMjhiZDc1OTUwYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFtZWRGbG93Q29sbGVjdGlv
bnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTTmFt
ZWRGbG93Q29sbGVjdGlvbnNWaWV3LmpzCkBAIC05MSw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5D
U1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9k
b2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGRvY3Vt
ZW50ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9ICovIGV2ZW50LmRhdGE7
CisgICAgICAgIHZhciBkb2N1bWVudCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTURvY3Vt
ZW50fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3NldERvY3VtZW50KGRvY3VtZW50
KTsKICAgICB9LAogCkBAIC0yMTksNyArMjE5LDcgQEAgV2ViSW5zcGVjdG9yLkNTU05hbWVkRmxv
d0NvbGxlY3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLmRv
Y3VtZW50Tm9kZUlkICE9PSB0aGlzLl9kb2N1bWVudC5pZCkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB2YXIgZmxvdyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZsb3cgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5OYW1lZEZsb3d9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fYXBwZW5kTmFtZWRG
bG93KGZsb3cpOwogICAgIH0sCiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBXZWJJbnNwZWN0b3IuQ1NT
TmFtZWRGbG93Q29sbGVjdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGV2ZW50
LmRhdGEuZG9jdW1lbnROb2RlSWQgIT09IHRoaXMuX2RvY3VtZW50LmlkKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIHZhciBmbG93ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmFt
ZWRGbG93fSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZmxvdyA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLk5hbWVkRmxvd30gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl91cGRh
dGVOYW1lZEZsb3coZmxvdyk7CiAgICAgfSwKIApAQCAtMjk4LDcgKzI5OCw3IEBAIFdlYkluc3Bl
Y3Rvci5DU1NOYW1lZEZsb3dDb2xsZWN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIF9zZWxlY3RlZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01Ob2RlfSAq
LyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX3Nob3dOYW1lZEZsb3dGb3JOb2RlKG5vZGUp
OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwppbmRleCBlMTBmOGRjNmVjNjhjNzUx
OWY4MDQyMzYzYzFhZTE0ZjA2NWZhZWM3Li5lOWQ3MWVjODU0ODg0NGEwMDYyZjY2YWZmNDk2Nzg5
ZWI4YjA5NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzCkBAIC0zOTksNyArMzk5LDcgQEAg
V2ViSW5zcGVjdG9yLkNTU1Byb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGVzUGFuZWwpCiAgICAgewotICAgICAgICB2YXIg
cHJvZmlsZSA9IC8qKiBAdHlwZSB7Q1NTQWdlbnQuU2VsZWN0b3JQcm9maWxlfSAqL3RoaXMuX3By
b3RvY29sRGF0YTsKKyAgICAgICAgdmFyIHByb2ZpbGUgPSAvKiogQHR5cGUge0NTU0FnZW50LlNl
bGVjdG9yUHJvZmlsZX0gKi8gKHRoaXMuX3Byb3RvY29sRGF0YSk7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcocHJvZmlsZSk7CiAgICAgfSwK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHls
ZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1v
ZGVsLmpzCmluZGV4IGZlODdjOTdlYTRlODIxOTBkY2ZjOGI5M2IyYzczMjAzOWQ4ZTA0MWUuLjZh
NmYxYzU1NTYwZGRlNjk1OWNlNjNmN2QwYjFhYmQ2YjA1ZDk2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTU0OCw3
ICs1NDgsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5MaXZlTG9jYXRpb24ucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIHVpTG9jYXRpb246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHZhciBjc3NMb2NhdGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb24g
Ki8gdGhpcy5yYXdMb2NhdGlvbigpOworICAgICAgICB2YXIgY3NzTG9jYXRpb24gPSAvKiogQHR5
cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9uICovICh0aGlzLnJhd0xvY2F0aW9uKCkpOwogICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bihjc3NMb2NhdGlvbik7CiAgICAgfSwKIApAQCAtNjM2LDcgKzYzNiw3IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCiAg
Ki8KIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlQ29tcHV0ZWRTdHlsZVBh
eWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogewotICAgIHZhciBuZXdQYXlsb2FkID0gLyoqIEB0
eXBlIHtDU1NBZ2VudC5DU1NTdHlsZX0gKi8geyBjc3NQcm9wZXJ0aWVzOiBbXSwgc2hvcnRoYW5k
RW50cmllczogW10sIHdpZHRoOiAiIiwgaGVpZ2h0OiAiIiB9OworICAgIHZhciBuZXdQYXlsb2Fk
ID0gLyoqIEB0eXBlIHtDU1NBZ2VudC5DU1NTdHlsZX0gKi8gKHsgY3NzUHJvcGVydGllczogW10s
IHNob3J0aGFuZEVudHJpZXM6IFtdLCB3aWR0aDogIiIsIGhlaWdodDogIiIgfSk7CiAgICAgaWYg
KHBheWxvYWQpCiAgICAgICAgIG5ld1BheWxvYWQuY3NzUHJvcGVydGllcyA9IHBheWxvYWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJT
Y3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21w
aWxlclNjcmlwdE1hcHBpbmcuanMKaW5kZXggYjBhOWZjMjJhNzAwNzc0YTA3ZDY2Y2UwYjlhMWY4
YmMxOWYxY2UzNS4uNjI1OWU5YTNmNDIxZTM3MThkODZkNzVkMjAxN2YyNDJiYTdmMjE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21w
aWxlclNjcmlwdE1hcHBpbmcuanMKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgcmF3TG9jYXRpb25U
b1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdmFyIGRl
YnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259ICovIHJhd0xvY2F0aW9uOworICAgICAgICB2YXIgZGVidWdnZXJNb2RlbExv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0g
Ki8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgdmFyIHNvdXJjZU1hcCA9IHRoaXMuX3NvdXJjZU1h
cEZvclNjcmlwdElkW2RlYnVnZ2VyTW9kZWxMb2NhdGlvbi5zY3JpcHRJZF07CiAgICAgICAgIHZh
ciBsaW5lTnVtYmVyID0gZGVidWdnZXJNb2RlbExvY2F0aW9uLmxpbmVOdW1iZXI7CiAgICAgICAg
IHZhciBjb2x1bW5OdW1iZXIgPSBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVtYmVyIHx8
IDA7CkBAIC0xNDYsNyArMTQ2LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QubG9hZFJlc291cmNlU3luY2hyb25vdXNseShzb3VyY2VNYXBVUkwpOwogICAgICAg
ICAgICAgaWYgKHJlc3BvbnNlLnNsaWNlKDAsIDMpID09PSAiKV19IikKICAgICAgICAgICAgICAg
ICByZXNwb25zZSA9IHJlc3BvbnNlLnN1YnN0cmluZyhyZXNwb25zZS5pbmRleE9mKCdcbicpKTsK
LSAgICAgICAgICAgIHZhciBwYXlsb2FkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291cmNl
TWFwUGF5bG9hZH0gKi8gSlNPTi5wYXJzZShyZXNwb25zZSk7CisgICAgICAgICAgICB2YXIgcGF5
bG9hZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcFBheWxvYWR9ICovIChKU09O
LnBhcnNlKHJlc3BvbnNlKSk7CiAgICAgICAgICAgICBzb3VyY2VNYXAgPSBuZXcgV2ViSW5zcGVj
dG9yLlNvdXJjZU1hcFBhcnNlcihzb3VyY2VNYXBVUkwsIHBheWxvYWQpOwogICAgICAgICB9IGNh
dGNoKGUpIHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IDU5
YTgyZmVmYmNmZDE3NzFkMTBiZGQwOGFhZWMxOThlNTVhZjk5ODEuLjllYTViY2E2MTBjMGY4MzVl
ZDZjOTEyNDA3ZmIyZDM0ZjJiYTRhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtMTQwLDcgKzE0MCw3IEBAIFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZyYW1lQWRkZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGNvbnRleHRMaXN0ID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRnJhbWVFeGVjdXRpb25Db250ZXh0TGlzdH0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgdmFyIGNvbnRleHRMaXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRnJh
bWVFeGVjdXRpb25Db250ZXh0TGlzdH0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlzLl9h
ZGRGcmFtZShjb250ZXh0TGlzdCk7CiAgICAgfSwKIApAQCAtMTY1LDcgKzE2NSw3IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZyYW1lUmVt
b3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGV4dExpc3QgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0fSAqLyBldmVu
dC5kYXRhOworICAgICAgICB2YXIgY29udGV4dExpc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5GcmFtZUV4ZWN1dGlvbkNvbnRleHRMaXN0fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRo
aXMuX2ZyYW1lU2VsZWN0b3IucmVtb3ZlT3B0aW9uKGNvbnRleHRMaXN0Ll9jb25zb2xlT3B0aW9u
KTsKICAgICAgICAgdGhpcy5fZnJhbWVDaGFuZ2VkKCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IGYzOWEzY2JiOGM2ODQz
NjZiM2QzNTZlYzFhMzg1Y2NjODdlNzZhMGMuLjQwMjA2NDE3MzgzYmUyZmMwZDlkZDVkOGE5NGI5
MmRkYjJiOTc1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcwpAQCAtNzcyLDcgKzc3Miw3IEBAIFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudCA9
IGZ1bmN0aW9uKGRvbUFnZW50LCBwYXlsb2FkKQogewogICAgIFdlYkluc3BlY3Rvci5ET01Ob2Rl
LmNhbGwodGhpcywgZG9tQWdlbnQsIHRoaXMsIGZhbHNlLCBwYXlsb2FkKTsKICAgICB0aGlzLmRv
Y3VtZW50VVJMID0gcGF5bG9hZC5kb2N1bWVudFVSTCB8fCAiIjsKLSAgICB0aGlzLmJhc2VVUkwg
PSAvKiogQHR5cGUge3N0cmluZ30gKi8gcGF5bG9hZC5iYXNlVVJMOworICAgIHRoaXMuYmFzZVVS
TCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAocGF5bG9hZC5iYXNlVVJMKTsKICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLmJhc2VVUkwpOwogICAgIHRoaXMueG1sVmVyc2lvbiA9IHBheWxvYWQueG1s
VmVyc2lvbjsKICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcwppbmRleCA0ZTkxM2U5ZDA0
MDc5MWZhZGNmYjhiNTkwNTEzMTYwYzk3OGUwMGNiLi5kNThkYTBlZGI3M2IxMjVmNmQwNDU1MTAz
MGY3ODNmODkwNzE2OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0yMDUsNyArMjA1LDcgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlvbiBkaWRTZXRCcmVh
a3BvaW50KGVycm9yLCBicmVha3BvaW50SWQsIGxvY2F0aW9ucykKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJhd0xvY2F0aW9ucyA9
IC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uPn0g
Ki8gbG9jYXRpb25zOworICAgICAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbnMgPSAvKiogQHR5
cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbj59ICovIChsb2Nh
dGlvbnMpOwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gbnVsbCA6IGJyZWFrcG9p
bnRJZCwgcmF3TG9jYXRpb25zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjI5LDcg
KzIyOSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChlcnJvciwgYnJlYWtwb2ludElkLCBhY3R1YWxM
b2NhdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbn0gKi8gYWN0dWFsTG9jYXRpb247CisgICAgICAgICAgICAgICAgdmFy
IHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2Nh
dGlvbn0gKi8gKGFjdHVhbExvY2F0aW9uKTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJv
ciA/IG51bGwgOiBicmVha3BvaW50SWQsIFtyYXdMb2NhdGlvbl0pOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC03MjYsNyArNzI2LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
Q2FsbEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgbG9jYXRpb24oKQogICAg
IHsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gdGhpcy5fcGF5bG9hZC5sb2NhdGlvbjsKKyAgICAgICAg
dmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5M
b2NhdGlvbn0gKi8gKHRoaXMuX3BheWxvYWQubG9jYXRpb24pOwogICAgICAgICByZXR1cm4gcmF3
TG9jYXRpb247CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcwppbmRleCA5OGEwNTVlMzMx
NzI4NmU1MDBkOGU3YTY2M2FlOGU1NjY5MjNkMmRlLi5kMzJiMmU0NTRhMjY0M2FmNTczMGM1MWZj
NTM1NzVlOTk5YjI5ODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcwpAQCAtNTQsNyArNTQsNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3Jp
cHR9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5n
Rm9yU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGly
ZWN0b3J5Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RpcmVjdG9yeUNvbnRlbnRWaWV3LmpzCmluZGV4IDE0NDI2MGZjYjdkZWU3NGY4MmJkMTFhYzMy
YzcwMTAyMGUzOTNlMWYuLjU3YWU1M2QzZTBkNTNiY2U5MTA5MWZlMjVkYzNhYjY5Zjk0MTE0NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGlyZWN0b3J5
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
aXJlY3RvcnlDb250ZW50Vmlldy5qcwpAQCAtODQsNyArODQsNyBAQCBXZWJJbnNwZWN0b3IuRGly
ZWN0b3J5Q29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3NvcnQ6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHZhciBjb2x1bW4gPSAvKiogQHR5cGUge3N0cmluZ30gKi8gdGhpcy5z
b3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgdmFyIGNvbHVtbiA9IC8qKiBAdHlwZSB7c3Ry
aW5nfSAqLyAodGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIHRoaXMuc29ydE5v
ZGVzKFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50Vmlldy5Ob2RlLmNvbXBhcmF0b3IoY29s
dW1uLCB0aGlzLnNvcnRPcmRlciA9PT0gImRlc2NlbmRpbmciKSwgZmFsc2UpOwogICAgIH0sCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcwppbmRleCAzNDI3ZmIzZjEyNDBjMzAwNmMzM2Y1ZDI5NTE4YmQ2ODNiMWVmNzNkLi5hMGU2
ZTFhMTg0NGVlNDI3YmRiNzFlZDUzYjBjYzJhNDgzNTlhNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC00MTUsNyAr
NDE1LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2YXIgbm9kZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIHRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0OworICAgICAgICB2YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5v
ZGV9ICovICh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgaWYgKCFu
b2RlLm5vZGVOYW1lKCkgfHwgbm9kZS5ub2RlTmFtZSgpLnRvTG93ZXJDYXNlKCkgIT09ICJpbWci
KSB7CiAgICAgICAgICAgICBjYWxsYmFjaygpOwpAQCAtNjA0LDcgKzYwNCw3IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG5hbWUgIT09ICJj
bGFzcyIgJiYgbmFtZSAhPT0gImlkIikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2
YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovIGV2ZW50LmRhdGEu
bm9kZTsKKyAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01Ob2Rl
fSAqLyAoZXZlbnQuZGF0YS5ub2RlKTsKICAgICAgICAgdmFyIGNydW1icyA9IHRoaXMuY3J1bWJz
RWxlbWVudDsKICAgICAgICAgdmFyIGNydW1iID0gY3J1bWJzLmZpcnN0Q2hpbGQ7CiAgICAgICAg
IHdoaWxlIChjcnVtYikgewpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHZhciByZW1vdGVPYmplY3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3R9ICovIHRhcmdldDsKKyAgICAgICAgdmFyIHJlbW90ZU9iamVjdCA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gKHRhcmdldCk7CiAgICAgICAgIGlmIChyZW1v
dGVPYmplY3Quc3VidHlwZSAhPT0gIm5vZGUiKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxE
ZXNjcmlwdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsRGVzY3JpcHRvci5qcwppbmRleCA0NWFkM2U0Njc0NTk1Yzc2YWRhY2FlMTA1MmQ1MDFh
ZDJkOGRmZjk3Li44ZjcxYWFlMDhkNWFjM2IwZWQ2MzE4YmYzYTc2YmJkYTdlOTA0MjJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxE
ZXNjcmlwdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbERlc2NyaXB0b3IuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWxEZXNjcmlwdG9yLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICgh
KHRhcmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB2YXIgcmVtb3RlT2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyB0YXJnZXQ7CisgICAgICAgIHZhciByZW1vdGVPYmplY3Qg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9ICovICh0YXJnZXQpOwogICAg
ICAgICBpZiAocmVtb3RlT2JqZWN0LnN1YnR5cGUgIT09ICJub2RlIikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgdGhpcy5wYW5lbCgpLmFwcGVuZEFwcGxpY2FibGVJdGVtcyhldmVudCwg
Y29udGV4dE1lbnUsIHRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggNjY3YWUyZWQ4NWJl
NDVlZWJkODYzOTIwM2M1ZDgxMGE5Y2MyOTYzZS4uYTg3YmM5MjNmNWM3YzE4OTMxYWI0ZDVjOWU0
YzU1MTUwZWUwMjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIF9idWlsZFRhZ0RPTTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgdGFnTmFtZSwgaXNDbG9z
aW5nVGFnLCBpc0Rpc3RpbmN0VHJlZUVsZW1lbnQsIGxpbmtpZnkpCiAgICAgewotICAgICAgICB2
YXIgbm9kZSA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuRE9NTm9kZSAqLyB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0OworICAgICAgICB2YXIgbm9kZSA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuRE9N
Tm9kZSAqLyAodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIHZhciBjbGFzc2VzID0g
WyAid2Via2l0LWh0bWwtdGFnIiBdOwogICAgICAgICBpZiAoaXNDbG9zaW5nVGFnICYmIGlzRGlz
dGluY3RUcmVlRWxlbWVudCkKICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgiY2xvc2UiKTsKQEAg
LTIwMDgsNyArMjAwOCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uKHNjcm9sbEludG9W
aWV3KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5ET01Ob2RlfSAqLyB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAg
ICB2YXIgbm9kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9ICovICh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5yZXNv
bHZlTm9kZShub2RlLCAiIiwgc2Nyb2xsSW50b1ZpZXdDYWxsYmFjayk7CiAgICAgfSwKIApAQCAt
MjA0NCw3ICsyMDQ0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwogCi0gICAgICAgIHZhciBlbnRy
eSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIuVXBkYXRlRW50
cnl9ICovIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2Rlcy5nZXQobm9kZSk7CisgICAgICAgIHZh
ciBlbnRyeSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIuVXBk
YXRlRW50cnl9ICovICh0aGlzLl9yZWNlbnRseU1vZGlmaWVkTm9kZXMuZ2V0KG5vZGUpKTsKICAg
ICAgICAgaWYgKCFlbnRyeSkgewogICAgICAgICAgICAgZW50cnkgPSBuZXcgV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZVVwZGF0ZXIuVXBkYXRlRW50cnkoaXNVcGRhdGVkLCBwYXJlbnROb2RlKTsK
ICAgICAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXQobm9kZSwgZW50cnkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNp
b25TZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blNlcnZlci5qcwppbmRleCBlYjVjYTVkYmU5ZTMwMjk0N2FjZWEwM2FmNTZlOWMzZjYxNWVlM2Vh
Li42ZDA1NTg5MDBiZTEyM2VmYzk3ODAwMTY1MmRhNWUwOWIxNTNiNmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwpA
QCAtMTc4LDcgKzE3OCw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gbWVzc2FnZS5oZWFkZXJz
KQogICAgICAgICAgICAgZXh0ZW5zaW9uSGVhZGVyc1tuYW1lXSA9IG1lc3NhZ2UuaGVhZGVyc1tu
YW1lXTsKLSAgICAgICAgdmFyIGFsbEhlYWRlcnMgPSAvKiogQHR5cGUgTmV0d29ya0FnZW50Lkhl
YWRlcnMgKi8ge307CisgICAgICAgIHZhciBhbGxIZWFkZXJzID0gLyoqIEB0eXBlIE5ldHdvcmtB
Z2VudC5IZWFkZXJzICovICh7fSk7CiAgICAgICAgIGZvciAodmFyIGV4dGVuc2lvbiBpbiB0aGlz
Ll9leHRyYUhlYWRlcnMpIHsKICAgICAgICAgICAgIHZhciBoZWFkZXJzID0gdGhpcy5fZXh0cmFI
ZWFkZXJzW2V4dGVuc2lvbl07CiAgICAgICAgICAgICBmb3IgKG5hbWUgaW4gaGVhZGVycykgewpA
QCAtMjkwLDcgKzI5MCw3IEBAIFdlYkluc3BlY3Rvci5FeHRlbnNpb25TZXJ2ZXIucHJvdG90eXBl
ID0gewogCiAgICAgX2hhbmRsZU9wZW5VUkw6IGZ1bmN0aW9uKHBvcnQsIGRldGFpbHMpCiAgICAg
ewotICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGRldGFpbHMudXJsOwor
ICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChkZXRhaWxzLnVybCk7CiAg
ICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVpU291
cmNlQ29kZUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTCh1cmwpOwog
ICAgICAgICBpZiAoIWNvbnRlbnRQcm92aWRlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQ4Miw3ICs0ODIsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlw
ZSA9IHsKIAogICAgIF9vbkdldFJlc291cmNlQ29udGVudDogZnVuY3Rpb24obWVzc2FnZSwgcG9y
dCkKICAgICB7Ci0gICAgICAgIHZhciB1cmwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gbWVzc2Fn
ZS51cmw7CisgICAgICAgIHZhciB1cmwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKG1lc3NhZ2Uu
dXJsKTsKICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IFdlYkluc3BlY3Rvci53b3Jrc3Bh
Y2UudWlTb3VyY2VDb2RlRm9yVVJMKHVybCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJM
KHVybCk7CiAgICAgICAgIGlmICghY29udGVudFByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3N0YXR1cy5FX05PVEZPVU5EKHVybCk7CkBAIC01MDAsNyArNTAwLDcgQEAgV2ViSW5z
cGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9k
aXNwYXRjaENhbGxiYWNrKG1lc3NhZ2UucmVxdWVzdElkLCBwb3J0LCByZXNwb25zZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIG1lc3NhZ2Uu
dXJsOworICAgICAgICB2YXIgdXJsID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChtZXNzYWdlLnVy
bCk7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVp
U291cmNlQ29kZUZvclVSTCh1cmwpOwogICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkgewogICAg
ICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLnJl
c291cmNlRm9yVVJMKHVybCk7CkBAIC02MjUsMjAgKzYyNSwyMCBAQCBXZWJJbnNwZWN0b3IuRXh0
ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9ub3RpZnlSZXNvdXJjZUFkZGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICov
IChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlvbihXZWJJbnNwZWN0
b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5SZXNvdXJjZUFkZGVkLCB0aGlzLl9tYWtlUmVzb3VyY2Uo
dWlTb3VyY2VDb2RlKSk7CiAgICAgfSwKIAogICAgIF9ub3RpZnlVSVNvdXJjZUNvZGVDb250ZW50
Q29tbWl0dGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGEu
dWlTb3VyY2VDb2RlOwotICAgICAgICB2YXIgY29udGVudCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAq
LyBldmVudC5kYXRhLmNvbnRlbnQ7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29k
ZSk7CisgICAgICAgIHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5k
YXRhLmNvbnRlbnQpOwogICAgICAgICB0aGlzLl9wb3N0Tm90aWZpY2F0aW9uKFdlYkluc3BlY3Rv
ci5leHRlbnNpb25BUEkuRXZlbnRzLlJlc291cmNlQ29udGVudENvbW1pdHRlZCwgdGhpcy5fbWFr
ZVJlc291cmNlKHVpU291cmNlQ29kZSksIGNvbnRlbnQpOwogICAgIH0sCiAKICAgICBfbm90aWZ5
UmVxdWVzdEZpbmlzaGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1
ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRh
dGE7CisgICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3R9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcG9zdE5vdGlmaWNhdGlv
bihXZWJJbnNwZWN0b3IuZXh0ZW5zaW9uQVBJLkV2ZW50cy5OZXR3b3JrUmVxdWVzdEZpbmlzaGVk
LCB0aGlzLl9yZXF1ZXN0SWQocmVxdWVzdCksIChuZXcgV2ViSW5zcGVjdG9yLkhBUkVudHJ5KHJl
cXVlc3QpKS5idWlsZCgpKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCmluZGV4IGI4Y2NkOWFkMTYwZDQz
YjdlZWViZWRlZGY2MTI1MWFkNzQ4ZGEzMTcuLjdiNDdjNmRmMDc1NDNjNThhMzEyY2U4OThlM2Q3
NGQwODIwNzZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZUNvbnRlbnRWaWV3LmpzCkBAIC02OCw3ICs2OCw3IEBAIFdlYkluc3BlY3Rvci5G
aWxlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY29udGVudCkg
ewogICAgICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50LnVwZGF0ZU1ldGFkYXRhKG1ldGFkYXRh
KSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB2YXIgc291cmNlRnJhbWUg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0gKi8gdGhpcy5faW5uZXJWaWV3
OworICAgICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWV9ICovICh0aGlzLl9pbm5lclZpZXcpOwogICAgICAgICAgICAgdGhpcy5fY29u
dGVudC5yZXF1ZXN0Q29udGVudChzb3VyY2VGcmFtZS5zZXRDb250ZW50LmJpbmQoc291cmNlRnJh
bWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuX2lubmVyVmlldy5kZXRh
Y2goKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZUNvbnRlbnRWaWV3LkZp
bGVDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcXVlc3RDb250
ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzaXplID0gLyoqIEB0
eXBlIHtudW1iZXJ9ICovIHRoaXMuX21ldGFkYXRhLnNpemU7CisgICAgICAgIHZhciBzaXplID0g
LyoqIEB0eXBlIHtudW1iZXJ9ICovICh0aGlzLl9tZXRhZGF0YS5zaXplKTsKICAgICAgICAgdGhp
cy5fZmlsZS5yZXF1ZXN0RmlsZUNvbnRlbnQodHJ1ZSwgMCwgc2l6ZSwgdGhpcy5fY2hhcnNldCB8
fCAiIiwgdGhpcy5fZmlsZUNvbnRlbnRSZWNlaXZlZC5iaW5kKHRoaXMsIGNhbGxiYWNrKSk7CiAg
ICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVTeXN0ZW1Nb2RlbC5qcwppbmRleCBjYTViZjczMDBkNDE2MWQ0MGZmNjg1ZDg5NGViOTdmZTdk
MDUyYWRmLi42YjE1ODEwYjQ2MjM4NTJlNzAyY2U1NzBhMDkwZjAwMDVjODU1MThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2Rl
bC5qcwpAQCAtNTYsNyArNTYsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBfZnJhbWVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRy
ZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIGZyYW1lID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAg
dGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShmcmFtZSk7CiAgICAgfSwKIApAQCAtNjUsNyAr
NjUsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfZnJhbWVOYXZpZ2F0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
dmFyIGZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICov
IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUZyYW1lfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2F0dGFj
aEZyYW1lUmVjdXJzaXZlbHkoZnJhbWUpOwogICAgIH0sCiAKQEAgLTc0LDcgKzc0LDcgQEAgV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2Zy
YW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZyYW1lID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50LmRhdGE7
CisgICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUZyYW1lfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2RldGFjaEZyYW1lUmVjdXJz
aXZlbHkoZnJhbWUpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1WaWV3LmpzCmluZGV4IDE3NGUzNDUwYjM3MzhjMGZlYzNl
YmQxYTVkYzk0YzRhNWRjMGNhYzUuLjE0NDY1ZjVlMDkwNzk2MzJjZjc4Y2MyZTBkMjE0OWNiMDIz
Yjc5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZVN5c3RlbVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9G
aWxlU3lzdGVtVmlldy5qcwpAQCAtMTM1LDcgKzEzNSw3IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lz
dGVtVmlldy5FbnRyeVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0
aGlzLl9lbnRyeS5pc0RpcmVjdG9yeSkKICAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3
IFdlYkluc3BlY3Rvci5EaXJlY3RvcnlDb250ZW50VmlldygpOwogICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGZpbGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwuRmlsZX0gKi8gdGhpcy5fZW50cnk7CisgICAgICAgICAgICAgICAgdmFyIGZp
bGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZX0gKi8gKHRo
aXMuX2VudHJ5KTsKICAgICAgICAgICAgICAgICB0aGlzLl92aWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5GaWxlQ29udGVudFZpZXcoZmlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIx
MSw3ICsyMTEsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVZpZXcuRW50cnlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VudHJ5LmlzRGlyZWN0
b3J5KSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fdmlldyAmJiB0aGlzLl92aWV3ID09PSB0aGlz
Ll9maWxlU3lzdGVtVmlldy52aXNpYmxlVmlldykgewotICAgICAgICAgICAgICAgIHZhciBmaWxl
Q29udGVudFZpZXcgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlQ29udGVudFZpZXd9ICov
IHRoaXMuX3ZpZXc7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVDb250ZW50VmlldyA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLkZpbGVDb250ZW50Vmlld30gKi8gKHRoaXMuX3ZpZXcpOwogICAg
ICAgICAgICAgICAgIGZpbGVDb250ZW50Vmlldy5yZWZyZXNoKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IYW5kbGVyUmVnaXN0cnkuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hhbmRsZXJSZWdpc3RyeS5qcwppbmRleCBjOGE2NDhhY2I4NWVhMWU0NzQzMTQ2Njc0ZGQ5
NzMxNjA4YWViODA5Li42YjkwOTMxMTNjZDRiMDIwZDc0OGMxMjBjYzNjYTI3ZTBmODc1MzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJSZWdp
c3RyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hhbmRsZXJS
ZWdpc3RyeS5qcwpAQCAtMTExLDcgKzExMSw3IEBAIFdlYkluc3BlY3Rvci5IYW5kbGVyUmVnaXN0
cnkucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSB8fCB0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UgfHwgdGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1
ZXN0KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0gKi8gdGFyZ2V0OworICAg
ICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29udGVu
dFByb3ZpZGVyfSAqLyAodGFyZ2V0KTsKICAgICAgICAgaWYgKCFjb250ZW50UHJvdmlkZXIuY29u
dGVudFVSTCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDMsNyArMTQzLDcgQEAgV2Vi
SW5zcGVjdG9yLkhhbmRsZXJSZWdpc3RyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9u
IHNhdmUoZm9yY2VTYXZlQXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChjb250ZW50UHJv
dmlkZXIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gY29udGVudFByb3ZpZGVyOworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChjb250ZW50UHJv
dmlkZXIpOwogICAgICAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNEaXJ0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGRvU2F2ZShmb3JjZVNhdmVBcywgdWlTb3VyY2VDb2RlLndvcmtp
bmdDb3B5KCkpOwogICAgICAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUuY29tbWl0V29ya2lu
Z0NvcHkoZnVuY3Rpb24oKSB7IH0pOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFdlYkluc3BlY3Rvci5I
YW5kbGVyUmVnaXN0cnkucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCEodGFyZ2V0
IGluc3RhbmNlb2YgTm9kZSkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciB0YXJn
ZXROb2RlID0gLyoqIEB0eXBlIHtOb2RlfSAqLyB0YXJnZXQ7CisgICAgICAgIHZhciB0YXJnZXRO
b2RlID0gLyoqIEB0eXBlIHtOb2RlfSAqLyAodGFyZ2V0KTsKIAogICAgICAgICB2YXIgYW5jaG9y
RWxlbWVudCA9IHRhcmdldE5vZGUuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygid2Via2l0
LWh0bWwtcmVzb3VyY2UtbGluayIpIHx8IHRhcmdldE5vZGUuZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhDbGFzcygid2Via2l0LWh0bWwtZXh0ZXJuYWwtbGluayIpOwogICAgICAgICBpZiAoIWFuY2hv
ckVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdExvYWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90TG9hZGVyLmpzCmluZGV4IDg3MjU0ODJhNWIzMzI0M2Y3ZTFjNDYyZDU3
NGJiOWEzYjgzMGNlMDYuLjFhNDU3Y2UyNGUwYmRkNmY0N2RiMmIxNzdjYzY4OWRhY2MyNGU0NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBz
aG90TG9hZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVh
cFNuYXBzaG90TG9hZGVyLmpzCkBAIC0xMjksNyArMTI5LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdExvYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgY2xvc2luZ0JyYWNr
ZXRJbmRleCA9IFdlYkluc3BlY3Rvci5maW5kQmFsYW5jZWRDdXJseUJyYWNrZXRzKHRoaXMuX2pz
b24pOwogICAgICAgICAgICAgaWYgKGNsb3NpbmdCcmFja2V0SW5kZXggPT09IC0xKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMuX3NuYXBzaG90LnNuYXBzaG90ID0g
LyoqIEB0eXBlIHtIZWFwU25hcHNob3RIZWFkZXJ9ICovSlNPTi5wYXJzZSh0aGlzLl9qc29uLnNs
aWNlKDAsIGNsb3NpbmdCcmFja2V0SW5kZXgpKTsKKyAgICAgICAgICAgIHRoaXMuX3NuYXBzaG90
LnNuYXBzaG90ID0gLyoqIEB0eXBlIHtIZWFwU25hcHNob3RIZWFkZXJ9ICovIChKU09OLnBhcnNl
KHRoaXMuX2pzb24uc2xpY2UoMCwgY2xvc2luZ0JyYWNrZXRJbmRleCkpKTsKICAgICAgICAgICAg
IHRoaXMuX2pzb24gPSB0aGlzLl9qc29uLnNsaWNlKGNsb3NpbmdCcmFja2V0SW5kZXgpOwogICAg
ICAgICAgICAgdGhpcy5fc3RhdGUgPSAiZmluZC1ub2RlcyI7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5q
cwppbmRleCBjY2QzNjMwYTY0MTQ0MzIxMWYyYzE2ZjJjYzJkYmQ3NGE3NjZiMWQ2Li5lZWU5NjRm
MmVhOTc5NzFjMDVlYzc2ODhhNzYwMDgwYThlODE5Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0zNjgs
NyArMzY4LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2Jhc2VQcm9maWxlVWlkID0gdGhp
cy5fcHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLnVpZDsK
LSAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90RGlmZkRhdGFHcmlkfSAqLyB0aGlzLmRhdGFHcmlkOworICAgICAgICB2YXIgZGF0YUdyaWQg
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWR9ICovICh0
aGlzLmRhdGFHcmlkKTsKICAgICAgICAgLy8gQ2hhbmdlIHNldCBiYXNlIGRhdGEgc291cmNlIG9u
bHkgaWYgbWFpbiBkYXRhIHNvdXJjZSBpcyBhbHJlYWR5IHNldC4KICAgICAgICAgaWYgKGRhdGFH
cmlkLnNuYXBzaG90KQogICAgICAgICAgICAgdGhpcy5iYXNlUHJvZmlsZS5sb2FkKGRhdGFHcmlk
LnNldEJhc2VEYXRhU291cmNlLmJpbmQoZGF0YUdyaWQpKTsKQEAgLTg2Niw3ICs4NjYsNyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKICAgICAgICAgICAgIFByb2ZpbGVyQWdl
bnQuZ2V0UHJvZmlsZSh0aGlzLnByb2ZpbGVUeXBlKCkuaWQsIHRoaXMudWlkKTsKICAgICAgICAg
fQotICAgICAgICB2YXIgbG9hZGVyUHJveHkgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RMb2FkZXJQcm94eX0gKi8gdGhpcy5fcmVjZWl2ZXI7CisgICAgICAgIHZhciBsb2Fk
ZXJQcm94eSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdExvYWRlclByb3h5
fSAqLyAodGhpcy5fcmVjZWl2ZXIpOwogICAgICAgICBsb2FkZXJQcm94eS5hZGRDb25zdW1lcihj
YWxsYmFjayk7CiAgICAgfSwKIApAQCAtOTM3LDcgKzkzNyw3IEBAIFdlYkluc3BlY3Rvci5IZWFw
UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChzbmFwc2hvdFByb3h5KQog
ICAgICAgICAgICAgdGhpcy5fc25hcHNob3RQcm94eSA9IHNuYXBzaG90UHJveHk7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVNuYXBzaG90U3RhdHVzKCk7Ci0gICAgICAgIHZhciB3b3JrZXIgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RXb3JrZXJ9ICovIHRoaXMuX3NuYXBzaG90
UHJveHkud29ya2VyOworICAgICAgICB2YXIgd29ya2VyID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90V29ya2VyfSAqLyAodGhpcy5fc25hcHNob3RQcm94eS53b3JrZXIpOwog
ICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7CiAgICAgICAgIHdvcmtlci5zdGFydENo
ZWNraW5nRm9yTG9uZ1J1bm5pbmdDYWxscygpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwppbmRleCAwYzRmZWQw
N2U3NjNmMjJmZWJlYzg1MTJlYzViZDg0YTZhMWNhZGI4Li5lNjQ0MGMxYmRlYzA0ZDNjYWVhNTlm
MTQ4MTBmOTk5NWJiODYyN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKQEAgLTE5OCw3ICsxOTgsNyBAQCBXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9mcmFtZU5h
dmlnYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2VUcmVl
RnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZl
bnQuZGF0YTsKKyAgICAgICAgdmFyIHJlc291cmNlVHJlZUZyYW1lID0gLyoqIEB0eXBlIHtXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhp
cy5fcHJvY2Vzc0ZyYW1lTmF2aWdhdGVkKHJlc291cmNlVHJlZUZyYW1lKTsKICAgICB9LAogCkBA
IC0yMDcsNyArMjA3LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfZnJhbWVEZXRhY2hlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICB2YXIgcmVzb3VyY2VUcmVlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVGcmFtZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlc291cmNlVHJl
ZUZyYW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fb3JpZ2luUmVtb3ZlZEZyb21GcmFtZShyZXNvdXJj
ZVRyZWVGcmFtZS5pZCk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKaW5kZXggZDMwMDA2YTc4ODAwNDIyNjNl
MGI2OGQ2ODRiYTZjMmEzMGU1YjU2Ny4uNDFlMmRlOTg3ODNlZjVjNWUyNDU1Y2Y0MTgxOWI0MGJh
N2NjMzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0luZGV4ZWREQlZpZXdzLmpzCkBAIC0xODMsNyArMTgzLDcgQEAgV2ViSW5zcGVjdG9yLklEQkRh
dGFWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGtleUNvbHVt
bkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJdIikp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGtleVBhdGhTdHJpbmcgPSAvKiog
QHR5cGUge3N0cmluZ30gKi8ga2V5UGF0aDsKKyAgICAgICAgICAgIHZhciBrZXlQYXRoU3RyaW5n
ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChrZXlQYXRoKTsKICAgICAgICAgICAgIGtleUNvbHVt
bkhlYWRlckZyYWdtZW50LmFwcGVuZENoaWxkKHRoaXMuX2tleVBhdGhTdHJpbmdGcmFnbWVudChr
ZXlQYXRoU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAga2V5Q29sdW1uSGVhZGVyRnJhZ21l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIikiKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJj
ZUZyYW1lLmpzCmluZGV4IGEzMDE2MDY4ZTNjOWQ0OGJhY2Y3YzUzODI0ZmZkZDRkYWI1ZDNlN2Eu
LmI5MjgyNGI5OWVmYTMwZTBkYzlmYmM0MmI4MDVhNDNhOWQ5MzNiYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJj
ZUZyYW1lLmpzCkBAIC0xMDUsNyArMTA1LDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX29uRm9ybWF0dGVkQ2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgY29udGVudCA9IC8qKiBAdHlwZSB7
c3RyaW5nfSAqLyBldmVudC5kYXRhLmNvbnRlbnQ7CisgICAgICAgIHZhciBjb250ZW50ID0gLyoq
IEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhLmNvbnRlbnQpOwogICAgICAgICB0aGlzLl9p
bm5lclNldENvbnRlbnQoY29udGVudCk7CiAgICAgfSwKIApAQCAtNDg5LDIzICs0ODksMjMgQEAg
V2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBf
YnJlYWtwb2ludEFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0gKi8gZXZlbnQuZGF0
YS51aUxvY2F0aW9uOworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlVJTG9jYXRpb259ICovIChldmVudC5kYXRhLnVpTG9jYXRpb24pOwogCiAgICAgICAg
IGlmICh1aUxvY2F0aW9uLnVpU291cmNlQ29kZSAhPT0gdGhpcy5fdWlTb3VyY2VDb2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBicmVha3BvaW50ID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0gKi8gZXZlbnQuZGF0YS5i
cmVha3BvaW50OworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnR9ICovIChldmVudC5kYXRhLmJyZWFrcG9p
bnQpOwogICAgICAgICBpZiAodGhpcy5sb2FkZWQpCiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVh
a3BvaW50RGVjb3JhdGlvbih1aUxvY2F0aW9uLmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0
aW9uKCksIGJyZWFrcG9pbnQuZW5hYmxlZCgpLCBmYWxzZSk7CiAgICAgfSwKIAogICAgIF9icmVh
a3BvaW50UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlMb2Nh
dGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259ICovIGV2ZW50LmRhdGEu
dWlMb2NhdGlvbjsKKyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5VSUxvY2F0aW9ufSAqLyAoZXZlbnQuZGF0YS51aUxvY2F0aW9uKTsKICAgICAgICAgaWYg
KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlICE9PSB0aGlzLl91aVNvdXJjZUNvZGUpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50fSAqLyBldmVudC5kYXRhLmJyZWFr
cG9pbnQ7CisgICAgICAgIHZhciBicmVha3BvaW50ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludH0gKi8gKGV2ZW50LmRhdGEuYnJlYWtwb2ludCk7
CiAgICAgICAgIHZhciByZW1haW5pbmdCcmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludE1hbmFn
ZXIuZmluZEJyZWFrcG9pbnQodGhpcy5fdWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLmxpbmVOdW1i
ZXIpOwogICAgICAgICBpZiAoIXJlbWFpbmluZ0JyZWFrcG9pbnQgJiYgdGhpcy5sb2FkZWQpCiAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50RGVjb3JhdGlvbih1aUxvY2F0aW9uLmxp
bmVOdW1iZXIpOwpAQCAtNTEzLDE0ICs1MTMsMTQgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRT
b3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBfY29uc29sZU1lc3NhZ2VBZGRlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbWVzc2FnZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlfSAqLyBldmVudC5kYXRhOworICAg
ICAgICB2YXIgbWVzc2FnZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNv
bnNvbGVNZXNzYWdlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIGlmICh0aGlzLmxvYWRlZCkK
ICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZVRvU291cmNlKG1lc3NhZ2UubGluZU51bWJlciwg
bWVzc2FnZS5vcmlnaW5hbE1lc3NhZ2UpOwogICAgIH0sCiAKICAgICBfY29uc29sZU1lc3NhZ2VS
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50
LmRhdGE7CisgICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUHJl
c2VudGF0aW9uQ29uc29sZU1lc3NhZ2V9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHRo
aXMubG9hZGVkKQogICAgICAgICAgICAgdGhpcy5yZW1vdmVNZXNzYWdlRnJvbVNvdXJjZShtZXNz
YWdlLmxpbmVOdW1iZXIsIG1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdlKTsKICAgICB9LApAQCAtNTgy
LDcgKzU4Miw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gZXZl
bnQuZGF0YS5saW5lTnVtYmVyOwotICAgICAgICB2YXIgZXZlbnRPYmplY3QgPSAvKiogQHR5cGUg
e0V2ZW50fSAqLyBldmVudC5kYXRhLmV2ZW50OworICAgICAgICB2YXIgZXZlbnRPYmplY3QgPSAv
KiogQHR5cGUge0V2ZW50fSAqLyAoZXZlbnQuZGF0YS5ldmVudCk7CiAKICAgICAgICAgaWYgKGV2
ZW50T2JqZWN0LmJ1dHRvbiAhPSAwIHx8IGV2ZW50T2JqZWN0LmFsdEtleSB8fCBldmVudE9iamVj
dC5jdHJsS2V5IHx8IGV2ZW50T2JqZWN0Lm1ldGFLZXkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC02MzAsNyArNjMwLDcgQEAgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NvbnRpbnVlVG9MaW5lOiBmdW5jdGlvbihsaW5lTnVt
YmVyKQogICAgIHsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gdGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIDApOworICAgICAgICB2YXIgcmF3TG9jYXRp
b24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAo
dGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIDAp
KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY29udGludWVUb0xvY2F0aW9u
KHJhd0xvY2F0aW9uKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01lbW9yeVN0YXRpc3RpY3MuanMKaW5kZXggZTc1Y2QwMmIzMzhjMTdm
ZDExOGUyOTk3ZDY2YWEwYWFmZGNlODcxYy4uMzBhMTUyY2NlMzliN2VlMDE5MTZiMjQ4YzRmNjkx
YTlhNTM5M2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9NZW1vcnlTdGF0aXN0aWNzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwpAQCAtNDA5LDcgKzQwOSw3IEBAIFdlYkluc3BlY3Rv
ci5NZW1vcnlTdGF0aXN0aWNzLnByb3RvdHlwZSA9IHsKIAogICAgIHNob3c6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHZhciBhbmNob3IgPSAvKiogQHR5cGUge0VsZW1lbnR8bnVsbH0gKi8g
dGhpcy5fY29udGFpbmVyQW5jaG9yLm5leHRTaWJsaW5nOworICAgICAgICB2YXIgYW5jaG9yID0g
LyoqIEB0eXBlIHtFbGVtZW50fG51bGx9ICovICh0aGlzLl9jb250YWluZXJBbmNob3IubmV4dFNp
YmxpbmcpOwogICAgICAgICB0aGlzLl9tZW1vcnlTcGxpdFZpZXcuc2hvdyh0aGlzLl90aW1lbGlu
ZVBhbmVsLmVsZW1lbnQsIGFuY2hvcik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNpemUoKTsKICAg
ICAgICAgdGhpcy5fcmVmcmVzaERpdmlkZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcuanMKaW5kZXggYjZmNjgwYzYxOTExYmQ5
ZDk5ZGNlODEzMjM2ZTkwZTdjNTc2MTYxOC4uYzkxMDNiYmEyZjMxYTY4ZmQ4YjYyODJjZWY2ZDMx
OGYzMDk3OGQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OYXZpZ2F0b3JWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmF2aWdhdG9yVmlldy5qcwpAQCAtODQsMjUgKzg0LDI1IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0b3JWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNvdXJjZUNvZGVUaXRsZUNoYW5nZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0OworICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5fdXBkYXRlU2NyaXB0VGl0bGUodWlT
b3VyY2VDb2RlKQogICAgIH0sCiAKICAgICBfdWlTb3VyY2VDb2RlV29ya2luZ0NvcHlDaGFuZ2Vk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFRpdGxlKHVp
U291cmNlQ29kZSkKICAgICB9LAogCiAgICAgX3VpU291cmNlQ29kZVdvcmtpbmdDb3B5Q29tbWl0
dGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFRpdGxl
KHVpU291cmNlQ29kZSkKICAgICB9LAogCiAgICAgX3VpU291cmNlQ29kZUZvcm1hdHRlZENoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0OworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5fdXBkYXRlU2NyaXB0VGl0bGUo
dWlTb3VyY2VDb2RlKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtMb2cuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtMb2cuanMKaW5kZXggODRmZjExMDIxYmY3ZTA5NWE5MzA3NzM5Nzcx
NzhlMzBiMzZhYjQzZS4uZmM0NTg1NmIxZjYwMTUzYTNkNGI5MzUxYTUyZDkyNDY5OTMwNTY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTG9n
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0xvZy5q
cwpAQCAtOTcsNyArOTcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZy5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgX29uUmVxdWVzdFN0YXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVx
dWVzdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB0aGlz
Ll9yZXF1ZXN0cy5wdXNoKHJlcXVlc3QpOwogICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9ySWRbcmVx
dWVzdC5yZXF1ZXN0SWRdID0gcmVxdWVzdDsKICAgICAgICAgcmVxdWVzdC5fX3BhZ2UgPSB0aGlz
Ll9jdXJyZW50UGFnZUxvYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwppbmRleCBhZDAxMjg2OTA0MmU1YWMzYmU0NDkyOGMw
M2NiZTY1NzBjNjM5ZWUwLi5mMGI5ZTVjYzRiODQ5NzNjYzI5NmM0YTAyOGRiMTcxMzE0YjQwYTVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a01hbmFnZXIuanMKQEAgLTEwNCw3ICsxMDQsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFn
ZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9jYWNoZURpc2FibGVkU2V0dGluZ0NoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGVuYWJsZWQgPSAvKiogQHR5
cGUge2Jvb2xlYW59ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBlbmFibGVkID0gLyoqIEB0
eXBlIHtib29sZWFufSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIE5ldHdvcmtBZ2VudC5zZXRD
YWNoZURpc2FibGVkKGVuYWJsZWQpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggMDYyOWJmNjNjNjMzYjVm
YzA4OWMzZGUwMjk5MjBhMDk4NTgwN2Y4MS4uNzM3ZWZjYWMyYzg2ZmQ5MmEwMjNlZDIzNGI4NzUx
NGZhMjkyMzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUGFuZWwuanMKQEAgLTc5NSw3ICs3OTUsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9vblJlcXVlc3RVcGRhdGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0ID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBy
ZXF1ZXN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9ICovIChldmVu
dC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3QocmVxdWVzdCk7CiAgICAgfSwK
IApAQCAtODIwLDcgKzgyMCw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9wcmVzZXJ2ZUxvZ1RvZ2dsZS50b2dnbGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBmcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZnJh
bWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVGcmFtZX0gKi8gKGV2ZW50
LmRhdGEpOwogICAgICAgICB2YXIgbG9hZGVySWQgPSBmcmFtZS5sb2FkZXJJZDsKIAogICAgICAg
ICAvLyBQcmVzZXJ2ZSBwcm92aXNpb25hbCBsb2FkIHJlcXVlc3RzLgpAQCAtMTUxOCw3ICsxNTE4
LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZ1
bmN0aW9uIHJldmVhbCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5pbnNw
ZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbCh0aGlzKTsKLSAgICAgICAgICAgIHRoaXMucmV2ZWFs
QW5kSGlnaGxpZ2h0UmVxdWVzdCgvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVz
dH0gKi8gdGFyZ2V0KTsKKyAgICAgICAgICAgIHRoaXMucmV2ZWFsQW5kSGlnaGxpZ2h0UmVxdWVz
dCgvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gKHRhcmdldCkpOwog
ICAgICAgICB9CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiUmV2ZWFsIGlu
IG5ldHdvcmsgcGFuZWwiIDogIlJldmVhbCBpbiBOZXR3b3JrIFBhbmVsIiksIHJldmVhbC5iaW5k
KHRoaXMpKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcwppbmRleCBj
MmQwZjAzODU5MjhiNTU0NmUwOTljOTZjMTNkZTgyOGU4OTI2M2M5Li4xMGZhODZjOTYwMTE5NjRl
MmQ0M2JjODdjNjgyODIyZTgwNmMyMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRl
ci5qcwpAQCAtNjcsNyArNjcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBzY3JpcHQgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIChldmVudC5kYXRhKTsKICAgICAgICAg
aWYgKCFzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5pc0lubGluZVNjcmlwdCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB2YXIgaXNEeW5hbWljQW5vbnltb3VzU2NyaXB0OwpAQCAt
OTMsNyArOTMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnBy
b3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfcmVzb3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5S
ZXNvdXJjZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJlc291cmNlID0gLyoqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5f
YWRkRmlsZShyZXNvdXJjZS51cmwsIHJlc291cmNlKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdFBvcG92ZXJIZWxwZXIu
anMKaW5kZXggMzgwZjRkYjhmMGFjNmUxZmE3MDFhYTEyMzU2YzExYjVkZDMwOTZkYy4uYjBiZDQz
MWE2YWZmZDMyODIxYzMzY2U1YmEwODk5MjMxYmQ1NDJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3RQb3BvdmVySGVscGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0UG9wb3ZlckhlbHBlci5qcwpA
QCAtOTAsNyArOTAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UG9wb3ZlckhlbHBlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUudGV4dENvbnRlbnQg
PSByZXNwb25zZS5uYW1lIHx8IHJlc3BvbnNlLmluZmVycmVkTmFtZSB8fCByZXNwb25zZS5kaXNw
bGF5TmFtZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xpbmtpZmllciA9IG5ldyBXZWJJbnNw
ZWN0b3IuTGlua2lmaWVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmF3TG9jYXRp
b24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyBy
ZXNwb25zZS5sb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciByYXdMb2NhdGlv
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIChy
ZXNwb25zZS5sb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluayA9IHRo
aXMuX2xpbmtpZmllci5saW5raWZ5UmF3TG9jYXRpb24ocmF3TG9jYXRpb24sICJmdW5jdGlvbi1s
b2NhdGlvbi1saW5rIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluaykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChsaW5rKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29s
ZU1lc3NhZ2VIZWxwZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
ZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzCmluZGV4IGEwY2M5Nzg0OGQ1NmQ3ZjAz
OTM0MDBmNzE3ZjRhMzJlMzEyZTQ4NGQuLjEyMGM2NzU4MmRhYjAzZGM1MGUzMjUwYWFhNWYwMjMz
MDJkMTZiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcwpA
QCAtNTUsNyArNTUsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VI
ZWxwZXIucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9jb25zb2xlTWVzc2FnZUFkZGVkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBt
ZXNzYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9ICovIChldmVu
dC5kYXRhKTsKICAgICAgICAgaWYgKCFtZXNzYWdlLnVybCB8fCAhbWVzc2FnZS5pc0Vycm9yT3JX
YXJuaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTkyLDcgKzkyLDcgQEAgV2ViSW5z
cGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgKi8KICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0g
ICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2
ZW50LmRhdGE7CisgICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5T
Y3JpcHR9ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl9w
ZW5kaW5nQ29uc29sZU1lc3NhZ2VzW3NjcmlwdC5zb3VyY2VVUkxdOwogICAgICAgICBpZiAoIW1l
c3NhZ2VzKQpAQCAtMTAxLDcgKzEwMSw3IEBAIFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25z
b2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwZW5kaW5nTWVzc2Fn
ZXMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7IGkr
KykgewogICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBtZXNzYWdlc1tpXTsKLSAgICAgICAgICAg
IHZhciByYXdMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
TG9jYXRpb259ICovIG1lc3NhZ2UubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHZhciByYXdMb2Nh
dGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICov
IChtZXNzYWdlLmxvY2F0aW9uKCkpOwogICAgICAgICAgICAgaWYgKHNjcmlwdC5zY3JpcHRJZCA9
PT0gcmF3TG9jYXRpb24uc2NyaXB0SWQpCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkQ29uc29s
ZU1lc3NhZ2VUb1NjcmlwdChtZXNzYWdlLCByYXdMb2NhdGlvbik7CiAgICAgICAgICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVz
UGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMKaW5kZXggNWI2YTI0ZGQyYzM3NWRmNGU0ODM2ZTViMDFjY2Y3YjRhNDBmZjhmOS4uM2U5
MDg4NTgyNTIxNGNjNGE2ZTIxODhiYzJiMGIxY2VmZjgzMWE3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtMTA5MSw3
ICsxMDkxLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuY3VycmVudFBhbmVsKCkgIT09IHRo
aXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIG9iamVjdCA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gdGFyZ2V0OworICAgICAgICB2YXIgb2Jq
ZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyAodGFyZ2V0KTsK
ICAgICAgICAgdmFyIG9iamVjdElkID0gb2JqZWN0Lm9iamVjdElkOwogICAgICAgICBpZiAoIW9i
amVjdElkKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcwppbmRleCBi
MGQzYTgxMDVmNjA5MzEyMDFmYjZhNTE0YWYxMTI4NTBlYTZkMDQ2Li4zYmY1ZTMwMWM5NjkxZWUz
YWU4ODc5ZTE4MjQ1NjE0MmRiYTQ3NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcwpAQCAtNTYs
NyArNTYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9j
YXRpb24pCiAgICAgewotICAgICAgICB2YXIgZGVidWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gcmF3TG9jYXRpb247
CisgICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyAocmF3TG9jYXRpb24pOwogICAgICAgICB2
YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9ySWQoZGVidWdn
ZXJNb2RlbExvY2F0aW9uLnNjcmlwdElkKTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRo
aXMuX3dvcmtzcGFjZVVJU291cmNlQ29kZUZvclNjcmlwdChzY3JpcHQpIHx8IHRoaXMuX2dldE9y
Q3JlYXRlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKHNjcmlwdCk7CiAgICAgICAgIGlmICh1aVNvdXJj
ZUNvZGUuc2NyaXB0RmlsZSgpICYmIHVpU291cmNlQ29kZS5zY3JpcHRGaWxlKCkuaGFzRGl2ZXJn
ZWRGcm9tVk0oKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3Nw
YWNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9ICovIChldmVudC5kYXRhKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoISF1aVNvdXJjZUNv
ZGUudXJsKTsKIAogICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJj
ZUNvZGUodWlTb3VyY2VDb2RlKTsKQEAgLTM5OCw3ICszOTgsNyBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTY3JpcHRGaWxlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRGaWxlLkV2ZW50cy5EaWRNZXJnZVRv
Vk0sIHRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5Mb2NhdGlvbn0gKi8gdGhpcy5fdWlTb3Vy
Y2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDAsIDApOworICAgICAgICB2YXIgcmF3TG9j
YXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAq
LyAodGhpcy5fdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDAsIDApKTsKICAg
ICAgICAgaWYgKCFyYXdMb2NhdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFy
IHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKHJhd0xvY2F0
aW9uLnNjcmlwdElkKTsKQEAgLTQwNyw3ICs0MDcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
Y3JpcHRGaWxlLnByb3RvdHlwZSA9IHsKIAogICAgIF93b3JraW5nQ29weUNoYW5nZWQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHdhc0RpcnR5ID0gLyoqIEB0eXBlIHtib29s
ZWFufSAqLyBldmVudC5kYXRhLndhc0RpcnR5OworICAgICAgICB2YXIgd2FzRGlydHkgPSAvKiog
QHR5cGUge2Jvb2xlYW59ICovIChldmVudC5kYXRhLndhc0RpcnR5KTsKICAgICAgICAgaWYgKCF3
YXNEaXJ0eSAmJiB0aGlzLl91aVNvdXJjZUNvZGUuaXNEaXJ0eSgpICYmICF0aGlzLl9oYXNEaXZl
cmdlZEZyb21WTSkgewogICAgICAgICAgICAgdGhpcy5faXNEaXZlcmdpbmdGcm9tVk0gPSB0cnVl
OwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlNjcmlwdEZpbGUuRXZlbnRzLldpbGxEaXZlcmdlRnJvbVZNLCB0aGlzLl91aVNvdXJjZUNvZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVRyZWVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VUcmVlTW9kZWwuanMKaW5kZXggZjU1Mjc5MTVjMWVlZWZmODRmMjNlNDkxYmExZDZkMDQwZmEx
ZTQ3ZC4uZTllMTJiOWRiNGNiOGYyYTNmODI0NWQ3MjQ5ZTBkOTM3NDFmYmYyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVRyZWVNb2RlbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVHJlZU1v
ZGVsLmpzCkBAIC0xNzYsNyArMTc2LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLl9jYWNoZWRSZXNvdXJjZXNQcm9jZXNz
ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHJlcXVlc3QgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAg
dmFyIHJlcXVlc3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8g
KGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAocmVxdWVzdC5mYWlsZWQgfHwgcmVxdWVzdC50eXBl
ID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIF9jb25zb2xlTWVzc2FnZUFkZGVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHZhciBtc2cgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIG1zZyA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAg
IHZhciByZXNvdXJjZSA9IG1zZy51cmwgPyB0aGlzLnJlc291cmNlRm9yVVJMKG1zZy51cmwpIDog
bnVsbDsKICAgICAgICAgaWYgKHJlc291cmNlKQogICAgICAgICAgICAgdGhpcy5fYWRkQ29uc29s
ZU1lc3NhZ2VUb1Jlc291cmNlKG1zZywgcmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggNDMwZWE4YTVk
ODczY2Y2YjgzY2Q4OGExMmI3MGVlZTg1OTU0ZWRhNS4uMmRhM2U5ZTFkNmZlYTg5YmYzZjk1NDgz
NThjZWY0MGU2NjJkMjgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0yOTcsNyArMjk3LDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfZGF0YWJhc2VB
ZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgZGF0YWJhc2UgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5EYXRhYmFzZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFy
IGRhdGFiYXNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGF0YWJhc2V9ICovIChldmVudC5k
YXRhKTsKICAgICAgICAgdGhpcy5fYWRkRGF0YWJhc2UoZGF0YWJhc2UpOwogICAgIH0sCiAKQEAg
LTMzMSw3ICszMzEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIF9kb21TdG9yYWdlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01TdG9y
YWdlfSovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciBkb21TdG9yYWdlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZX0qLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHRoaXMuX2Fk
ZERPTVN0b3JhZ2UoZG9tU3RvcmFnZSk7CiAgICAgfSwKIApAQCAtNTc3LDcgKzU3Nyw3IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2Rv
bVN0b3JhZ2VVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzdG9y
YWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZX0qLyBldmVudC5kYXRhOwor
ICAgICAgICB2YXIgc3RvcmFnZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2V9
Ki8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgdmlldyA9IHRoaXMuX2RvbVN0b3JhZ2VWaWV3
cy5nZXQoc3RvcmFnZSk7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGVWaWV3ICYmIHZpZXcgPT09
IHRoaXMudmlzaWJsZVZpZXcpCiAgICAgICAgICAgICB2aWV3LnVwZGF0ZSgpOwpAQCAtMTQ0Niw3
ICsxNDQ2LDcgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfaW5kZXhlZERCQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgdmFyIGRhdGFiYXNlSWQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5EYXRhYmFzZUlkfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZGF0YWJhc2VJ
ZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlSWR9ICov
IChldmVudC5kYXRhKTsKIAogICAgICAgICB2YXIgaWRiRGF0YWJhc2VUcmVlRWxlbWVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuSURCRGF0YWJhc2VUcmVlRWxlbWVudCh0aGlzLl9zdG9yYWdlUGFuZWws
IHRoaXMuX2luZGV4ZWREQk1vZGVsLCBkYXRhYmFzZUlkKTsKICAgICAgICAgdGhpcy5faWRiRGF0
YWJhc2VUcmVlRWxlbWVudHMucHVzaChpZGJEYXRhYmFzZVRyZWVFbGVtZW50KTsKQEAgLTE0NjAs
NyArMTQ2MCw3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICovCiAgICAgX2luZGV4ZWREQlJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKLSAgICAgICAgdmFyIGRhdGFiYXNlSWQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5EYXRhYmFzZUlkfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZGF0YWJh
c2VJZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlSWR9
ICovIChldmVudC5kYXRhKTsKIAogICAgICAgICB2YXIgaWRiRGF0YWJhc2VUcmVlRWxlbWVudCA9
IHRoaXMuX2lkYkRhdGFiYXNlVHJlZUVsZW1lbnQoZGF0YWJhc2VJZCkKICAgICAgICAgaWYgKCFp
ZGJEYXRhYmFzZVRyZWVFbGVtZW50KQpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgV2ViSW5zcGVjdG9y
LkluZGV4ZWREQlRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaW5kZXhl
ZERCTG9hZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBkYXRhYmFzZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkRhdGFiYXNlfSAqLyBldmVu
dC5kYXRhOworICAgICAgICB2YXIgZGF0YWJhc2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5EYXRhYmFzZX0gKi8gKGV2ZW50LmRhdGEpOwogCiAgICAgICAgIHZhciBp
ZGJEYXRhYmFzZVRyZWVFbGVtZW50ID0gdGhpcy5faWRiRGF0YWJhc2VUcmVlRWxlbWVudChkYXRh
YmFzZS5kYXRhYmFzZUlkKQogICAgICAgICBpZiAoIWlkYkRhdGFiYXNlVHJlZUVsZW1lbnQpCkBA
IC0xNTM4LDE0ICsxNTM4LDE0IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTGlzdFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9maWxlU3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFy
IGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmls
ZVN5c3RlbX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgZmlsZVN5c3RlbVRyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnQodGhpcy5fc3RvcmFn
ZVBhbmVsLCBmaWxlU3lzdGVtKTsKICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChmaWxlU3lzdGVt
VHJlZUVsZW1lbnQpOwogICAgIH0sCiAKICAgICBfZmlsZVN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbX0gKi8gZXZlbnQuZGF0YTsKKyAgICAg
ICAgdmFyIGZpbGVTeXN0ZW0gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9k
ZWwuRmlsZVN5c3RlbX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICB2YXIgZmlsZVN5c3RlbVRy
ZWVFbGVtZW50ID0gdGhpcy5fZmlsZVN5c3RlbVRyZWVFbGVtZW50QnlOYW1lKGZpbGVTeXN0ZW0u
bmFtZSk7CiAgICAgICAgIGlmICghZmlsZVN5c3RlbVRyZWVFbGVtZW50KQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1MaXN0
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIF9maWxlU3lzdGVtVHJlZUVsZW1lbnRCeU5h
bWU6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1OYW1lKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY2hp
bGQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnR9ICovIHRo
aXMuY2hpbGRyZW5baV07CisgICAgICAgICAgICB2YXIgY2hpbGQgPSAvKiogQHR5cGUge1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtVHJlZUVsZW1lbnR9ICovICh0aGlzLmNoaWxkcmVuW2ldKTsKICAg
ICAgICAgICAgIGlmIChjaGlsZC5maWxlU3lzdGVtTmFtZSA9PT0gZmlsZVN5c3RlbU5hbWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5baV07CiAgICAgICAgIH0KQEAgLTIy
MTEsNyArMjIxMSw3IEBAIFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRzVHJlZUVsZW1lbnRzVHJh
dmVyc2VyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfdHJhdmVyc2VOZXh0OiBmdW5jdGlv
bih0cmVlRWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiAvKiogQHR5cGUge1dlYkluc3Bl
Y3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fSAqLyB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRU
cmVlRWxlbWVudChmYWxzZSwgdGhpcy5fcm9vdCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50fSAqLyAodHJlZUVsZW1l
bnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMuX3Jvb3QsIHRydWUpKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC0yMjIwLDcgKzIyMjAsNyBAQCBXZWJJbnNwZWN0b3IuU2VhcmNo
UmVzdWx0c1RyZWVFbGVtZW50c1RyYXZlcnNlci5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
X3RyYXZlcnNlUHJldmlvdXM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnR9ICov
IHRyZWVFbGVtZW50LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudChmYWxzZSwgdHJ1ZSk7Cisg
ICAgICAgIHJldHVybiAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVt
ZW50fSAqLyAodHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KGZhbHNlLCB0
cnVlKSk7CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3LmpzCmluZGV4IDU2YjgyMjY3
NjJlNTRhZjQ4MjRiOGI2M2U3MDRhZTQyMjRkM2FjNmEuLjQ1OTJlNGFkNTExODk5OTc0YjA3MWVk
YmNmMzYwYTIzZjZjNGY3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcuanMKQEAgLTEyOCw3ICsxMjgsNyBA
QCBXZWJJbnNwZWN0b3IuUmV2aXNpb25IaXN0b3J5Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBf
cmV2aXNpb25BZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5k
YXRhLnVpU291cmNlQ29kZTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlKTsK
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZUl0ZW0gPSB0aGlzLl91aVNvdXJjZUNvZGVJdGVtcy5n
ZXQodWlTb3VyY2VDb2RlKTsKICAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGVJdGVtKSB7CiAgICAg
ICAgICAgICB1aVNvdXJjZUNvZGVJdGVtID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlSXRlbSh1
aVNvdXJjZUNvZGUpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIFdlYkluc3BlY3Rvci5SZXZpc2lvbkhp
c3RvcnlWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNvdXJjZUNvZGVSZW1vdmVkOiBmdW5j
dGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChl
dmVudC5kYXRhKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TQVNTU291cmNlTWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanMKaW5kZXggYzA4Zjg4YTE2NTYyNGE5ZmM5ODI5Njdl
MDk1NTA2NTEyNjc5ZWQ0Mi4uNDNiYzFlN2NmNDY2NDBlNzY4ZDk3NmQ5MWVhZjBiNzY2ZWQwNTA2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TQVNTU291
cmNlTWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NB
U1NTb3VyY2VNYXBwaW5nLmpzCkBAIC02Nyw3ICs2Nyw3IEBAIFdlYkluc3BlY3Rvci5TQVNTU291
cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZpbGVTYXZlRmluaXNoZWQ6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHNhc3NVUkwgPSAvKiogQHR5cGUg
e3N0cmluZ30gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHNhc3NVUkwgPSAvKiogQHR5cGUg
e3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90aW1lb3V0Rm9yVVJMW3Nhc3NVUkxd
OwpAQCAtMTA0LDcgKzEwNCw3IEBAIFdlYkluc3BlY3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Jlc291cmNlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgdmFyIHJlc291cmNlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVz
b3VyY2V9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlJlc291cmNlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIGlmIChyZXNv
dXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNoZWV0KQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xODksNyArMTg5LDcgQEAgV2ViSW5zcGVjdG9yLlNBU1NT
b3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByYXdMb2NhdGlvblRvVUlM
b2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRpb24pCiAgICAgewotICAgICAgICB2YXIgbG9jYXRp
b24gPSAvKiogQHR5cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9uICovIHJhd0xvY2F0aW9uOwor
ICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUgV2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9u
ICovIChyYXdMb2NhdGlvbik7CiAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fdWlMb2Nh
dGlvbnNbbG9jYXRpb24udXJsICsgIjoiICsgbG9jYXRpb24ubGluZU51bWJlcl07CiAgICAgICAg
IGlmICghdWlMb2NhdGlvbikgewogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMu
X3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwobG9jYXRpb24udXJsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NvcGVDaGFpblNpZGViYXJQYW5l
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJh
clBhbmUuanMKaW5kZXggYWI2OTJlOWRhYjkzN2Q4ODZmY2UwODRmNDY4ZDQzNWZjZTc0MGMzNS4u
MTIwOTUyNmI3ZWJiM2NlZThjODI0NGQzMzk2ZjM0NmJiZGUxZWYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJhclBhbmUuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY29wZUNoYWluU2lkZWJh
clBhbmUuanMKQEAgLTgzLDcgKzgzLDcgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5TaWRlYmFy
UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXhjZXB0aW9u
ID0gZGV0YWlscy5yZWFzb24gPT09IFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkJyZWFrUmVh
c29uLkV4Y2VwdGlvbiA/IGRldGFpbHMuYXV4RGF0YSA6IDA7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFQ
cm9wZXJ0aWVzID0gZXh0cmFQcm9wZXJ0aWVzIHx8IFtdOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBleGNlcHRpb25PYmplY3QgPSAvKiogQHR5cGUge1J1bnRpbWVBZ2VudC5SZW1v
dGVPYmplY3R9ICovIGV4Y2VwdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
ZXhjZXB0aW9uT2JqZWN0ID0gLyoqIEB0eXBlIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fSAq
LyAoZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYVByb3BlcnRp
ZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5KCI8ZXhjZXB0aW9u
PiIsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZXhjZXB0aW9uT2JqZWN0
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCmluZGV4IGFhZjM4
N2FhNzljNDkxMzFlMWU5ZDI5MDQwNTJlYzQyMmFkMGZjNTYuLjQ0NWM1ZDE0MDEzMDQzODUyOTAy
ZjdhZGE1MTZjZTM2NDZjM2M4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0LmpzCkBAIC0yMjQsNyArMjI0LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5M
b2NhdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdWlMb2NhdGlvbjogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIHRoaXMucmF3TG9jYXRpb24o
KTsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovICh0aGlzLnJhd0xvY2F0aW9uKCkpOwog
ICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGRlYnVn
Z2VyTW9kZWxMb2NhdGlvbi5saW5lTnVtYmVyLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1u
TnVtYmVyKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCmluZGV4IGI5OWVhYjdjZDUxZmNjYWY1NTU2NmQz
MTM0ODFhNTg3ZGMzOTNjZGIuLjNlZWRlYmEyN2I3YzZhMDRlZTk0ODgzNThlYTRhYjZiOTM0YjJl
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
Rm9ybWF0dGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0Rm9ybWF0dGVyLmpzCkBAIC0xMjUsNyArMTI1LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdEZv
cm1hdHRlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFdv
cmtlcikgewogICAgICAgICAgICAgdGhpcy5fY2FjaGVkV29ya2VyID0gbmV3IFdvcmtlcigiU2Ny
aXB0Rm9ybWF0dGVyV29ya2VyLmpzIik7Ci0gICAgICAgICAgICB0aGlzLl9jYWNoZWRXb3JrZXIu
b25tZXNzYWdlID0gLyoqIEB0eXBlIHtmdW5jdGlvbih0aGlzOldvcmtlcil9ICovIHRoaXMuX2Rp
ZEZvcm1hdENvbnRlbnQuYmluZCh0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2NhY2hlZFdvcmtl
ci5vbm1lc3NhZ2UgPSAvKiogQHR5cGUge2Z1bmN0aW9uKHRoaXM6V29ya2VyKX0gKi8gKHRoaXMu
X2RpZEZvcm1hdENvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHRoaXMuX2NhY2hlZFdvcmtlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDk0Njk4NzAyMWM0ZDE0YmU3NGRk
OTYzYmQxZmY1YjEwMjUwNGQ5YzguLjlhMDNhZDIzNDZiYjY4YzVjMzIyZDkzZDViNzQzZTVlYWZm
OTM0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzCkBAIC0yMzcsNyArMjM3LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3VpU291cmNlQ29kZUFkZGVkOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7CisgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVu
dC5kYXRhKTsKICAgICAgICAgdGhpcy5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAg
ICAgfSwKIApAQCAtMjU1LDcgKzI1NSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgX3VpU291cmNlQ29kZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwog
ICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIucmVtb3ZlVUlTb3VyY2VDb2RlKHVpU291cmNl
Q29kZSk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvci5yZW1vdmVVSVNvdXJjZUNvZGUodWlTb3Vy
Y2VDb2RlKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlU291cmNlRnJhbWUodWlTb3VyY2VDb2RlKTsK
QEAgLTU0MCw3ICs1NDAsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICBfZWRpdG9yQ2xvc2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMuX25hdmlnYXRvckNvbnRyb2xsZXIuaGlkZU5hdmlnYXRvck92ZXJsYXkoKTsKLSAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwogCiAgICAgICAgIGlmICh0
aGlzLl9jdXJyZW50VUlTb3VyY2VDb2RlID09PSB1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICBk
ZWxldGUgdGhpcy5fY3VycmVudFVJU291cmNlQ29kZTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9lZGl0b3JTZWxlY3Rl
ZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOworICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dG
aWxlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvckNvbnRyb2xsZXIuaGlk
ZU5hdmlnYXRvck92ZXJsYXkoKTsKICAgICAgICAgc291cmNlRnJhbWUuZm9jdXMoKTsKQEAgLTU2
MSw3ICs1NjEsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIF9zY3JpcHRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBl
dmVudC5kYXRhLnVpU291cmNlQ29kZTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEudWlTb3VyY2VD
b2RlKTsKICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd0ZpbGUodWlTb3VyY2VD
b2RlKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yQ29udHJvbGxlci5oaWRlTmF2aWdhdG9yT3Zl
cmxheSgpOwogICAgICAgICBpZiAoc291cmNlRnJhbWUgJiYgZXZlbnQuZGF0YS5mb2N1c1NvdXJj
ZSkKQEAgLTkxOCw3ICs5MTgsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICBjYW5TZWFyY2hBbmRSZXBsYWNlOiBmdW5jdGlvbigpCiAgICAg
ewotICAgICAgICB2YXIgdmlldyA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
fSAqLyB0aGlzLnZpc2libGVWaWV3OworICAgICAgICB2YXIgdmlldyA9IC8qKiBAdHlwZSB7V2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lfSAqLyAodGhpcy52aXNpYmxlVmlldyk7CiAgICAgICAgIHJl
dHVybiAhIXZpZXcgJiYgdmlldy5jYW5FZGl0U291cmNlKCk7CiAgICAgfSwKIApAQCAtOTI3LDcg
KzkyNyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAq
LwogICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoOiBmdW5jdGlvbih0ZXh0KQogICAgIHsKLSAgICAg
ICAgdmFyIHZpZXcgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0gKi8gdGhp
cy52aXNpYmxlVmlldzsKKyAgICAgICAgdmFyIHZpZXcgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZX0gKi8gKHRoaXMudmlzaWJsZVZpZXcpOwogICAgICAgICB2aWV3LnJlcGxh
Y2VTZWFyY2hNYXRjaFdpdGgodGV4dCk7CiAgICAgfSwKIApAQCAtOTM3LDcgKzkzNyw3IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJlcGxh
Y2VBbGxXaXRoOiBmdW5jdGlvbihxdWVyeSwgdGV4dCkKICAgICB7Ci0gICAgICAgIHZhciB2aWV3
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291cmNlRnJhbWV9ICovIHRoaXMudmlzaWJsZVZp
ZXc7CisgICAgICAgIHZhciB2aWV3ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWV9ICovICh0aGlzLnZpc2libGVWaWV3KTsKICAgICAgICAgdmlldy5yZXBsYWNlQWxsV2l0aChx
dWVyeSwgdGV4dCk7CiAgICAgfSwKIApAQCAtOTYxLDcgKzk2MSw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IGlmIChzb3VyY2VGcmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNl
RnJhbWUpIHsKLSAgICAgICAgICAgIHZhciBqYXZhU2NyaXB0U291cmNlRnJhbWUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWV9ICovIHNvdXJjZUZyYW1lOwor
ICAgICAgICAgICAgdmFyIGphdmFTY3JpcHRTb3VyY2VGcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZX0gKi8gKHNvdXJjZUZyYW1lKTsKICAgICAgICAg
ICAgIGphdmFTY3JpcHRTb3VyY2VGcmFtZS50b2dnbGVCcmVha3BvaW50T25DdXJyZW50TGluZSgp
OwogICAgICAgICB9ICAgICAgICAgICAgCiAgICAgfSwKQEAgLTEwMjcsOCArMTAyNyw4IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2ZpbGVSZW5hbWVk
OiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGEudWlTb3VyY2VD
b2RlOwotICAgICAgICB2YXIgbmFtZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyBldmVudC5kYXRh
Lm5hbWU7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29kZSk7CisgICAgICAgIHZh
ciBuYW1lID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhLm5hbWUpOwogICAgICAg
ICBpZiAoIXVpU291cmNlQ29kZS5pc1NuaXBwZXQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwucmVuYW1lU2NyaXB0U25pcHBldCh1
aVNvdXJjZUNvZGUsIG5hbWUpOwpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2l0ZW1SZW5hbWluZ1JlcXVl
c3RlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlfSAqLyAoZXZlbnQuZGF0YSk7CiAgICAgICAgIAogICAgICAgICB2YXIgc2hvdWxkSGlkZU5h
dmlnYXRvciA9ICF0aGlzLl9uYXZpZ2F0b3JDb250cm9sbGVyLmlzTmF2aWdhdG9yUGlubmVkKCk7
CiAgICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3JDb250cm9sbGVyLmlzTmF2aWdhdG9ySGlkZGVu
KCkpCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gdGFyZ2V0Owor
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSAqLyAodGFyZ2V0KTsKICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIG1vZGlmaWNhdGlvbnMuLi4iKSwgdGhpcy5fc2hvd0xv
Y2FsSGlzdG9yeS5iaW5kKHRoaXMsIHVpU291cmNlQ29kZSkpOwogICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodWlTb3VyY2VDb2RlLnVybCk7CiAgICAg
ICAgIGlmIChyZXNvdXJjZSAmJiByZXNvdXJjZS5yZXF1ZXN0KQpAQCAtMTEzMCw3ICsxMTMwLDcg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHJlbW90ZU9iamVjdCA9IC8qKiBAdHlwZSB7
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gKi8gdGFyZ2V0OworICAgICAgICB2YXIgcmVtb3Rl
T2JqZWN0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fSAqLyAodGFyZ2V0
KTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC50eXBlICE9PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbERlc2NyaXB0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbERlc2NyaXB0b3IuanMKaW5kZXggYTMyMzBhYTJiNmE5
ZGQ2NjZlNGFkZjMxZmJiMmQ3MzhmYTFmYmZkZC4uOGYzODdmNjViNmVmMTgwM2Y2YWQ5ZGJiOTEw
MmJhNWFhN2NkYjI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWxEZXNjcmlwdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsRGVzY3JpcHRvci5qcwpAQCAtNDcsNyArNDcsNyBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsRGVzY3JpcHRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciBoYXNBcHBsaWNhYmxlSXRlbXMgPSB0YXJnZXQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlOwogCiAgICAgICAgIGlmICghaGFzQXBwbGljYWJsZUl0ZW1zICYmIHRh
cmdldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpIHsKLSAgICAgICAgICAg
IHZhciByZW1vdGVPYmplY3QgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9
ICovIHRhcmdldDsKKyAgICAgICAgICAgIHZhciByZW1vdGVPYmplY3QgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3R9ICovICh0YXJnZXQpOwogICAgICAgICAgICAgaWYgKHJl
bW90ZU9iamVjdC50eXBlICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzCmluZGV4IDRkZTc1MDlkYzU0Mjk4NzI0YjE4Y2Fh
MTVjNDFmMjdjMjAxNGNjMjEuLmJkN2UyNmMyYWY3NDQ1NjQ3MTNmYWU4MDRjMGI2ODNjYzExMGQy
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U291cmNlTWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NvdXJjZU1hcHBpbmcuanMKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHZhciBs
b2NhdGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb24gKi8gcmF3TG9jYXRp
b247CisgICAgICAgIHZhciBsb2NhdGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NTTG9j
YXRpb24gKi8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMu
X3VpU291cmNlQ29kZUZvclVSTFtsb2NhdGlvbi51cmxdOwogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgbG9jYXRpb24ubGluZU51bWJlciwg
MCk7CiAgICAgfSwKQEAgLTY3LDcgKzY3LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1h
cHBpbmcucHJvdG90eXBlID0gewogCiAgICAgX3VpU291cmNlQ29kZUFkZGVkVG9Xb3Jrc3BhY2U6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwgfHwgdGhpcy5f
dWlTb3VyY2VDb2RlRm9yVVJMW3VpU291cmNlQ29kZS51cmxdKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkgIT09IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzCmluZGV4IGQ0
YTRlOWUwYTcwNjA4MGFlM2JhZTExZThjZWI2M2NjM2M2NWZjMTUuLjA1NmFkYmNhMWUxYWQ4NTUw
OGMxOTRkZWFmZjc5M2Q2YjViOTRhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzCkBAIC0xMjcs
MTQgKzEyNywxNCBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlw
ZSA9IHsKIAogICAgIF9zY3JvbGxDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBsaW5lTnVtYmVyID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIHZhciBsaW5lTnVtYmVyID0gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChldmVudC5kYXRh
KTsKICAgICAgICAgdGhpcy5faGlzdG9yeS51cGRhdGVTY3JvbGxMaW5lTnVtYmVyKHRoaXMuX2N1
cnJlbnRGaWxlLnVybCwgbGluZU51bWJlcik7CiAgICAgICAgIHRoaXMuX2hpc3Rvcnkuc2F2ZSh0
aGlzLl9wcmV2aW91c2x5Vmlld2VkRmlsZXNTZXR0aW5nKTsKICAgICB9LAogCiAgICAgX3NlbGVj
dGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJhbmdlID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSAqLyBldmVudC5kYXRhOworICAgICAg
ICB2YXIgcmFuZ2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9ICovIChldmVu
dC5kYXRhKTsKICAgICAgICAgdGhpcy5faGlzdG9yeS51cGRhdGVTZWxlY3Rpb25SYW5nZSh0aGlz
Ll9jdXJyZW50RmlsZS51cmwsIHJhbmdlKTsKICAgICAgICAgdGhpcy5faGlzdG9yeS5zYXZlKHRo
aXMuX3ByZXZpb3VzbHlWaWV3ZWRGaWxlc1NldHRpbmcpOwogICAgIH0sCkBAIC0yOTUsOCArMjk1
LDggQEAgV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgX3RhYkNsb3NlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2
YXIgdGFiSWQgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gZXZlbnQuZGF0YS50YWJJZDsKLSAgICAg
ICAgdmFyIHVzZXJHZXN0dXJlID0gLyoqIEB0eXBlIHtib29sZWFufSAqLyBldmVudC5kYXRhLmlz
VXNlckdlc3R1cmU7CisgICAgICAgIHZhciB0YWJJZCA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAo
ZXZlbnQuZGF0YS50YWJJZCk7CisgICAgICAgIHZhciB1c2VyR2VzdHVyZSA9IC8qKiBAdHlwZSB7
Ym9vbGVhbn0gKi8gKGV2ZW50LmRhdGEuaXNVc2VyR2VzdHVyZSk7CiAKICAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IHRoaXMuX2ZpbGVzW3RhYklkXTsKICAgICAgICAgaWYgKHRoaXMuX2N1cnJl
bnRGaWxlID09PSB1aVNvdXJjZUNvZGUpIHsKQEAgLTMxOSw4ICszMTksOCBAQCBXZWJJbnNwZWN0
b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfdGFi
U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHRhYklkID0gLyoq
IEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRhdGEudGFiSWQ7Ci0gICAgICAgIHZhciB1c2VyR2Vz
dHVyZSA9IC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8gZXZlbnQuZGF0YS5pc1VzZXJHZXN0dXJlOwor
ICAgICAgICB2YXIgdGFiSWQgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEudGFi
SWQpOworICAgICAgICB2YXIgdXNlckdlc3R1cmUgPSAvKiogQHR5cGUge2Jvb2xlYW59ICovIChl
dmVudC5kYXRhLmlzVXNlckdlc3R1cmUpOwogCiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0
aGlzLl9maWxlc1t0YWJJZF07CiAgICAgICAgIHRoaXMuX2lubmVyU2hvd0ZpbGUodWlTb3VyY2VD
b2RlLCB1c2VyR2VzdHVyZSk7CkBAIC0zNjIsMjUgKzM2MiwyNSBAQCBXZWJJbnNwZWN0b3IuVGFi
YmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKIAogICAgIF91aVNvdXJjZUNvZGVUaXRs
ZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0
OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5fdXBkYXRlRmlsZVRp
dGxlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVXb3JraW5nQ29w
eUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0
OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5fdXBkYXRlRmlsZVRp
dGxlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVXb3JraW5nQ29w
eUNvbW1pdHRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VD
b2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC50YXJn
ZXQ7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9ICovIChldmVudC50YXJnZXQpOwogICAgICAgICB0aGlzLl91cGRhdGVGaWxl
VGl0bGUodWlTb3VyY2VDb2RlKTsKICAgICB9LAogCiAgICAgX3VpU291cmNlQ29kZUZvcm1hdHRl
ZENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0
OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSAqLyAoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgdGhpcy5fdXBkYXRlRmlsZVRp
dGxlKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCmluZGV4IGU1MGNkNWI2MGZmM2JlNzMx
Y2NjMDhiODNiNzY0YjNhZDMwNmU0YmUuLjkyNGQzNTNhNjZhYzExZDliZGViYWJmOGQzYWY4MTg0
YmQzZGY2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RpbWVsaW5lTW9kZWwuanMKQEAgLTI5NSw3ICsyOTUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNb2RlbExvYWRlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGl0ZW1zOwogICAgICAg
ICB0cnkgewotICAgICAgICAgICAgaXRlbXMgPSAvKiogQHR5cGUge0FycmF5fSAqLyBKU09OLnBh
cnNlKGpzb24pOworICAgICAgICAgICAgaXRlbXMgPSAvKiogQHR5cGUge0FycmF5fSAqLyAoSlNP
Ti5wYXJzZShqc29uKSk7CiAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5zaG93RXJyb3JNZXNzYWdlKCJNYWxmb3JtZWQgdGltZWxpbmUgZGF0YS4iKTsKICAg
ICAgICAgICAgIHRoaXMuX21vZGVsLnJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggOTU3Njg4Nzc4MjVjOGJi
MDM2Y2RmYzMyYzU2MzFjOWYzMjE4NjQ4OC4uZDMxYzgwYTliYmE2NzYwZGM5ZWQzMWQzMDc1MDdj
Y2NiZWU4NjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTMxLDcgKzEzMSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5faGVhZGVyTGluZUNvdW50ID0gMTsK
IAotICAgIHRoaXMuX21haW5UaHJlYWRUYXNrcyA9IC8qKiBAdHlwZSB7IUFycmF5Ljx7c3RhcnRU
aW1lOiBudW1iZXIsIGVuZFRpbWU6IG51bWJlcn0+fSAqLyBbXTsKKyAgICB0aGlzLl9tYWluVGhy
ZWFkVGFza3MgPSAvKiogQHR5cGUgeyFBcnJheS48e3N0YXJ0VGltZTogbnVtYmVyLCBlbmRUaW1l
OiBudW1iZXJ9Pn0gKi8gKFtdKTsKICAgICB0aGlzLl9tYWluVGhyZWFkTW9uaXRvcmluZ0VuYWJs
ZWQgPSBmYWxzZTsKICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dDcHVPblRpbWVs
aW5lUnVsZXIuZ2V0KCkgJiYgQ2FwYWJpbGl0aWVzLnRpbWVsaW5lQ2FuTW9uaXRvck1haW5UaHJl
YWQpCiAgICAgICAgIHRoaXMuX2VuYWJsZU1haW5UaHJlYWRNb25pdG9yaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZUZyYW1l
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGVGcmFt
ZS5qcwppbmRleCA3ZTBiZjUxY2RkZmViY2NlYTEyNGNiZGY0Y2I3MGRkZGY5ODg3NmJlLi40M2Q3
NjJkYmU3ZWIzYmE0MWI5MzIzNWIwODljNjk3NmM1ZmNhZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZUZyYW1lLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlRnJhbWUuanMKQEAg
LTgyLDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfb25Gb3JtYXR0ZWRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIGV2ZW50LmRh
dGEuY29udGVudDsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAvKiogQHR5cGUge3N0cmluZ30gKi8g
KGV2ZW50LmRhdGEuY29udGVudCk7CiAgICAgICAgIHRoaXMuX2lubmVyU2V0Q29udGVudChjb250
ZW50KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dvcmtzcGFjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V29ya3NwYWNlLmpzCmluZGV4IGFjODExMzBhZWE2NjYwNmIxZjExZTJiMGE1YTljZTIzZDRlOWQ2
ZDYuLjA5YWJlMTZjMTYwNDRlMjZlMzk1ZGM0N2Q5MGViMzI1YTUxZTI2YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCkBAIC01MCw3ICs1
MCw3IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgIF9mcmFtZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBmcmFt
ZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5k
YXRhOworICAgICAgICB2YXIgZnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVGcmFtZX0gKi8gKGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJh
bWUoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXZpc2lvbi5maWx0ZXJPdXRTdGFsZVJl
dmlzaW9ucygpOwogICAgIH0KQEAgLTE0MSw3ICsxNDEsNyBAQCBXZWJJbnNwZWN0b3IuUHJvamVj
dC5wcm90b3R5cGUgPSB7CiAKICAgICBfZmlsZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciBmaWxlRGVzY3JpcHRvciA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkZp
bGVEZXNjcmlwdG9yfSAqLyBldmVudC5kYXRhOworICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3Ig
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5GaWxlRGVzY3JpcHRvcn0gKi8gKGV2ZW50LmRhdGEp
OwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy51aVNvdXJjZUNvZGVGb3JVUkwoZmls
ZURlc2NyaXB0b3IucGF0aCk7CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKQEAgLTE1Niw3ICsxNTYsNyBAQCBXZWJJbnNwZWN0b3Iu
UHJvamVjdC5wcm90b3R5cGUgPSB7CiAKICAgICBfZmlsZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgdmFyIHBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8gZXZlbnQu
ZGF0YTsKKyAgICAgICAgdmFyIHBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRh
dGEpOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy51aVNvdXJjZUNvZGVGb3JVUkwo
cGF0aCk7CiAgICAgICAgIGlmICghdWlTb3VyY2VDb2RlKQogICAgICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>