<?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>66776</bug_id>
          
          <creation_ts>2011-08-23 07:13:48 -0700</creation_ts>
          <short_desc>Web Inspector: annotate and prepare for compilation first 14 files within 4 modules.</short_desc>
          <delta_ts>2011-08-24 03:19:17 -0700</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>FIXED</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>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455397</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 07:13:48 -0700</bug_when>
    <thetext>Here is the module structure:
1. jsmodule_core: Inspector-agnostic utilities, should compile without WebInspector
2. jsmodule_env: environment used by most of the front-end code: settings, metrics, host
3. jsmodule_sdk: protocol wrappers potentially reusable in alternate front-ends
4. jsmodule_ui: assorted UI code

    --module jsmodule_core:2 \
        --js Source/WebCore/inspector/front-end/utilities.js \
        --js Source/WebCore/inspector/front-end/treeoutline.js \
    --module jsmodule_env:3 \
        --js Source/WebCore/inspector/front-end/Settings.js \
        --js Source/WebCore/inspector/front-end/UserMetrics.js \
        --js Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js \
    --module jsmodule_sdk:4:jsmodule_core,jsmodule_env \
        --js Source/WebCore/inspector/front-end/Object.js \
        --js Source/WebCore/inspector/front-end/DOMAgent.js \
        --js Source/WebCore/inspector/front-end/Script.js \
        --js Source/WebCore/inspector/front-end/DebuggerModel.js \
    --module jsmodule_ui:5:jsmodule_sdk \
        --js Source/WebCore/inspector/front-end/View.js \
        --js Source/WebCore/inspector/front-end/Placard.js \
        --js Source/WebCore/inspector/front-end/Popover.js \
        --js Source/WebCore/inspector/front-end/ContextMenu.js \
        --js Source/WebCore/inspector/front-end/SoftContextMenu.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455414</commentid>
    <comment_count>1</comment_count>
      <attachid>104848</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 08:22:39 -0700</bug_when>
    <thetext>Created attachment 104848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455454</commentid>
    <comment_count>2</comment_count>
      <attachid>104861</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 09:44:13 -0700</bug_when>
    <thetext>Created attachment 104861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455458</commentid>
    <comment_count>3</comment_count>
      <attachid>104848</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-08-23 09:57:50 -0700</bug_when>
    <thetext>Comment on attachment 104848
Patch

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

&gt; Source/WebCore/inspector/compile-front-end.sh:54
&gt; +    --externs Source/WebCore/inspector/front-end/externs.js \
&gt; +    --externs Source/WebCore/inspector/front-end/protocol-externs.js \
&gt; +    --module jsmodule_core:2 \
&gt; +        --js Source/WebCore/inspector/front-end/utilities.js \
&gt; +        --js Source/WebCore/inspector/front-end/treeoutline.js \
&gt; +    --module jsmodule_env:3 \
&gt; +        --js Source/WebCore/inspector/front-end/Settings.js \
&gt; +        --js Source/WebCore/inspector/front-end/UserMetrics.js \
&gt; +        --js Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js \
&gt; +    --module jsmodule_sdk:4:jsmodule_core,jsmodule_env \
&gt; +        --js Source/WebCore/inspector/front-end/Object.js \
&gt; +        --js Source/WebCore/inspector/front-end/DOMAgent.js \
&gt; +        --js Source/WebCore/inspector/front-end/Script.js \
&gt; +        --js Source/WebCore/inspector/front-end/DebuggerModel.js \
&gt; +    --module jsmodule_ui:5:jsmodule_sdk \
&gt; +        --js Source/WebCore/inspector/front-end/View.js \
&gt; +        --js Source/WebCore/inspector/front-end/Placard.js \
&gt; +        --js Source/WebCore/inspector/front-end/Popover.js \
&gt; +        --js Source/WebCore/inspector/front-end/ContextMenu.js \
&gt; +        --js Source/WebCore/inspector/front-end/SoftContextMenu.js

Now that this is growing, I&apos;d suggest to put this in a more declarative way, e.g.

JSMODULE_SDK_SRC=Object.js DOMAgent.js SCript.js DebuggerModel.js
JSMODULE_SDK_DEPS=core,env

And then generate jscompiler command line based on these declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455459</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 10:02:44 -0700</bug_when>
    <thetext>&gt; JSMODULE_SDK_SRC=Object.js DOMAgent.js SCript.js DebuggerModel.js
&gt; JSMODULE_SDK_DEPS=core,env
&gt; 
&gt; And then generate jscompiler command line based on these declarations.

I don&apos;t think this is the form and the script we will be using long term + there are bigger problems such as compiler.jar usage. I wouldn&apos;t invest into inventing declarative language for this use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456039</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-24 03:19:17 -0700</bug_when>
    <thetext>Committed r93701: &lt;http://trac.webkit.org/changeset/93701&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104848</attachid>
            <date>2011-08-23 08:22:39 -0700</date>
            <delta_ts>2011-08-23 09:58:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66776-20110823192236.patch</filename>
            <type>text/plain</type>
            <size>34952</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMGNiZDY4YjgxMTEzNjU2
Mjc5OTI3YzY3M2U0NTZhNGY4ODM1ZTNiLi40NDdjNjE1NWZiNzY4MDE3NWZlOTljZjcwNWZjODQz
MzQzOGY0ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTkgQEAKIDIwMTEtMDgtMjMgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGFubm90YXRlIGFuZCBwcmVwYXJlIGZvciBjb21waWxhdGlvbiBmaXJzdCAxNCBKYXZhU2NyaXB0
IGZpbGVzIHdpdGhpbiA0IG1vZHVsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02Njc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUuX2xvYWROb2RlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQucHJvdG90eXBlLl9jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2luc3BlY3RFbGVtZW50UmVxdWVzdGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyLnByb3RvdHlwZS5pbnNwZWN0RWxlbWVudFJl
cXVlc3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZS5faW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9PYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZS5hZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGUuaGFzRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BvcG92ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90
b3R5cGUuc2hvdyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5w
cm90b3R5cGUuZWRpdFNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2V0dGluZ3MucHJvdG90eXBlLmNyZWF0ZVNldHRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0
Q29udGV4dE1lbnUucHJvdG90eXBlLl9tZW51SXRlbU1vdXNlVXApOgorICAgICAgICAoLldlYklu
c3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90eXBlLl90cmlnZ2VyQWN0aW9uKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51LnByb3RvdHlwZS5fbWVudUtleURvd24p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qczoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanM6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1ZpZXcuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzOgorICAg
ICAgICAoSlNPTi5wYXJzZSk6CisgICAgICAgIChKU09OLnN0cmluZ2lmeSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgICgpOgorICAgICAgICAq
IGluc3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zOgorCisyMDExLTA4LTIzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKwogICAgICAgICBOb3QgcmV2aWV3ZWQu
IEFkZGluZyBhIGZpbGUgdGhhdCBzbGlwcGVkIGZyb20gcjkzNTg2LgogCiAgICAgICAgICogaW5z
cGVjdG9yL2dlbmVyYXRlLXByb3RvY29sLWV4dGVybnM6IEFkZGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCmluZGV4IDQwYzIxMTZiYjUyNzk4ZjNh
ODRlMTJiNzlkNTU0ZjI1NTdkODEwZGQuLmQ0MDMwNzA2ODMxM2U5OTkwMDUwMGFhOTcyYzU2OWQw
NTc5MzZmNWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5zaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1l
bmQuc2gKQEAgLTMwLDggKzMwLDI1IEBACiAjIENvbXBpbGVzIFdlYktpdCBXZWIgSW5zcGVjdG9y
IGZyb250LWVuZC4KIAogcHl0aG9uIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZS1w
cm90b2NvbC1leHRlcm5zIC1vIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcHJv
dG9jb2wtZXh0ZXJucy5qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KwogamF2YSAtamFyIH4vY2xvc3VyZS9jb21waWxlci5qYXIgLS1jb21waWxhdGlvbl9sZXZlbCBT
SU1QTEVfT1BUSU1JWkFUSU9OUyAtLXdhcm5pbmdfbGV2ZWwgVkVSQk9TRSAtLWxhbmd1YWdlX2lu
IEVDTUFTQ1JJUFQ1IC0tYWNjZXB0X2NvbnN0X2tleXdvcmQgXAotICAgLS1leHRlcm5zIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcyBcCi0gICAtLWV4dGVybnMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9wcm90b2NvbC1leHRlcm5zLmpzIFwK
LSAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMg
XAotICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5l
LmpzCisgICAgLS1leHRlcm5zIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0
ZXJucy5qcyBcCisgICAgLS1leHRlcm5zIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvcHJvdG9jb2wtZXh0ZXJucy5qcyBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfY29yZToyIFwK
KyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGll
cy5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90
cmVlb3V0bGluZS5qcyBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfZW52OjMgXAorICAgICAgICAt
LWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgXAorICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVXNlck1ldHJpY3Mu
anMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfc2RrOjQ6
anNtb2R1bGVfY29yZSxqc21vZHVsZV9lbnYgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIFwKKyAgICAgICAgLS1qcyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBcCisgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIFwKKyAg
ICAtLW1vZHVsZSBqc21vZHVsZV91aTo1OmpzbW9kdWxlX3NkayBcCisgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIFwKKyAgICAgICAgLS1qcyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BsYWNhcmQuanMgXAorICAgICAgICAt
LWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBcCisgICAg
ICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5q
cyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb2Z0
Q29udGV4dE1lbnUuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29udGV4dE1lbnUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnRleHRNZW51LmpzCmluZGV4IDU4ODEwZmIzMzdjMDAwYjA0NWNhOTNmZWY4MGIxOWI5NjQ3
Y2IzODYuLjQ4NmVhNWJjZDU5ZWU2MmM5YjdhZDZkNjMxOWE5NGVmYjY0M2M4MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcwpAQCAt
MjgsNiArMjgsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICovCiBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBmdW5jdGlvbigpIHsKICAgICB0aGlz
Ll9pdGVtcyA9IFtdOwogICAgIHRoaXMuX2hhbmRsZXJzID0ge307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCA1MmNhNTBlYWQ5YWFhNGQ2
NmJiN2Y5MDgxNWJlMDg3OGI1NmVkNmViLi4wZmJmZTk1MjgzNTZmMmEwZWE1NDM3ZTI0MTVkODU4
NzI3NjgwNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
QWdlbnQuanMKQEAgLTI5LDYgKzI5LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLkRPTU5vZGUgPSBmdW5jdGlvbihkb2Ms
IHBheWxvYWQpIHsKICAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBkb2M7CiAKQEAgLTM1MSw2ICsz
NTQsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgIH0KIH0KIAor
LyoqCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9CisgKiBAY29uc3RydWN0b3IK
KyAqLwogV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50ID0gZnVuY3Rpb24oZG9tQWdlbnQsIHBheWxv
YWQpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkRPTU5vZGUuY2FsbCh0aGlzLCB0aGlzLCBwYXlsb2Fk
KTsKQEAgLTM2MCw2ICszNjcsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50ID0gZnVuY3Rp
b24oZG9tQWdlbnQsIHBheWxvYWQpCiAKIFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlOwogCisvKioKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQGNvbnN0cnVjdG9yCisgKi8KIFdl
Ykluc3BlY3Rvci5ET01BZ2VudCA9IGZ1bmN0aW9uKCkgewogICAgIHRoaXMuX2lkVG9ET01Ob2Rl
ID0gbnVsbDsKICAgICB0aGlzLl9kb2N1bWVudCA9IG51bGw7CkBAIC0zNzMsNyArMzg0LDggQEAg
V2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cyA9IHsKICAgICBOb2RlSW5zZXJ0ZWQ6ICJOb2Rl
SW5zZXJ0ZWQiLAogICAgIE5vZGVSZW1vdmVkOiAiTm9kZVJlbW92ZWQiLAogICAgIERvY3VtZW50
VXBkYXRlZDogIkRvY3VtZW50VXBkYXRlZCIsCi0gICAgQ2hpbGROb2RlQ291bnRVcGRhdGVkOiAi
Q2hpbGROb2RlQ291bnRVcGRhdGVkIgorICAgIENoaWxkTm9kZUNvdW50VXBkYXRlZDogIkNoaWxk
Tm9kZUNvdW50VXBkYXRlZCIsCisgICAgSW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQ6ICJJbnNwZWN0
RWxlbWVudFJlcXVlc3RlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9
IHsKQEAgLTQ4OCw3ICs1MDAsNyBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0g
ewogICAgICAgICBkZWxldGUgdGhpcy5fbG9hZE5vZGVBdHRyaWJ1dGVzVGltZW91dDsKIAogICAg
ICAgICBmb3IgKHZhciBub2RlSWQgaW4gdGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHMpCi0gICAg
ICAgICAgICBET01BZ2VudC5nZXRBdHRyaWJ1dGVzKHBhcnNlSW50KG5vZGVJZCksIHRoaXMuX3dy
YXBDbGllbnRDYWxsYmFjayhjYWxsYmFjay5iaW5kKHRoaXMsIG5vZGVJZCkpKTsKKyAgICAgICAg
ICAgIERPTUFnZW50LmdldEF0dHJpYnV0ZXMocGFyc2VJbnQobm9kZUlkLCAxMCksIHRoaXMuX3dy
YXBDbGllbnRDYWxsYmFjayhjYWxsYmFjay5iaW5kKHRoaXMsIG5vZGVJZCkpKTsKICAgICAgICAg
dGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHMgPSB7fTsKICAgICB9LAogCkBAIC01MTAsNiArNTIy
LDkgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5y
ZXF1ZXN0RG9jdW1lbnQoKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBw
YXlsb2FkCisgICAgICovCiAgICAgX3NldERvY3VtZW50OiBmdW5jdGlvbihwYXlsb2FkKQogICAg
IHsKICAgICAgICAgdGhpcy5faWRUb0RPTU5vZGUgPSB7fTsKQEAgLTUyMyw2ICs1MzgsOSBAQCBX
ZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3VtZW50VXBk
YXRlZCwgdGhpcy5fZG9jdW1lbnQpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
eyp9IHBheWxvYWQKKyAgICAgKi8KICAgICBfc2V0RGV0YWNoZWRSb290OiBmdW5jdGlvbihwYXls
b2FkKQogICAgIHsKICAgICAgICAgdmFyIHJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUo
dGhpcy5fZG9jdW1lbnQsIHBheWxvYWQpOwpAQCAtNTc0LDEwICs1OTIsMTUgQEAgV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcGFyZW50Ll9yZW1vdmVDaGlsZChu
b2RlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkRPTUFnZW50LkV2ZW50cy5Ob2RlUmVtb3ZlZCwge25vZGU6bm9kZSwgcGFyZW50OnBhcmVudH0p
OwogICAgICAgICBkZWxldGUgdGhpcy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKLSAgICAgICAgaWYg
KFByZWZlcmVuY2VzLm5hdGl2ZUluc3RydW1lbnRhdGlvbkVuYWJsZWQpCi0gICAgICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cy5u
b2RlUmVtb3ZlZChub2RlKTsKICAgICB9LAogCisgICAgX2luc3BlY3RFbGVtZW50UmVxdWVzdGVk
OiBmdW5jdGlvbihub2RlSWQpCisgICAgeworICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9E
T01Ob2RlW25vZGVJZF07CisgICAgICAgIGlmIChub2RlKQorICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5JbnNwZWN0
RWxlbWVudFJlcXVlc3RlZCwgbm9kZSk7CisgICAgfSwKKyAgICAgCiAgICAgcGVyZm9ybVNlYXJj
aDogZnVuY3Rpb24ocXVlcnksIHNlYXJjaFJlc3VsdENvbGxlY3Rvciwgc2VhcmNoU3luY2hyb25v
dXNseSkKICAgICB7CiAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdENvbGxlY3RvciA9IHNlYXJj
aFJlc3VsdENvbGxlY3RvcjsKQEAgLTYwMyw2ICs2MjYsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTUFn
ZW50LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtET01BZ2VudC5EaXNwYXRjaGVyfQorICovCiBXZWJJbnNw
ZWN0b3IuRE9NRGlzcGF0Y2hlciA9IGZ1bmN0aW9uKGRvbUFnZW50KQogewogICAgIHRoaXMuX2Rv
bUFnZW50ID0gZG9tQWdlbnQ7CkBAIC02NTEsNyArNjc4LDcgQEAgV2ViSW5zcGVjdG9yLkRPTURp
c3BhdGNoZXIucHJvdG90eXBlID0gewogCiAgICAgaW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQ6IGZ1
bmN0aW9uKG5vZGVJZCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2Vk
Tm9kZShub2RlSWQpOworICAgICAgICB0aGlzLl9kb21BZ2VudC5faW5zcGVjdEVsZW1lbnRSZXF1
ZXN0ZWQobm9kZUlkKTsKICAgICB9LAogCiAgICAgc2VhcmNoUmVzdWx0czogZnVuY3Rpb24obm9k
ZUlkcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJNb2RlbC5qcwppbmRleCAwMjhiYWNjZmJlZDQ1NTA1MDcwNjMwNmZlMWJlMGU0MTYzZTZiOTMx
Li4wOGNjMDhmODY3MzM2YmIwZjVlYzhmYmY2ODBjNWI1YmMxNTE2MWM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC0y
OCw2ICsyOCw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKi8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsID0gZnVuY3Rpb24oKQogewogICAgIHRo
aXMuX2RlYnVnZ2VyUGF1c2VkRGV0YWlscyA9IHt9OwpAQCAtMzYsNiArMzksMTQgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckRlYnVnZ2VyRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0
Y2hlcih0aGlzKSk7CiB9CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1vZGVsLkxvY2F0aW9uID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuc2NyaXB0
SWQgPSBudWxsOworfQorCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMgPSB7CiAg
ICAgRGVidWdnZXJXYXNFbmFibGVkOiAiZGVidWdnZXItd2FzLWVuYWJsZWQiLAogICAgIERlYnVn
Z2VyV2FzRGlzYWJsZWQ6ICJkZWJ1Z2dlci13YXMtZGlzYWJsZWQiLApAQCAtMjEyLDYgKzIyMywx
MCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJFdmVudFR5cGVzID0gewogICAgIE5hdGl2ZUJyZWFr
cG9pbnQ6IDIKIH07CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7RGVi
dWdnZXJBZ2VudC5EaXNwYXRjaGVyfQorICovCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJEaXNwYXRj
aGVyID0gZnVuY3Rpb24oZGVidWdnZXJNb2RlbCkKIHsKICAgICB0aGlzLl9kZWJ1Z2dlck1vZGVs
ID0gZGVidWdnZXJNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAwZDA4NmY2NmZkN2ZlZGUyMTRhYzY1MzYzNzJh
NmMwMmVmNmUwNzNlLi5iM2VkZWU4MTZhY2E0YmEzMzFjNjRhMjhkNmIzZmQ4Yjg4NDk2MTY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCkBAIC0xMTksNyArMTE5LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwgPSBm
dW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2No
YXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5Eb2N1bWVudFVwZGF0
ZWQsIHRoaXMuX2RvY3VtZW50VXBkYXRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFn
ZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5DaGlsZE5v
ZGVDb3VudFVwZGF0ZWQsIHRoaXMuX2NoaWxkTm9kZUNvdW50VXBkYXRlZCwgdGhpcyk7Ci0KKyAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9N
QWdlbnQuRXZlbnRzLkluc3BlY3RFbGVtZW50UmVxdWVzdGVkLCB0aGlzLl9pbnNwZWN0RWxlbWVu
dFJlcXVlc3RlZCwgdGhpcyk7CiAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMgPSBbXTsK
IH0KIApAQCAtNDQxLDYgKzQ0MSwxMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5oYXNDaGlsZHJlbiA9IGV2ZW50LmRh
dGEuaGFzQ2hpbGROb2RlcygpOwogICAgIH0sCiAKKyAgICBfaW5zcGVjdEVsZW1lbnRSZXF1ZXN0
ZWQ6IGZ1bmN0aW9uKG5vZGUpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IudXBkYXRlRm9j
dXNlZE5vZGUobm9kZS5pZCk7CisgICAgfSwKKwogICAgIF91cGRhdGVNb2RpZmllZE5vZGVzU29v
bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCJfdXBkYXRlTW9kaWZpZWROb2Rlc1Rp
bWVvdXQiIGluIHRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggYWE2MTc3ODdjNWZhNTFkYTM2
ZWQ2YzVlNzcyNzk4NjNiYWQxZTFlZi4uNTdiMmI2MmQyNWFjYzk1NDVkOGEwYmJhYTdmNjMxMmE0
OTg5YjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtNDIyLDYgKzQyMiwxMCBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICByZXR1cm4gcG9wdWxhdGVkOworICAgIH0sCisKKyAgICBhZGp1c3RDb2xsYXBzZWRSYW5n
ZTogZnVuY3Rpb24oKQorICAgIHsKICAgICB9CiB9CiAKQEAgLTc2Myw3ICs3NjcsNyBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB1cGRhdGVDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLSAg
ICAgICAgdGhpcy5hZGp1c3RDb2xsYXBzZWRSYW5nZShmYWxzZSk7CisgICAgICAgIHRoaXMuYWRq
dXN0Q29sbGFwc2VkUmFuZ2UoKTsKIAogICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGls
ZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdOwogICAgICAgICBpZiAodGhpcy5yZXByZXNl
bnRlZE9iamVjdC5ub2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFICYmICghbGFzdENoaWxk
IHx8ICFsYXN0Q2hpbGQuX2VsZW1lbnRDbG9zZVRhZykpCkBAIC0xNTYyLDcgKzE1NjYsNyBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHNl
bGYpOwotICAgICAgICAgICAgcGFyZW50RWxlbWVudC5hZGp1c3RDb2xsYXBzZWRSYW5nZSh0cnVl
KTsKKyAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYWRqdXN0Q29sbGFwc2VkUmFuZ2UoKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlTm9kZShyZW1v
dmVOb2RlQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCmluZGV4IDg0ZWMz
ZDdhYmM5MmZkZjJiMjRiZDFkMjVhMzI0NTlhMTgyMzRmZmQuLjMzYjhjNDgxMzg0Yjk2YmUxM2Qy
YzgzMjkyNjE2MmUxOTE4ZDVmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKQEAg
LTI4LDggKzI4LDE4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK1dlYkluc3BlY3Rvci5QbGF0
Zm9ybUZsYXZvciA9IHsKKyAgICBXaW5kb3dzVmlzdGE6ICJ3aW5kb3dzLXZpc3RhIiwKKyAgICBN
YWNUaWdlcjogIm1hYy10aWdlciIsCisgICAgTWFjTGVvcGFyZDogIm1hYy1sZW9wYXJkIiwKKyAg
ICBNYWNTbm93TGVvcGFyZDogIm1hYy1zbm93bGVvcGFyZCIKK30KKwogaWYgKCF3aW5kb3cuSW5z
cGVjdG9yRnJvbnRlbmRIb3N0KSB7CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYklu
c3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViID0gZnVuY3Rpb24oKQogewogICAgIHRo
aXMuX2F0dGFjaGVkV2luZG93SGVpZ2h0ID0gMDsKQEAgLTE1MSw2ICsxNjEsNiBAQCBXZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUgPSB7CiAgICAgfQogfQog
Ci1JbnNwZWN0b3JGcm9udGVuZEhvc3QgPSBuZXcgV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIoKTsKK3ZhciBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPSBuZXcgV2ViSW5zcGVj
dG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIoKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCmluZGV4IDJi
Y2YzZDFiMTUxOTA3ZjQwNGI1NzllZDc0ODY0MDJkOTI3YmQ1NmYuLjY0OWFiZjM1YWNjZjkyZWEy
ZWQ3MzM3ZGYxM2Q2N2JiMjdjZjFkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMKQEAgLTI3LDYgKzI3LDkgQEAK
ICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQgPSBmdW5jdGlvbigpCiB7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcwppbmRleCA1M2MyMGUyOWU1ZDY2ZmZhNTRi
MzQxODk4MGZhNGJjYmI0NDM3NDNiLi41NmU2YzNkYzljODQ1OGNjNDBlZmVjNjExMGU3MzUzZjFh
NTBmNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09i
amVjdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5q
cwpAQCAtMjMsMjIgKzIzLDI1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5PYmplY3QgPSBmdW5jdGlvbigpIHsKIH0KIAog
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgYWRkRXZlbnRMaXN0ZW5lcjog
ZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKICAgICB7Ci0gICAgICAg
IGlmICghKCJfbGlzdGVuZXJzIiBpbiB0aGlzKSkKKyAgICAgICAgaWYgKCF0aGlzLl9saXN0ZW5l
cnMpCiAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTsKLSAgICAgICAgaWYgKCEoZXZl
bnRUeXBlIGluIHRoaXMuX2xpc3RlbmVycykpCisgICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJz
W2V2ZW50VHlwZV0pCiAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSA9IFtd
OwogICAgICAgICB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXS5wdXNoKHsgdGhpc09iamVjdDog
dGhpc09iamVjdCwgbGlzdGVuZXI6IGxpc3RlbmVyIH0pOwogICAgIH0sCiAKICAgICByZW1vdmVF
dmVudExpc3RlbmVyOiBmdW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQog
ICAgIHsKLSAgICAgICAgaWYgKCEoIl9saXN0ZW5lcnMiIGluIHRoaXMpIHx8ICEoZXZlbnRUeXBl
IGluIHRoaXMuX2xpc3RlbmVycykpCisgICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJzIHx8ICF0
aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
dmFyIGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdOwogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7ICsraSkgewpAQCAtNTksMTQgKzYyLDE0
IEBAIFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogCiAgICAgaGFzRXZlbnRMaXN0
ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSkKICAgICB7Ci0gICAgICAgIGlmICghKCJfbGlzdGVu
ZXJzIiBpbiB0aGlzKSB8fCAhKGV2ZW50VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpKQorICAgICAg
ICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAK
ICAgICBkaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnM6IGZ1bmN0aW9uKGV2ZW50VHlwZSwgZXZlbnRE
YXRhKQogICAgIHsKLSAgICAgICAgaWYgKCEoIl9saXN0ZW5lcnMiIGluIHRoaXMpIHx8ICEoZXZl
bnRUeXBlIGluIHRoaXMuX2xpc3RlbmVycykpCisgICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJz
IHx8ICF0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB2YXIgc3RvcHBlZFByb3BhZ2F0aW9uID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcwppbmRleCAyMmYyZTI4ZjJjOTEyYWQxNmQ4MDIz
MWYyYWI1YTNkMjFhMjAyZDk2Li4wY2M1ZDE3ZDBlYzAzODdhYmIxZWYxMWMwZjZhNTQwNmRkMTFl
ZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKQEAg
LTM2LDcgKzM2LDcgQEAgV2ViSW5zcGVjdG9yLlBhbmVsID0gZnVuY3Rpb24obmFtZSkKIAogICAg
IHRoaXMuX3Nob3J0Y3V0cyA9IHt9OwogCi0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmluc3Rh
bGxBcHBsaWNhdGlvblNldHRpbmcodGhpcy5fc2lkZWJhcldpZHRoU2V0dGluZ05hbWUoKSwgdW5k
ZWZpbmVkKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3NbdGhpcy5fc2lkZWJhcldpZHRoU2V0
dGluZ05hbWUoKV0gPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZyh0aGlzLl9z
aWRlYmFyV2lkdGhTZXR0aW5nTmFtZSgpLCB1bmRlZmluZWQpOwogfQogCiAvLyBTaG91bGQgYnkg
aW4gc3luYyB3aXRoIHN0eWxlIGRlY2xhcmF0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qcwppbmRleCA5YTQxNWM0YjE4NTRkMjZiOGFhMTdhNTBl
M2E0NTMzYTYyZWQyNjg2Li43ZjUxZTQ3ODcxNTU1ODIwYmI0NjdmY2JmMTZkYTZmNzliZDhkOTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BsYWNhcmQu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QbGFjYXJkLmpzCkBA
IC0yMyw2ICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKi8KIFdlYkluc3BlY3Rvci5QbGFjYXJkID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxl
KQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qb3BvdmVyLmpzCmluZGV4IGY1
YTczZTMwMDE5NTMwZDhiZDI4NDNiY2Q0YTU5OTE4MmViMTc3ZWYuLjU2YTVhZGI5MjJhYWQ5M2E4
NmU0NmVkYWZmNTc1MTJhYzNjNWJkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BvcG92ZXIuanMKQEAgLTI4LDYgKzI4LDEwIEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge0VsZW1lbnR9IGNvbnRlbnRF
bGVtZW50CisgKi8KIFdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24oY29udGVudEVsZW1l
bnQpCiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CkBAIC01NCw4ICs1OCw4IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gVGVtcG9yYXJpbHkgYXR0YWNoIGluIG9yZGVyIHRvIG1lYXN1cmUgcHJlZmVycmVk
IGRpbWVuc2lvbnMuCiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQucG9zaXRpb25BdCgwLCAw
KTsKICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50
KTsKLSAgICAgICAgdmFyIHByZWZlcnJlZFdpZHRoID0gcHJlZmVycmVkV2lkdGggfHwgdGhpcy5j
b250ZW50RWxlbWVudC5vZmZzZXRXaWR0aDsKLSAgICAgICAgdmFyIHByZWZlcnJlZEhlaWdodCA9
IHByZWZlcnJlZEhlaWdodCB8fCB0aGlzLmNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAg
ICAgICAgcHJlZmVycmVkV2lkdGggPSBwcmVmZXJyZWRXaWR0aCB8fCB0aGlzLmNvbnRlbnRFbGVt
ZW50Lm9mZnNldFdpZHRoOworICAgICAgICBwcmVmZXJyZWRIZWlnaHQgPSBwcmVmZXJyZWRIZWln
aHQgfHwgdGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CiAKICAgICAgICAgdGhpcy5f
Y29udGVudERpdi5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRFbGVtZW50KTsKICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnREaXYpOwpAQCAtMTU2LDYgKzE2MCw5
IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5Qb3BvdmVySGVscGVyID0gZnVuY3Rp
b24ocGFuZWxFbGVtZW50LCBnZXRBbmNob3IsIHNob3dQb3B1cCwgc2hvd09uQ2xpY2ssIG9uSGlk
ZSkKIHsKICAgICB0aGlzLl9wYW5lbEVsZW1lbnQgPSBwYW5lbEVsZW1lbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRl
eCA3M2VlN2FiYjM2MjkwODI1NTJmMzg3ODllMWNjZTIyZTRmNmM5ZjVjLi40ZGNkNDMzY2Q2YmIw
MDA0Zjc5NTVmNTdmY2UwOTA3MThlYWNmOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKQEAgLTMxLDcgKzMxLDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywgInJlc291cmNlcyIpOwogCi0gICAgV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInJlc291cmNlc0xhc3RT
ZWxlY3RlZEl0ZW0iLCB7fSk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xh
c3RTZWxlY3RlZEl0ZW0gPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygicmVz
b3VyY2VzTGFzdFNlbGVjdGVkSXRlbSIsIHt9KTsKIAogICAgIHRoaXMuY3JlYXRlU2lkZWJhcigp
OwogICAgIHRoaXMuc2lkZWJhckVsZW1lbnQuYWRkU3R5bGVDbGFzcygib3V0bGluZS1kaXNjbG9z
dXJlIik7CkBAIC05ODMsNyArOTgzLDcgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oc3RvcmFnZVBhbmVsLCBjYXRlZ29yeU5hbWUsIHMKIHsKICAg
ICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHN0b3JhZ2VQ
YW5lbCwgbnVsbCwgY2F0ZWdvcnlOYW1lLCBpY29uQ2xhc3NlcywgdHJ1ZSwgbm9JY29uKTsKICAg
ICB0aGlzLl9leHBhbmRlZFNldHRpbmdLZXkgPSAicmVzb3VyY2VzIiArIHNldHRpbmdzS2V5ICsg
IkV4cGFuZGVkIjsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuaW5zdGFsbEFwcGxpY2F0aW9u
U2V0dGluZyh0aGlzLl9leHBhbmRlZFNldHRpbmdLZXksIHNldHRpbmdzS2V5ID09PSAiRnJhbWVz
Iik7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzW3RoaXMuX2V4cGFuZGVkU2V0dGluZ0tleV0g
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZyh0aGlzLl9leHBhbmRlZFNldHRp
bmdLZXksIHNldHRpbmdzS2V5ID09PSAiRnJhbWVzIik7CiAgICAgdGhpcy5fY2F0ZWdvcnlOYW1l
ID0gY2F0ZWdvcnlOYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0LmpzCmluZGV4IDlkM2ViNGM1ZjZlMjljNTNkMmZkNzUzZTZjODQwYjhkN2E1NDM0
MDQuLmIzNmUwN2E0ZTI5YzQ3NDVlNjJjYTRjNmIwMDYxNjNkYzE4MGM2OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCkBAIC0yMyw2ICsyMyw5IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYklu
c3BlY3Rvci5TY3JpcHQgPSBmdW5jdGlvbihzY3JpcHRJZCwgc291cmNlVVJMLCBzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGVycm9yTGluZSwgZXJyb3JNZXNzYWdl
LCBpc0NvbnRlbnRTY3JpcHQpCiB7CiAgICAgdGhpcy5zY3JpcHRJZCA9IHNjcmlwdElkOwpAQCAt
NjAsNiArNjMsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICB0aGlzLl9zb3VyY2UgPSBuZXdTb3VyY2U7CiAgICAgICAgICAgICBjYWxsYmFjayhl
cnJvciwgY2FsbEZyYW1lcyk7CiAgICAgICAgIH0KLSAgICAgICAgRGVidWdnZXJBZ2VudC5zZXRT
Y3JpcHRTb3VyY2UodGhpcy5zY3JpcHRJZCwgbmV3U291cmNlLCBkaWRFZGl0U2NyaXB0U291cmNl
LmJpbmQodGhpcykpOworICAgICAgICBEZWJ1Z2dlckFnZW50LnNldFNjcmlwdFNvdXJjZSh0aGlz
LnNjcmlwdElkLCBuZXdTb3VyY2UsIHVuZGVmaW5lZCwgZGlkRWRpdFNjcmlwdFNvdXJjZS5iaW5k
KHRoaXMpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDVhODQxZWZmYWVjNTFlZDNkOGQ3MzBkYzI4NzZl
NWNlODZlMzA3MzkuLjEyODVkM2FmNWMzMDMwMTRiMGZlNmJhMWIxZWFlYmM1Nzg4NDAxZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzCkBAIC0yOCw2ICsyOCw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlv
bihwcmVzZW50YXRpb25Nb2RlbCkKIHsKICAgICBXZWJJbnNwZWN0b3IuUGFuZWwuY2FsbCh0aGlz
LCAic2NyaXB0cyIpOwogCisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnBhdXNlT25FeGNlcHRp
b25TdGF0ZVN0cmluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJwYXVz
ZU9uRXhjZXB0aW9uU3RhdGVTdHJpbmciLCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlBhdXNl
T25FeGNlcHRpb25zU3RhdGUuRG9udFBhdXNlT25FeGNlcHRpb25zKTsKKwogICAgIHRoaXMuX3By
ZXNlbnRhdGlvbk1vZGVsID0gcHJlc2VudGF0aW9uTW9kZWw7CiAKICAgICB0aGlzLnJlZ2lzdGVy
U2hvcnRjdXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qcwppbmRleCBmMTc1OGYzNTg3NTNjYmRjNGY0MmRhZTBjY2I3ODBlZGMzZmIwMzY1Li4y
NTcxZTI2MjI3Y2Y5OWNkNzg1ZTM0YTgwY2IwNTI3NjdhMjcwNGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTU4LDM0ICs1OCwzNiBA
QCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgc2hvd05ldHdvcmtQYW5lbEluaXRpYXRvckNvbHVt
bjogZmFsc2UKIH0KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlNl
dHRpbmdzID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2V2ZW50U3VwcG9ydCA9IG5ldyBXZWJJ
bnNwZWN0b3IuT2JqZWN0KCk7CiAKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmco
ImNvbG9yRm9ybWF0IiwgImhleCIpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGlu
ZygiY29uc29sZUhpc3RvcnkiLCBbXSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0
aW5nKCJkZWJ1Z2dlckVuYWJsZWQiLCBmYWxzZSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRp
b25TZXR0aW5nKCJkb21Xb3JkV3JhcCIsIHRydWUpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0
aW9uU2V0dGluZygicHJvZmlsZXJFbmFibGVkIiwgZmFsc2UpOwotICAgIHRoaXMuaW5zdGFsbEFw
cGxpY2F0aW9uU2V0dGluZygiZXZlbnRMaXN0ZW5lcnNGaWx0ZXIiLCAiYWxsIik7Ci0gICAgdGhp
cy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJsYXN0QWN0aXZlUGFuZWwiLCAiZWxlbWVudHMi
KTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImxhc3RWaWV3ZWRTY3JpcHRG
aWxlIiwgImFwcGxpY2F0aW9uIik7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5n
KCJtb25pdG9yaW5nWEhSRW5hYmxlZCIsIGZhbHNlKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNh
dGlvblNldHRpbmcoInByZXNlcnZlQ29uc29sZUxvZyIsIGZhbHNlKTsKLSAgICB0aGlzLmluc3Rh
bGxBcHBsaWNhdGlvblNldHRpbmcoInBhdXNlT25FeGNlcHRpb25TdGF0ZVN0cmluZyIsIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwuUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZS5Eb250UGF1c2VPbkV4
Y2VwdGlvbnMpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygicmVzb3VyY2Vz
TGFyZ2VSb3dzIiwgdHJ1ZSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJy
ZXNvdXJjZXNTb3J0T3B0aW9ucyIsIHt0aW1lT3B0aW9uOiAicmVzcG9uc2VUaW1lIiwgc2l6ZU9w
dGlvbjogInRyYW5zZmVyU2l6ZSJ9KTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRp
bmcoInJlc291cmNlVmlld1RhYiIsICJwcmV2aWV3Iik7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGlj
YXRpb25TZXR0aW5nKCJzaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMiLCBmYWxz
ZSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJzaG93VXNlckFnZW50U3R5
bGVzIiwgdHJ1ZSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJ3YXRjaEV4
cHJlc3Npb25zIiwgW10pOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygiYnJl
YWtwb2ludHMiLCBbXSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJldmVu
dExpc3RlbmVyQnJlYWtwb2ludHMiLCBbXSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25T
ZXR0aW5nKCJkb21CcmVha3BvaW50cyIsIFtdKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlv
blNldHRpbmcoInhockJyZWFrcG9pbnRzIiwgW10pOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0
aW9uU2V0dGluZygid29ya2VySW5zcGVjdGlvbkVuYWJsZWQiLCBbXSk7Ci0gICAgdGhpcy5pbnN0
YWxsQXBwbGljYXRpb25TZXR0aW5nKCJjYWNoZURpc2FibGVkIiwgZmFsc2UpOwotICAgIHRoaXMu
aW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygic2hvd1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsKKyAg
ICB0aGlzLmNvbG9yRm9ybWF0ID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJjb2xvckZvcm1hdCIsICJo
ZXgiKTsKKyAgICB0aGlzLmNvbnNvbGVIaXN0b3J5ID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJjb25z
b2xlSGlzdG9yeSIsIFtdKTsKKyAgICB0aGlzLmRlYnVnZ2VyRW5hYmxlZCA9IHRoaXMuY3JlYXRl
U2V0dGluZygiZGVidWdnZXJFbmFibGVkIiwgZmFsc2UpOworICAgIHRoaXMuZG9tV29yZFdyYXAg
PSB0aGlzLmNyZWF0ZVNldHRpbmcoImRvbVdvcmRXcmFwIiwgdHJ1ZSk7CisgICAgdGhpcy5wcm9m
aWxlckVuYWJsZWQgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInByb2ZpbGVyRW5hYmxlZCIsIGZhbHNl
KTsKKyAgICB0aGlzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJl
dmVudExpc3RlbmVyc0ZpbHRlciIsICJhbGwiKTsKKyAgICB0aGlzLmxhc3RBY3RpdmVQYW5lbCA9
IHRoaXMuY3JlYXRlU2V0dGluZygibGFzdEFjdGl2ZVBhbmVsIiwgImVsZW1lbnRzIik7CisgICAg
dGhpcy5sYXN0Vmlld2VkU2NyaXB0RmlsZSA9IHRoaXMuY3JlYXRlU2V0dGluZygibGFzdFZpZXdl
ZFNjcmlwdEZpbGUiLCAiYXBwbGljYXRpb24iKTsKKyAgICB0aGlzLm1vbml0b3JpbmdYSFJFbmFi
bGVkID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJtb25pdG9yaW5nWEhSRW5hYmxlZCIsIGZhbHNlKTsK
KyAgICB0aGlzLnByZXNlcnZlQ29uc29sZUxvZyA9IHRoaXMuY3JlYXRlU2V0dGluZygicHJlc2Vy
dmVDb25zb2xlTG9nIiwgZmFsc2UpOworICAgIHRoaXMucmVzb3VyY2VzTGFyZ2VSb3dzID0gdGhp
cy5jcmVhdGVTZXR0aW5nKCJyZXNvdXJjZXNMYXJnZVJvd3MiLCB0cnVlKTsKKyAgICB0aGlzLnJl
c291cmNlc1NvcnRPcHRpb25zID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJyZXNvdXJjZXNTb3J0T3B0
aW9ucyIsIHt0aW1lT3B0aW9uOiAicmVzcG9uc2VUaW1lIiwgc2l6ZU9wdGlvbjogInRyYW5zZmVy
U2l6ZSJ9KTsKKyAgICB0aGlzLnJlc291cmNlVmlld1RhYiA9IHRoaXMuY3JlYXRlU2V0dGluZygi
cmVzb3VyY2VWaWV3VGFiIiwgInByZXZpZXciKTsKKyAgICB0aGlzLnNob3dJbmhlcml0ZWRDb21w
dXRlZFN0eWxlUHJvcGVydGllcyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd0luaGVyaXRlZENv
bXB1dGVkU3R5bGVQcm9wZXJ0aWVzIiwgZmFsc2UpOworICAgIHRoaXMuc2hvd1VzZXJBZ2VudFN0
eWxlcyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1VzZXJBZ2VudFN0eWxlcyIsIHRydWUpOwor
ICAgIHRoaXMud2F0Y2hFeHByZXNzaW9ucyA9IHRoaXMuY3JlYXRlU2V0dGluZygid2F0Y2hFeHBy
ZXNzaW9ucyIsIFtdKTsKKyAgICB0aGlzLmJyZWFrcG9pbnRzID0gdGhpcy5jcmVhdGVTZXR0aW5n
KCJicmVha3BvaW50cyIsIFtdKTsKKyAgICB0aGlzLmV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyA9
IHRoaXMuY3JlYXRlU2V0dGluZygiZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzIiwgW10pOworICAg
IHRoaXMuZG9tQnJlYWtwb2ludHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImRvbUJyZWFrcG9pbnRz
IiwgW10pOworICAgIHRoaXMueGhyQnJlYWtwb2ludHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInho
ckJyZWFrcG9pbnRzIiwgW10pOworICAgIHRoaXMud29ya2VySW5zcGVjdGlvbkVuYWJsZWQgPSB0
aGlzLmNyZWF0ZVNldHRpbmcoIndvcmtlckluc3BlY3Rpb25FbmFibGVkIiwgW10pOworICAgIHRo
aXMuY2FjaGVEaXNhYmxlZCA9IHRoaXMuY3JlYXRlU2V0dGluZygiY2FjaGVEaXNhYmxlZCIsIGZh
bHNlKTsKKyAgICB0aGlzLnNob3dTY3JpcHRGb2xkZXJzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJz
aG93U2NyaXB0Rm9sZGVycyIsIHRydWUpOwogCiAgICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55
IGJyZWFrcG9pbnRzIGluIGEgc3RvcmFnZSwgaXQgaXMgbGlrZWx5IGR1ZSB0byBhIHJlY2VudCBi
dWcgdGhhdCBjYXVzZWQKICAgICAvLyBwZXJpb2RpY2FsIGJyZWFrcG9pbnRzIGR1cGxpY2F0aW9u
IGxlYWRpbmcgdG8gaW5zcGVjdG9yIHNsb3duZXNzLgpAQCAtOTQsMTQgKzk2LDE4IEBAIFdlYklu
c3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLlNldHRpbmdz
LnByb3RvdHlwZSA9IHsKLSAgICBpbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nOiBmdW5jdGlvbihr
ZXksIGRlZmF1bHRWYWx1ZSkKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
U2V0dGluZ30KKyAgICAgKi8KKyAgICBjcmVhdGVTZXR0aW5nOiBmdW5jdGlvbihrZXksIGRlZmF1
bHRWYWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChrZXkgaW4gdGhpcykKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdGhpc1trZXldID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKGtleSwg
ZGVmYXVsdFZhbHVlLCB0aGlzLl9ldmVudFN1cHBvcnQpOworICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5TZXR0aW5nKGtleSwgZGVmYXVsdFZhbHVlLCB0aGlzLl9ldmVudFN1cHBvcnQp
OwogICAgIH0KIH0KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlNl
dHRpbmcgPSBmdW5jdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUsIGV2ZW50U3VwcG9ydCkKIHsKICAg
ICB0aGlzLl9uYW1lID0gbmFtZTsKQEAgLTE1MCwzICsxNTYsNSBAQCBXZWJJbnNwZWN0b3IuU2V0
dGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2V2ZW50U3VwcG9ydC5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnModGhpcy5fbmFtZSwgdmFsdWUpOwogICAgIH0KIH0KKworV2ViSW5zcGVj
dG9yLnNldHRpbmdzID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb2Z0Q29udGV4dE1lbnUuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcwppbmRl
eCAyNThhMWY3NGJiOTQ5YWNiMWExYmM2OWFmNTIyMjZjYjU1ZDQ1NzJjLi41NjA5YzdlZTMwNjAy
ZDc5YzNlOTk3NjNjYzQ1ZDlhMDQ4OGNhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcwpAQCAtMjUsNiArMjUsOSBA
QAogCiBpZiAoIUluc3BlY3RvckZyb250ZW5kSG9zdC5zaG93Q29udGV4dE1lbnUpIHsKIAorLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudSA9IGZ1
bmN0aW9uKGl0ZW1zKQogewogICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7CkBAIC0xMjcsMTAgKzEz
MCwxMCBAQCBXZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKIAogICAg
IF9tZW51SXRlbU1vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5f
dHJpZ2dlckFjdGlvbihldmVudC50YXJnZXQpOworICAgICAgICB0aGlzLl90cmlnZ2VyQWN0aW9u
KGV2ZW50LnRhcmdldCwgZXZlbnQpOwogICAgIH0sCiAKLSAgICBfdHJpZ2dlckFjdGlvbjogZnVu
Y3Rpb24obWVudUl0ZW1FbGVtZW50KQorICAgIF90cmlnZ2VyQWN0aW9uOiBmdW5jdGlvbihtZW51
SXRlbUVsZW1lbnQsIGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGlzY2FyZE1lbnUoZXZl
bnQpOwogICAgICAgICBpZiAodHlwZW9mIG1lbnVJdGVtRWxlbWVudC5fYWN0aW9uSWQgIT09ICJ1
bmRlZmluZWQiKSB7CkBAIC0xOTEsNyArMTk0LDcgQEAgV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0
TWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2gKICAgICAgICAg
Y2FzZSAiVSswMDIwIjogLy8gU3BhY2UKICAgICAgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRl
ZE1lbnVJdGVtRWxlbWVudCkKLSAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyQWN0aW9uKHRo
aXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl90
cmlnZ2VyQWN0aW9uKHRoaXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50LCBldmVudCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFi
YmVkUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFu
ZS5qcwppbmRleCA1N2MxOTU0OTI5NzQzNGZhNjExYzhhNTRkMTAzNDViMWE5OTdkZTYyLi40ZmVm
NWQ2ZmE2MTBkOTAyOTZkMGIwMDA4YzAwMmExYWM2YmJhOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCkBAIC0yOCw2ICsyOCwxMCBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
Vmlld30KKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlzLCBlbGVt
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFByb21wdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21w
dC5qcwppbmRleCAzNmEzOGNjY2I2ZTVmYmY3YjZiMjA5ZmIxYzQ2YTgzMTQ2NjIzZTQ1Li5iMDAx
NzU1OTdlNWMyMjkwZTczNmY3YjAxOGJlN2U1MWRkYzMwZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCkBAIC0yNiw2ICsyNiw5IEBA
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3Bl
Y3Rvci5UZXh0UHJvbXB0ID0gZnVuY3Rpb24oZWxlbWVudCwgY29tcGxldGlvbnMsIHN0b3BDaGFy
YWN0ZXJzLCBvbWl0SGlzdG9yeSkKIHsKICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Vc2VyTWV0cmljcy5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVXNlck1ldHJpY3MuanMKaW5k
ZXggYzJiYjA1MGM1OWI2Y2M4YjgzZDc1YzZiMTM5MzUyNGEzOGU0N2NkNy4uZDRmOTllNmJlYmJh
Mzk0NzljN2RkY2QwNmQwNzlhYTMwY2JlNDYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1VzZXJNZXRyaWNzLmpzCkBAIC0yOCw2ICsyOCw5IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rv
ci5Vc2VyTWV0cmljcyA9IGZ1bmN0aW9uKCkKIHsKICAgICBmb3IgKHZhciBhY3Rpb25OYW1lIGlu
IFdlYkluc3BlY3Rvci5Vc2VyTWV0cmljcy5fQWN0aW9uQ29kZXMpIHsKQEAgLTkzLDYgKzk2LDkg
QEAgV2ViSW5zcGVjdG9yLlVzZXJNZXRyaWNzLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5Vc2VyTWV0cmljcy5fUmVjb3Jk
ZXIgPSBmdW5jdGlvbihhY3Rpb25Db2RlKQogewogICAgIHRoaXMuX2FjdGlvbkNvZGUgPSBhY3Rp
b25Db2RlOwpAQCAtMTA0LDMgKzExMCw1IEBAIFdlYkluc3BlY3Rvci5Vc2VyTWV0cmljcy5fUmVj
b3JkZXIucHJvdG90eXBlID0gewogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QucmVjb3Jk
QWN0aW9uVGFrZW4odGhpcy5fYWN0aW9uQ29kZSk7CiAgICAgfQogfQorCitXZWJJbnNwZWN0b3Iu
dXNlck1ldHJpY3MgPSBuZXcgV2ViSW5zcGVjdG9yLlVzZXJNZXRyaWNzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ZpZXcuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ZpZXcuanMKaW5kZXggZjk4M2Q4OTE3YWRmODhlODU3
M2YyMTNmZTlhNjM4NDczMTI4ZWJmZS4uYTUyODRiZWZmOTA4NmE3YjA4ZWU3MDE1NGFhMThiNGMy
YTg4NGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9W
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVmlldy5qcwpA
QCAtMjQsNiArMjQsMTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBwYXJhbSB7RWxlbWVudD19IGVsZW1lbnQKKyAqLwogV2ViSW5zcGVjdG9yLlZp
ZXcgPSBmdW5jdGlvbihlbGVtZW50KQogewogICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggNGMzNzdmNDI0OTMzMzllN2ZjNmE3ZTQwYTI2
ZmZmZGUzNmNlYjY0Ni4uZjM0NTE1MTNkZWQyNDc5NWJhMDliZDU2NDg5OWQ0NzdmZGMyYWM5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpAQCAt
MzMsMyArMzMsMTEgQEAgY29uc29sZS53YXJuID0gZnVuY3Rpb24obWVzc2FnZSkge30KIAogdmFy
IFdlYkluc3BlY3RvciA9IHt9CiB2YXIgSW5zcGVjdG9yQmFja2VuZCA9IHt9CisKK3ZhciBKU09O
ID0ge30KKy8qKiBAcGFyYW0ge3N0cmluZ30gc3RyICovCitKU09OLnBhcnNlID0gZnVuY3Rpb24o
c3RyKSB7fQorCisvKiogQHBhcmFtIHtPYmplY3R9IG9iaiAqLworLyoqIEByZXR1cm4ge3N0cmlu
Z30gKi8KK0pTT04uc3RyaW5naWZ5ID0gZnVuY3Rpb24oc3RyKSB7fQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAzZTkxYTdjZjQ0NGJm
YzI1YzM5ZDYwNTA1NTEzMTNkZjI3Y2U3NTkzLi5iODFiYTdlNmRkNmM0OGVjMDU1ZDIzODliYjNj
Y2Q1NjM2OWVmN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwpAQCAtNDMzLDE0ICs0MzMsNyBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewog
ICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yID0gewotICAgIFdpbmRvd3NW
aXN0YTogIndpbmRvd3MtdmlzdGEiLAotICAgIE1hY1RpZ2VyOiAibWFjLXRpZ2VyIiwKLSAgICBN
YWNMZW9wYXJkOiAibWFjLWxlb3BhcmQiLAotICAgIE1hY1Nub3dMZW9wYXJkOiAibWFjLXNub3ds
ZW9wYXJkIgotfTsKLQotKGZ1bmN0aW9uIHBhcnNlUXVlcnlQYXJhbWV0ZXJzKCkKK3soZnVuY3Rp
b24gcGFyc2VRdWVyeVBhcmFtZXRlcnMoKQogewogICAgIFdlYkluc3BlY3Rvci5xdWVyeVBhcmFt
c09iamVjdCA9IHt9OwogICAgIHZhciBxdWVyeVBhcmFtcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFy
Y2g7CkBAIC00NTEsNyArNDQ0LDcgQEAgV2ViSW5zcGVjdG9yLlBsYXRmb3JtRmxhdm9yID0gewog
ICAgICAgICB2YXIgcGFpciA9IHBhcmFtc1tpXS5zcGxpdCgiPSIpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IucXVlcnlQYXJhbXNPYmplY3RbcGFpclswXV0gPSBwYWlyWzFdOwogICAgIH0KLX0pKCk7
Cit9KSgpO30KIAogV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKQEAgLTQ4NSw5
ICs0NzgsNiBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIGlm
IChXZWJJbnNwZWN0b3Iuc29ja2V0KQogICAgICAgICBkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xh
c3MoInJlbW90ZSIpOwogCi0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5ncygpOwotICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVXNlck1ldHJpY3MoKTsKLQogICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7
CiAKICAgICAvLyBzZXQgb3JkZXIgb2Ygc29tZSBzZWN0aW9ucyBleHBsaWNpdGx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtcHJvdG9jb2wtZXh0ZXJucyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zCmluZGV4
IGMwYWVlNjI5YzUxYmQyZWY0N2NjNjI4Y2ZiNzAyNDQ5MTlkYjEzMTAuLjM1ZmY3NGVkNTNhZDA0
ZGVlOGZiZjk3MGJmMDc5NGVmZjgwOTE1OTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zCkBAIC0xMDksMTMgKzEwOSwxMyBAQCBm
b3IgZG9tYWluIGluIGpzb25fYXBpOgogICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgib3B0X2Nh
bGxiYWNrIik7CiAgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgiJXNBZ2VudC4lcyA9IGZ1
bmN0aW9uKCVzKSB7fVxuIiAlIChkb21haW5fbmFtZSwgY29tbWFuZFsibmFtZSJdLCAiLCAiLmpv
aW4ocGFyYW1zKSkpCiAKLSAgICBvdXRwdXRfZmlsZS53cml0ZSgiXG5cblxuLyoqXG4gKiBAaW50
ZXJmYWNlXG4gKi9cbiIpCisgICAgb3V0cHV0X2ZpbGUud3JpdGUoIi8qKiBAaW50ZXJmYWNlICov
XG4iKQogICAgIG91dHB1dF9maWxlLndyaXRlKCIlc0FnZW50LkRpc3BhdGNoZXIgPSBmdW5jdGlv
bigpIHt9O1xuIiAlIGRvbWFpbl9uYW1lKQogICAgIGlmICJldmVudHMiIGluIGRvbWFpbjoKICAg
ICAgICAgZm9yIGV2ZW50IGluIGRvbWFpblsiZXZlbnRzIl06Ci0gICAgICAgICAgICBvdXRwdXRf
ZmlsZS53cml0ZSgiXG4vKipcbiIpCiAgICAgICAgICAgICBwYXJhbXMgPSBbXQogICAgICAgICAg
ICAgaWYgKCJwYXJhbWV0ZXJzIiBpbiBldmVudCk6CisgICAgICAgICAgICAgICAgb3V0cHV0X2Zp
bGUud3JpdGUoIi8qKlxuIikKICAgICAgICAgICAgICAgICBmb3IgcGFyYW0gaW4gZXZlbnRbInBh
cmFtZXRlcnMiXToKICAgICAgICAgICAgICAgICAgICAgaWYgKCJvcHRpb25hbCIgaW4gcGFyYW0p
OgogICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgib3B0XyVzIiAlIHBhcmFt
WyJuYW1lIl0pCkBAIC0xMjMsNiArMTIzLDggQEAgZm9yIGRvbWFpbiBpbiBqc29uX2FwaToKICAg
ICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5h
cHBlbmQocGFyYW1bIm5hbWUiXSkKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxl
LndyaXRlKCIgKiBAcGFyYW0geyVzfSAlc1xuIiAlIChwYXJhbV90eXBlKGRvbWFpbl9uYW1lLCBw
YXJhbSksIHBhcmFtWyJuYW1lIl0pKQotICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIiAq
L1xuIikKKyAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgiICovXG4iKQogICAgICAg
ICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIiVzQWdlbnQuRGlzcGF0Y2hlci5wcm90b3R5cGUuJXMg
PSBmdW5jdGlvbiglcykge307XG4iICUgKGRvbWFpbl9uYW1lLCBldmVudFsibmFtZSJdLCAiLCAi
LmpvaW4ocGFyYW1zKSkpOworICAgIG91dHB1dF9maWxlLndyaXRlKCIvKipcbiAqIEBwYXJhbSB7
JXNBZ2VudC5EaXNwYXRjaGVyfSBkaXNwYXRjaGVyXG4gKi9cbiIgJSBkb21haW5fbmFtZSkKKyAg
ICBvdXRwdXRfZmlsZS53cml0ZSgiSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlciVzRGlzcGF0Y2hl
ciA9IGZ1bmN0aW9uKGRpc3BhdGNoZXIpIHt9XG4iICUgZG9tYWluX25hbWUpOwogb3V0cHV0X2Zp
bGUuY2xvc2UoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104861</attachid>
            <date>2011-08-23 09:44:13 -0700</date>
            <delta_ts>2011-08-24 02:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66776-20110823204411.patch</filename>
            <type>text/plain</type>
            <size>36867</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM2MDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYTZiNTg0ZDkxZjRmZjg3
Zjc4NmExNzBmYmRiZWEyZDA4MGUxYWNiLi41MzZlMDY3ZTJmZThlYTgzNGJlNTA3ODRjYWQwMDVk
YTQ1MDIyNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTkgQEAKIDIwMTEtMDgtMjMgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGFubm90YXRlIGFuZCBwcmVwYXJlIGZvciBjb21waWxhdGlvbiBmaXJzdCAxNCBKYXZhU2NyaXB0
IGZpbGVzIHdpdGhpbiA0IG1vZHVsZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02Njc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUuX2xvYWROb2RlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQucHJvdG90eXBlLl9jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2luc3BlY3RFbGVtZW50UmVxdWVzdGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVyLnByb3RvdHlwZS5pbnNwZWN0RWxlbWVudFJl
cXVlc3RlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5FbGVtZW50c1BhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZS5faW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanM6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9PYmplY3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZS5hZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGUuaGFzRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUGFuZWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1BvcG92ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90
b3R5cGUuc2hvdyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3RvcmFnZUNhdGVnb3J5VHJlZUVsZW1lbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5w
cm90b3R5cGUuZWRpdFNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2V0dGluZ3MucHJvdG90eXBlLmNyZWF0ZVNldHRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0
Q29udGV4dE1lbnUucHJvdG90eXBlLl9tZW51SXRlbU1vdXNlVXApOgorICAgICAgICAoLldlYklu
c3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90eXBlLl90cmlnZ2VyQWN0aW9uKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51LnByb3RvdHlwZS5fbWVudUtleURvd24p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qczoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanM6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1ZpZXcuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzOgorICAg
ICAgICAoSlNPTi5wYXJzZSk6CisgICAgICAgIChKU09OLnN0cmluZ2lmeSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgICgpOgorICAgICAgICAq
IGluc3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zOgorCisyMDExLTA4LTIzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKwogICAgICAgICBOb3QgcmV2aWV3ZWQ6
IGZpeGluZyBidWlsZC4gT25lIGxpbmUgZHJpdmUtYnkgdHlwbyBmaXggaW4gdGhlIGluc3BlY3Rv
ciBzaG9ydGN1dCAoRXNjIC0+IEJhY2tzcGFjZSkuCiAKICAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2NvbXBpbGUtZnJvbnQtZW5kLnNoIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUt
ZnJvbnQtZW5kLnNoCmluZGV4IDQwYzIxMTZiYjUyNzk4ZjNhODRlMTJiNzlkNTU0ZjI1NTdkODEw
ZGQuLmQ0MDMwNzA2ODMxM2U5OTkwMDUwMGFhOTcyYzU2OWQwNTc5MzZmNWYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKQEAgLTMwLDggKzMwLDI1
IEBACiAjIENvbXBpbGVzIFdlYktpdCBXZWIgSW5zcGVjdG9yIGZyb250LWVuZC4KIAogcHl0aG9u
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9nZW5lcmF0ZS1wcm90b2NvbC1leHRlcm5zIC1vIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcHJvdG9jb2wtZXh0ZXJucy5qcyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKwogamF2YSAtamFyIH4vY2xvc3Vy
ZS9jb21waWxlci5qYXIgLS1jb21waWxhdGlvbl9sZXZlbCBTSU1QTEVfT1BUSU1JWkFUSU9OUyAt
LXdhcm5pbmdfbGV2ZWwgVkVSQk9TRSAtLWxhbmd1YWdlX2luIEVDTUFTQ1JJUFQ1IC0tYWNjZXB0
X2NvbnN0X2tleXdvcmQgXAotICAgLS1leHRlcm5zIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvZXh0ZXJucy5qcyBcCi0gICAtLWV4dGVybnMgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9wcm90b2NvbC1leHRlcm5zLmpzIFwKLSAgIC0tanMgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgXAotICAgLS1qcyBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCisgICAgLS1leHRlcm5zIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcyBcCisgICAgLS1leHRl
cm5zIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcHJvdG9jb2wtZXh0ZXJucy5q
cyBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfY29yZToyIFwKKyAgICAgICAgLS1qcyBTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcyBcCisgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcyBcCisgICAg
LS1tb2R1bGUganNtb2R1bGVfZW52OjMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVXNlck1ldHJpY3MuanMgXAorICAgICAgICAtLWpzIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1
Yi5qcyBcCisgICAgLS1tb2R1bGUganNtb2R1bGVfc2RrOjQ6anNtb2R1bGVfY29yZSxqc21vZHVs
ZV9lbnYgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
T2JqZWN0LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTUFnZW50LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdC5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIFwKKyAgICAtLW1vZHVsZSBqc21vZHVsZV91
aTo1OmpzbW9kdWxlX3NkayBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9WaWV3LmpzIFwKKyAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1BsYWNhcmQuanMgXAorICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcyBcCisgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb2Z0Q29udGV4dE1lbnUuanMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzCmluZGV4
IDU4ODEwZmIzMzdjMDAwYjA0NWNhOTNmZWY4MGIxOWI5NjQ3Y2IzODYuLjQ4NmVhNWJjZDU5ZWU2
MmM5YjdhZDZkNjMxOWE5NGVmYjY0M2M4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcwpAQCAtMjgsNiArMjgsOSBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnUgPSBmdW5jdGlvbigpIHsKICAgICB0aGlzLl9pdGVtcyA9IFtdOwogICAgIHRo
aXMuX2hhbmRsZXJzID0ge307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01BZ2VudC5qcwppbmRleCA1MmNhNTBlYWQ5YWFhNGQ2NmJiN2Y5MDgxNWJlMDg3OGI1NmVk
NmViLi4wZmJmZTk1MjgzNTZmMmEwZWE1NDM3ZTI0MTVkODU4NzI3NjgwNmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTI5LDYgKzI5
LDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLwog
V2ViSW5zcGVjdG9yLkRPTU5vZGUgPSBmdW5jdGlvbihkb2MsIHBheWxvYWQpIHsKICAgICB0aGlz
Lm93bmVyRG9jdW1lbnQgPSBkb2M7CiAKQEAgLTM1MSw2ICszNTQsMTAgQEAgV2ViSW5zcGVjdG9y
LkRPTU5vZGUucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorLyoqCisgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkRPTU5vZGV9CisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLkRP
TURvY3VtZW50ID0gZnVuY3Rpb24oZG9tQWdlbnQsIHBheWxvYWQpCiB7CiAgICAgV2ViSW5zcGVj
dG9yLkRPTU5vZGUuY2FsbCh0aGlzLCB0aGlzLCBwYXlsb2FkKTsKQEAgLTM2MCw2ICszNjcsMTAg
QEAgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50ID0gZnVuY3Rpb24oZG9tQWdlbnQsIHBheWxvYWQp
CiAKIFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkRPTU5vZGUucHJvdG90eXBlOwogCisvKioKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuT2JqZWN0fQorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5ET01BZ2VudCA9
IGZ1bmN0aW9uKCkgewogICAgIHRoaXMuX2lkVG9ET01Ob2RlID0gbnVsbDsKICAgICB0aGlzLl9k
b2N1bWVudCA9IG51bGw7CkBAIC0zNzMsNyArMzg0LDggQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50
LkV2ZW50cyA9IHsKICAgICBOb2RlSW5zZXJ0ZWQ6ICJOb2RlSW5zZXJ0ZWQiLAogICAgIE5vZGVS
ZW1vdmVkOiAiTm9kZVJlbW92ZWQiLAogICAgIERvY3VtZW50VXBkYXRlZDogIkRvY3VtZW50VXBk
YXRlZCIsCi0gICAgQ2hpbGROb2RlQ291bnRVcGRhdGVkOiAiQ2hpbGROb2RlQ291bnRVcGRhdGVk
IgorICAgIENoaWxkTm9kZUNvdW50VXBkYXRlZDogIkNoaWxkTm9kZUNvdW50VXBkYXRlZCIsCisg
ICAgSW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQ6ICJJbnNwZWN0RWxlbWVudFJlcXVlc3RlZCIKIH0K
IAogV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKQEAgLTQ4OCw3ICs1MDAsNyBA
QCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhp
cy5fbG9hZE5vZGVBdHRyaWJ1dGVzVGltZW91dDsKIAogICAgICAgICBmb3IgKHZhciBub2RlSWQg
aW4gdGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHMpCi0gICAgICAgICAgICBET01BZ2VudC5nZXRB
dHRyaWJ1dGVzKHBhcnNlSW50KG5vZGVJZCksIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxs
YmFjay5iaW5kKHRoaXMsIG5vZGVJZCkpKTsKKyAgICAgICAgICAgIERPTUFnZW50LmdldEF0dHJp
YnV0ZXMocGFyc2VJbnQobm9kZUlkLCAxMCksIHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxs
YmFjay5iaW5kKHRoaXMsIG5vZGVJZCkpKTsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlTG9hZE5v
ZGVJZHMgPSB7fTsKICAgICB9LAogCkBAIC01MTAsNiArNTIyLDkgQEAgV2ViSW5zcGVjdG9yLkRP
TUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXF1ZXN0RG9jdW1lbnQoKTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHsqfSBwYXlsb2FkCisgICAgICovCiAgICAg
X3NldERvY3VtZW50OiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsKICAgICAgICAgdGhpcy5faWRU
b0RPTU5vZGUgPSB7fTsKQEAgLTUyMyw2ICs1MzgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1lbnQp
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyp9IHBheWxvYWQKKyAgICAgKi8K
ICAgICBfc2V0RGV0YWNoZWRSb290OiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsKICAgICAgICAg
dmFyIHJvb3QgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhpcy5fZG9jdW1lbnQsIHBheWxv
YWQpOwpAQCAtNTc0LDEwICs1OTIsMTUgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcGFyZW50Ll9yZW1vdmVDaGlsZChub2RlKTsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5Ob2Rl
UmVtb3ZlZCwge25vZGU6bm9kZSwgcGFyZW50OnBhcmVudH0pOwogICAgICAgICBkZWxldGUgdGhp
cy5faWRUb0RPTU5vZGVbbm9kZUlkXTsKLSAgICAgICAgaWYgKFByZWZlcmVuY2VzLm5hdGl2ZUlu
c3RydW1lbnRhdGlvbkVuYWJsZWQpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVs
ZW1lbnRzLnNpZGViYXJQYW5lcy5kb21CcmVha3BvaW50cy5ub2RlUmVtb3ZlZChub2RlKTsKICAg
ICB9LAogCisgICAgX2luc3BlY3RFbGVtZW50UmVxdWVzdGVkOiBmdW5jdGlvbihub2RlSWQpCisg
ICAgeworICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CisgICAg
ICAgIGlmIChub2RlKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5JbnNwZWN0RWxlbWVudFJlcXVlc3RlZCwgbm9k
ZSk7CisgICAgfSwKKyAgICAgCiAgICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnksIHNl
YXJjaFJlc3VsdENvbGxlY3Rvciwgc2VhcmNoU3luY2hyb25vdXNseSkKICAgICB7CiAgICAgICAg
IHRoaXMuX3NlYXJjaFJlc3VsdENvbGxlY3RvciA9IHNlYXJjaFJlc3VsdENvbGxlY3RvcjsKQEAg
LTYwMyw2ICs2MjYsMTAgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKIAog
V2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRz
IHtET01BZ2VudC5EaXNwYXRjaGVyfQorICovCiBXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlciA9
IGZ1bmN0aW9uKGRvbUFnZW50KQogewogICAgIHRoaXMuX2RvbUFnZW50ID0gZG9tQWdlbnQ7CkBA
IC02NTEsNyArNjc4LDcgQEAgV2ViSW5zcGVjdG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlID0g
ewogCiAgICAgaW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQ6IGZ1bmN0aW9uKG5vZGVJZCkKICAgICB7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci51cGRhdGVGb2N1c2VkTm9kZShub2RlSWQpOworICAgICAg
ICB0aGlzLl9kb21BZ2VudC5faW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQobm9kZUlkKTsKICAgICB9
LAogCiAgICAgc2VhcmNoUmVzdWx0czogZnVuY3Rpb24obm9kZUlkcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQnJlYWtwb2ludHNT
aWRlYmFyUGFuZS5qcwppbmRleCA0NTA5MzdiMzNhZjhjNjZkZDY2NDFmYWQ4NGY1YTIwZDliZGU0
NGZiLi4yNzk3NDhjNzQxMDM4Mzg4ZjkzZDBjMGM1YjU5NmU3ZWY0MDg5OGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUJyZWFrcG9pbnRzU2lkZWJh
clBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01CcmVh
a3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC01MCw2ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5ET01C
cmVha3BvaW50c1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2NvbnRleHRNZW51
TGFiZWxzW3RoaXMuX2JyZWFrcG9pbnRUeXBlcy5Ob2RlUmVtb3ZlZF0gPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJCcmVhayBv
biBub2RlIHJlbW92YWwiIDogIkJyZWFrIG9uIE5vZGUgUmVtb3ZhbCIpOwogCiAgICAgV2ViSW5z
cGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuSW5zcGVjdGVkVVJMQ2hhbmdlZCwgdGhpcy5faW5z
cGVjdGVkVVJMQ2hhbmdlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5Ob2RlUmVtb3ZlZCwgdGhp
cy5fbm9kZVJlbW92ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludHNT
aWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CkBAIC0xNDIsOSArMTQzLDEwIEBAIFdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgY2FsbGJh
Y2soZWxlbWVudCk7CiAgICAgfSwKIAotICAgIG5vZGVSZW1vdmVkOiBmdW5jdGlvbihub2RlKQor
ICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9y
ZW1vdmVCcmVha3BvaW50c0Zvck5vZGUobm9kZSk7CisgICAgICAgIHZhciBub2RlID0gZXZlbnQu
ZGF0YS5ub2RlOworICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50c0Zvck5vZGUoZXZlbnQu
ZGF0YS5ub2RlKTsKICAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyAr
K2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVn
Z2VyTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
TW9kZWwuanMKaW5kZXggMDI4YmFjY2ZiZWQ0NTUwNTA3MDYzMDZmZTFiZTBlNDE2M2U2YjkzMS4u
MDhjYzA4Zjg2NzMzNmJiMGY1ZWM4ZmJmNjgwYzViNWJjMTUxNjFjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcwpAQCAtMjgs
NiArMjgsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlz
Ll9kZWJ1Z2dlclBhdXNlZERldGFpbHMgPSB7fTsKQEAgLTM2LDYgKzM5LDE0IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsID0gZnVuY3Rpb24oKQogICAgIEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJEZWJ1Z2dlckRpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRpc3BhdGNo
ZXIodGhpcykpOwogfQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5Mb2NhdGlvbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLnNjcmlwdElk
ID0gbnVsbDsKK30KKwogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzID0gewogICAg
IERlYnVnZ2VyV2FzRW5hYmxlZDogImRlYnVnZ2VyLXdhcy1lbmFibGVkIiwKICAgICBEZWJ1Z2dl
cldhc0Rpc2FibGVkOiAiZGVidWdnZXItd2FzLWRpc2FibGVkIiwKQEAgLTIxMiw2ICsyMjMsMTAg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRXZlbnRUeXBlcyA9IHsKICAgICBOYXRpdmVCcmVha3Bv
aW50OiAyCiB9OwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge0RlYnVn
Z2VyQWdlbnQuRGlzcGF0Y2hlcn0KKyAqLwogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0Y2hl
ciA9IGZ1bmN0aW9uKGRlYnVnZ2VyTW9kZWwpCiB7CiAgICAgdGhpcy5fZGVidWdnZXJNb2RlbCA9
IGRlYnVnZ2VyTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggNWI5ODcyZTI4NzcyNmQ1ODFlNjFjMzUzOWMzZTUy
MTcwZjZiN2MwZS4uNzExNzgzY2ZkOTc5N2U0ZGEwNGM4ZTc5YzRjOTQ2MDY3MzhiNGZhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcwpAQCAtMTE5LDcgKzExOSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVu
Y3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFy
YWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuRG9jdW1lbnRVcGRhdGVk
LCB0aGlzLl9kb2N1bWVudFVwZGF0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2Vu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQ2hpbGROb2Rl
Q291bnRVcGRhdGVkLCB0aGlzLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQsIHRoaXMpOwotCisgICAg
V2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFn
ZW50LkV2ZW50cy5JbnNwZWN0RWxlbWVudFJlcXVlc3RlZCwgdGhpcy5faW5zcGVjdEVsZW1lbnRS
ZXF1ZXN0ZWQsIHRoaXMpOwogICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107CiB9
CiAKQEAgLTQ0MSw2ICs0NDEsMTEgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGFzQ2hpbGRyZW4gPSBldmVudC5kYXRh
Lmhhc0NoaWxkTm9kZXMoKTsKICAgICB9LAogCisgICAgX2luc3BlY3RFbGVtZW50UmVxdWVzdGVk
OiBmdW5jdGlvbihub2RlKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnVwZGF0ZUZvY3Vz
ZWROb2RlKG5vZGUuaWQpOworICAgIH0sCisKICAgICBfdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb246
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICgiX3VwZGF0ZU1vZGlmaWVkTm9kZXNUaW1l
b3V0IiBpbiB0aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IGFhNjE3Nzg3YzVmYTUxZGEzNmVk
NmM1ZTc3Mjc5ODYzYmFkMWUxZWYuLjU3YjJiNjJkMjVhY2M5NTQ1ZDhhMGJiYWE3ZjYzMTJhNDk4
OWI2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTQyMiw2ICs0MjIsMTAgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIHBvcHVsYXRlZDsKKyAgICB9LAorCisgICAgYWRqdXN0Q29sbGFwc2VkUmFuZ2U6
IGZ1bmN0aW9uKCkKKyAgICB7CiAgICAgfQogfQogCkBAIC03NjMsNyArNzY3LDcgQEAgV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0gICAg
ICAgIHRoaXMuYWRqdXN0Q29sbGFwc2VkUmFuZ2UoZmFsc2UpOworICAgICAgICB0aGlzLmFkanVz
dENvbGxhcHNlZFJhbmdlKCk7CiAKICAgICAgICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRy
ZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTsKICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50
ZWRPYmplY3Qubm9kZVR5cGUoKSA9PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoIWxhc3RDaGlsZCB8
fCAhbGFzdENoaWxkLl9lbGVtZW50Q2xvc2VUYWcpKQpAQCAtMTU2Miw3ICsxNTY2LDcgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAgICAgcGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChzZWxm
KTsKLSAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuYWRqdXN0Q29sbGFwc2VkUmFuZ2UodHJ1ZSk7
CisgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFkanVzdENvbGxhcHNlZFJhbmdlKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZU5vZGUocmVtb3Zl
Tm9kZUNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcwppbmRleCA4NGVjM2Q3
YWJjOTJmZGYyYjI0YmQxZDI1YTMyNDU5YTE4MjM0ZmZkLi4zM2I4YzQ4MTM4NGI5NmJlMTNkMmM4
MzI5MjYxNjJlMTkxOGQ1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCkBAIC0y
OCw4ICsyOCwxOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCitXZWJJbnNwZWN0b3IuUGxhdGZv
cm1GbGF2b3IgPSB7CisgICAgV2luZG93c1Zpc3RhOiAid2luZG93cy12aXN0YSIsCisgICAgTWFj
VGlnZXI6ICJtYWMtdGlnZXIiLAorICAgIE1hY0xlb3BhcmQ6ICJtYWMtbGVvcGFyZCIsCisgICAg
TWFjU25vd0xlb3BhcmQ6ICJtYWMtc25vd2xlb3BhcmQiCit9CisKIGlmICghd2luZG93Lkluc3Bl
Y3RvckZyb250ZW5kSG9zdCkgewogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1YiA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlz
Ll9hdHRhY2hlZFdpbmRvd0hlaWdodCA9IDA7CkBAIC0xNTEsNiArMTYxLDYgQEAgV2ViSW5zcGVj
dG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlID0gewogICAgIH0KIH0KIAot
SW5zcGVjdG9yRnJvbnRlbmRIb3N0ID0gbmV3IFdlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViKCk7Cit2YXIgSW5zcGVjdG9yRnJvbnRlbmRIb3N0ID0gbmV3IFdlYkluc3BlY3Rv
ci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViKCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcwppbmRleCAyYmNm
M2QxYjE1MTkwN2Y0MDRiNTc5ZWQ3NDg2NDAyZDkyN2JkNTZmLi42NDlhYmYzNWFjY2Y5MmVhMmVk
NzMzN2RmMTNkNjdiYjI3Y2YxZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0tleWJvYXJkU2hvcnRjdXQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzCkBAIC0yNyw2ICsyNyw5IEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0ID0gZnVuY3Rpb24oKQogewogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvT2JqZWN0LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMKaW5kZXggNTNjMjBlMjllNWQ2NmZmYTU0YjM0
MTg5ODBmYTRiY2JiNDQzNzQzYi4uNTZlNmMzZGM5Yzg0NThjYzQwZWZlYzYxMTBlNzM1M2YxYTUw
ZjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmpl
Y3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9PYmplY3QuanMK
QEAgLTIzLDIyICsyMywyNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25z
dHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuT2JqZWN0ID0gZnVuY3Rpb24oKSB7CiB9CiAKIFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlID0gewogICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1
bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewotICAgICAgICBp
ZiAoISgiX2xpc3RlbmVycyIgaW4gdGhpcykpCisgICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJz
KQogICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0ge307Ci0gICAgICAgIGlmICghKGV2ZW50
VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpKQorICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVyc1tl
dmVudFR5cGVdKQogICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0gPSBbXTsK
ICAgICAgICAgdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0ucHVzaCh7IHRoaXNPYmplY3Q6IHRo
aXNPYmplY3QsIGxpc3RlbmVyOiBsaXN0ZW5lciB9KTsKICAgICB9LAogCiAgICAgcmVtb3ZlRXZl
bnRMaXN0ZW5lcjogZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKICAg
ICB7Ci0gICAgICAgIGlmICghKCJfbGlzdGVuZXJzIiBpbiB0aGlzKSB8fCAhKGV2ZW50VHlwZSBp
biB0aGlzLl9saXN0ZW5lcnMpKQorICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAhdGhp
cy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHZh
ciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyArK2kpIHsKQEAgLTU5LDE0ICs2MiwxNCBA
QCBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKIAogICAgIGhhc0V2ZW50TGlzdGVu
ZXJzOiBmdW5jdGlvbihldmVudFR5cGUpCiAgICAgewotICAgICAgICBpZiAoISgiX2xpc3RlbmVy
cyIgaW4gdGhpcykgfHwgIShldmVudFR5cGUgaW4gdGhpcy5fbGlzdGVuZXJzKSkKKyAgICAgICAg
aWYgKCF0aGlzLl9saXN0ZW5lcnMgfHwgIXRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9LAogCiAg
ICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzOiBmdW5jdGlvbihldmVudFR5cGUsIGV2ZW50RGF0
YSkKICAgICB7Ci0gICAgICAgIGlmICghKCJfbGlzdGVuZXJzIiBpbiB0aGlzKSB8fCAhKGV2ZW50
VHlwZSBpbiB0aGlzLl9saXN0ZW5lcnMpKQorICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8
fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdmFyIHN0b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKaW5kZXggMjJmMmUyOGYyYzkxMmFkMTZkODAyMzFm
MmFiNWEzZDIxYTIwMmQ5Ni4uMGNjNWQxN2QwZWMwMzg3YWJiMWVmMTFjMGY2YTU0MDZkZDExZWVl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCkBAIC0z
Niw3ICszNiw3IEBAIFdlYkluc3BlY3Rvci5QYW5lbCA9IGZ1bmN0aW9uKG5hbWUpCiAKICAgICB0
aGlzLl9zaG9ydGN1dHMgPSB7fTsKIAotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5pbnN0YWxs
QXBwbGljYXRpb25TZXR0aW5nKHRoaXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lKCksIHVuZGVm
aW5lZCk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzW3RoaXMuX3NpZGViYXJXaWR0aFNldHRp
bmdOYW1lKCldID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcodGhpcy5fc2lk
ZWJhcldpZHRoU2V0dGluZ05hbWUoKSwgdW5kZWZpbmVkKTsKIH0KIAogLy8gU2hvdWxkIGJ5IGlu
IHN5bmMgd2l0aCBzdHlsZSBkZWNsYXJhdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BsYWNhcmQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1BsYWNhcmQuanMKaW5kZXggOWE0MTVjNGIxODU0ZDI2YjhhYTE3YTUwZTNh
NDUzM2E2MmVkMjY4Ni4uN2Y1MWU0Nzg3MTU1NTgyMGJiNDY3ZmNiZjE2ZGE2Zjc5YmQ4ZDkxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QbGFjYXJkLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGxhY2FyZC5qcwpAQCAt
MjMsNiArMjMsOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICovCiBXZWJJbnNwZWN0b3IuUGxhY2FyZCA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSkK
IHsKICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUG9wb3Zlci5qcwppbmRleCBmNWE3
M2UzMDAxOTUzMGQ4YmQyODQzYmNkNGE1OTkxODJlYjE3N2VmLi41NmE1YWRiOTIyYWFkOTNhODZl
NDZlZGFmZjU3NTEyYWMzYzViZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qb3BvdmVyLmpzCkBAIC0yOCw2ICsyOCwxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtFbGVtZW50fSBjb250ZW50RWxl
bWVudAorICovCiBXZWJJbnNwZWN0b3IuUG9wb3ZlciA9IGZ1bmN0aW9uKGNvbnRlbnRFbGVtZW50
KQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpA
QCAtNTQsOCArNTgsOCBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC8vIFRlbXBvcmFyaWx5IGF0dGFjaCBpbiBvcmRlciB0byBtZWFzdXJlIHByZWZlcnJlZCBk
aW1lbnNpb25zLgogICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LnBvc2l0aW9uQXQoMCwgMCk7
CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RWxlbWVudCk7
Ci0gICAgICAgIHZhciBwcmVmZXJyZWRXaWR0aCA9IHByZWZlcnJlZFdpZHRoIHx8IHRoaXMuY29u
dGVudEVsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgICAgIHZhciBwcmVmZXJyZWRIZWlnaHQgPSBw
cmVmZXJyZWRIZWlnaHQgfHwgdGhpcy5jb250ZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAg
ICAgIHByZWZlcnJlZFdpZHRoID0gcHJlZmVycmVkV2lkdGggfHwgdGhpcy5jb250ZW50RWxlbWVu
dC5vZmZzZXRXaWR0aDsKKyAgICAgICAgcHJlZmVycmVkSGVpZ2h0ID0gcHJlZmVycmVkSGVpZ2h0
IHx8IHRoaXMuY29udGVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0OwogCiAgICAgICAgIHRoaXMuX2Nv
bnRlbnREaXYuYXBwZW5kQ2hpbGQodGhpcy5jb250ZW50RWxlbWVudCk7CiAgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50RGl2KTsKQEAgLTE1Niw2ICsxNjAsOSBA
QCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCisvKioKKyAq
IEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuUG9wb3ZlckhlbHBlciA9IGZ1bmN0aW9u
KHBhbmVsRWxlbWVudCwgZ2V0QW5jaG9yLCBzaG93UG9wdXAsIHNob3dPbkNsaWNrLCBvbkhpZGUp
CiB7CiAgICAgdGhpcy5fcGFuZWxFbGVtZW50ID0gcGFuZWxFbGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
Mjk2OGE4OTgzZTdlMTlhYmU1MmNmOGIxNzkxMWFmMTYyMDA3OTRiZS4uZTRmNWZkODRkMmJhNWI0
ZmU2NTg4MDdmMzAxNzYxOTRlNzZkN2MwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0zMSw3ICszMSw3IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCA9IGZ1bmN0aW9uKGRhdGFiYXNlKQogewogICAgIFdl
Ykluc3BlY3Rvci5QYW5lbC5jYWxsKHRoaXMsICJyZXNvdXJjZXMiKTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJyZXNvdXJjZXNMYXN0U2Vs
ZWN0ZWRJdGVtIiwge30pOworICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXN0
U2VsZWN0ZWRJdGVtID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoInJlc291
cmNlc0xhc3RTZWxlY3RlZEl0ZW0iLCB7fSk7CiAKICAgICB0aGlzLmNyZWF0ZVNpZGViYXIoKTsK
ICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUtZGlzY2xvc3Vy
ZSIpOwpAQCAtOTgzLDcgKzk4Myw3IEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQYW5lbCwgY2F0ZWdvcnlOYW1lLCBzCiB7CiAgICAg
V2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFu
ZWwsIG51bGwsIGNhdGVnb3J5TmFtZSwgaWNvbkNsYXNzZXMsIHRydWUsIG5vSWNvbik7CiAgICAg
dGhpcy5fZXhwYW5kZWRTZXR0aW5nS2V5ID0gInJlc291cmNlcyIgKyBzZXR0aW5nc0tleSArICJF
eHBhbmRlZCI7Ci0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmluc3RhbGxBcHBsaWNhdGlvblNl
dHRpbmcodGhpcy5fZXhwYW5kZWRTZXR0aW5nS2V5LCBzZXR0aW5nc0tleSA9PT0gIkZyYW1lcyIp
OworICAgIFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9leHBhbmRlZFNldHRpbmdLZXldID0g
V2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcodGhpcy5fZXhwYW5kZWRTZXR0aW5n
S2V5LCBzZXR0aW5nc0tleSA9PT0gIkZyYW1lcyIpOwogICAgIHRoaXMuX2NhdGVnb3J5TmFtZSA9
IGNhdGVnb3J5TmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdC5qcwppbmRleCA5ZDNlYjRjNWY2ZTI5YzUzZDJmZDc1M2U2Yzg0MGI4ZDdhNTQzNDA0
Li5iMzZlMDdhNGUyOWM0NzQ1ZTYyY2E0YzZiMDA2MTYzZGMxODBjNjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMjMsNiArMjMsOSBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNw
ZWN0b3IuU2NyaXB0ID0gZnVuY3Rpb24oc2NyaXB0SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBz
dGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSwg
aXNDb250ZW50U2NyaXB0KQogewogICAgIHRoaXMuc2NyaXB0SWQgPSBzY3JpcHRJZDsKQEAgLTYw
LDYgKzYzLDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgdGhpcy5fc291cmNlID0gbmV3U291cmNlOwogICAgICAgICAgICAgY2FsbGJhY2soZXJy
b3IsIGNhbGxGcmFtZXMpOwogICAgICAgICB9Ci0gICAgICAgIERlYnVnZ2VyQWdlbnQuc2V0U2Ny
aXB0U291cmNlKHRoaXMuc2NyaXB0SWQsIG5ld1NvdXJjZSwgZGlkRWRpdFNjcmlwdFNvdXJjZS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgRGVidWdnZXJBZ2VudC5zZXRTY3JpcHRTb3VyY2UodGhpcy5z
Y3JpcHRJZCwgbmV3U291cmNlLCB1bmRlZmluZWQsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0
aGlzKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA1YTg0MWVmZmFlYzUxZWQzZDhkNzMwZGMyODc2ZTVj
ZTg2ZTMwNzM5Li4xMjg1ZDNhZjVjMzAzMDE0YjBmZTZiYTFiMWVhZWJjNTc4ODQwMWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5q
cwpAQCAtMjgsNiArMjgsOCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24o
cHJlc2VudGF0aW9uTW9kZWwpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywg
InNjcmlwdHMiKTsKIAorICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wYXVzZU9uRXhjZXB0aW9u
U3RhdGVTdHJpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygicGF1c2VP
bkV4Y2VwdGlvblN0YXRlU3RyaW5nIiwgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5QYXVzZU9u
RXhjZXB0aW9uc1N0YXRlLkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisKICAgICB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbCA9IHByZXNlbnRhdGlvbk1vZGVsOwogCiAgICAgdGhpcy5yZWdpc3RlclNo
b3J0Y3V0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKaW5kZXggZjE3NThmMzU4NzUzY2JkYzRmNDJkYWUwY2NiNzgwZWRjM2ZiMDM2NS4uMjU3
MWUyNjIyN2NmOTljZDc4NWUzNGE4MGNiMDUyNzY3YTI3MDRlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC01OCwzNCArNTgsMzYgQEAg
dmFyIFByZWZlcmVuY2VzID0gewogICAgIHNob3dOZXR3b3JrUGFuZWxJbml0aWF0b3JDb2x1bW46
IGZhbHNlCiB9CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5TZXR0
aW5ncyA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl9ldmVudFN1cHBvcnQgPSBuZXcgV2ViSW5z
cGVjdG9yLk9iamVjdCgpOwogCi0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJj
b2xvckZvcm1hdCIsICJoZXgiKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmco
ImNvbnNvbGVIaXN0b3J5IiwgW10pOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGlu
ZygiZGVidWdnZXJFbmFibGVkIiwgZmFsc2UpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9u
U2V0dGluZygiZG9tV29yZFdyYXAiLCB0cnVlKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlv
blNldHRpbmcoInByb2ZpbGVyRW5hYmxlZCIsIGZhbHNlKTsKLSAgICB0aGlzLmluc3RhbGxBcHBs
aWNhdGlvblNldHRpbmcoImV2ZW50TGlzdGVuZXJzRmlsdGVyIiwgImFsbCIpOwotICAgIHRoaXMu
aW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygibGFzdEFjdGl2ZVBhbmVsIiwgImVsZW1lbnRzIik7
Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0Rmls
ZSIsICJhcHBsaWNhdGlvbiIpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygi
bW9uaXRvcmluZ1hIUkVuYWJsZWQiLCBmYWxzZSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRp
b25TZXR0aW5nKCJwcmVzZXJ2ZUNvbnNvbGVMb2ciLCBmYWxzZSk7Ci0gICAgdGhpcy5pbnN0YWxs
QXBwbGljYXRpb25TZXR0aW5nKCJwYXVzZU9uRXhjZXB0aW9uU3RhdGVTdHJpbmciLCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLlBhdXNlT25FeGNlcHRpb25zU3RhdGUuRG9udFBhdXNlT25FeGNl
cHRpb25zKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInJlc291cmNlc0xh
cmdlUm93cyIsIHRydWUpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygicmVz
b3VyY2VzU29ydE9wdGlvbnMiLCB7dGltZU9wdGlvbjogInJlc3BvbnNlVGltZSIsIHNpemVPcHRp
b246ICJ0cmFuc2ZlclNpemUifSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5n
KCJyZXNvdXJjZVZpZXdUYWIiLCAicHJldmlldyIpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0
aW9uU2V0dGluZygic2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzIiwgZmFsc2Up
OwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygic2hvd1VzZXJBZ2VudFN0eWxl
cyIsIHRydWUpOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygid2F0Y2hFeHBy
ZXNzaW9ucyIsIFtdKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImJyZWFr
cG9pbnRzIiwgW10pOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZygiZXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnRzIiwgW10pOwotICAgIHRoaXMuaW5zdGFsbEFwcGxpY2F0aW9uU2V0
dGluZygiZG9tQnJlYWtwb2ludHMiLCBbXSk7Ci0gICAgdGhpcy5pbnN0YWxsQXBwbGljYXRpb25T
ZXR0aW5nKCJ4aHJCcmVha3BvaW50cyIsIFtdKTsKLSAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlv
blNldHRpbmcoIndvcmtlckluc3BlY3Rpb25FbmFibGVkIiwgW10pOwotICAgIHRoaXMuaW5zdGFs
bEFwcGxpY2F0aW9uU2V0dGluZygiY2FjaGVEaXNhYmxlZCIsIGZhbHNlKTsKLSAgICB0aGlzLmlu
c3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInNob3dTY3JpcHRGb2xkZXJzIiwgdHJ1ZSk7CisgICAg
dGhpcy5jb2xvckZvcm1hdCA9IHRoaXMuY3JlYXRlU2V0dGluZygiY29sb3JGb3JtYXQiLCAiaGV4
Iik7CisgICAgdGhpcy5jb25zb2xlSGlzdG9yeSA9IHRoaXMuY3JlYXRlU2V0dGluZygiY29uc29s
ZUhpc3RvcnkiLCBbXSk7CisgICAgdGhpcy5kZWJ1Z2dlckVuYWJsZWQgPSB0aGlzLmNyZWF0ZVNl
dHRpbmcoImRlYnVnZ2VyRW5hYmxlZCIsIGZhbHNlKTsKKyAgICB0aGlzLmRvbVdvcmRXcmFwID0g
dGhpcy5jcmVhdGVTZXR0aW5nKCJkb21Xb3JkV3JhcCIsIHRydWUpOworICAgIHRoaXMucHJvZmls
ZXJFbmFibGVkID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJwcm9maWxlckVuYWJsZWQiLCBmYWxzZSk7
CisgICAgdGhpcy5ldmVudExpc3RlbmVyc0ZpbHRlciA9IHRoaXMuY3JlYXRlU2V0dGluZygiZXZl
bnRMaXN0ZW5lcnNGaWx0ZXIiLCAiYWxsIik7CisgICAgdGhpcy5sYXN0QWN0aXZlUGFuZWwgPSB0
aGlzLmNyZWF0ZVNldHRpbmcoImxhc3RBY3RpdmVQYW5lbCIsICJlbGVtZW50cyIpOworICAgIHRo
aXMubGFzdFZpZXdlZFNjcmlwdEZpbGUgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImxhc3RWaWV3ZWRT
Y3JpcHRGaWxlIiwgImFwcGxpY2F0aW9uIik7CisgICAgdGhpcy5tb25pdG9yaW5nWEhSRW5hYmxl
ZCA9IHRoaXMuY3JlYXRlU2V0dGluZygibW9uaXRvcmluZ1hIUkVuYWJsZWQiLCBmYWxzZSk7Cisg
ICAgdGhpcy5wcmVzZXJ2ZUNvbnNvbGVMb2cgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInByZXNlcnZl
Q29uc29sZUxvZyIsIGZhbHNlKTsKKyAgICB0aGlzLnJlc291cmNlc0xhcmdlUm93cyA9IHRoaXMu
Y3JlYXRlU2V0dGluZygicmVzb3VyY2VzTGFyZ2VSb3dzIiwgdHJ1ZSk7CisgICAgdGhpcy5yZXNv
dXJjZXNTb3J0T3B0aW9ucyA9IHRoaXMuY3JlYXRlU2V0dGluZygicmVzb3VyY2VzU29ydE9wdGlv
bnMiLCB7dGltZU9wdGlvbjogInJlc3BvbnNlVGltZSIsIHNpemVPcHRpb246ICJ0cmFuc2ZlclNp
emUifSk7CisgICAgdGhpcy5yZXNvdXJjZVZpZXdUYWIgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInJl
c291cmNlVmlld1RhYiIsICJwcmV2aWV3Iik7CisgICAgdGhpcy5zaG93SW5oZXJpdGVkQ29tcHV0
ZWRTdHlsZVByb3BlcnRpZXMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dJbmhlcml0ZWRDb21w
dXRlZFN0eWxlUHJvcGVydGllcyIsIGZhbHNlKTsKKyAgICB0aGlzLnNob3dVc2VyQWdlbnRTdHls
ZXMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dVc2VyQWdlbnRTdHlsZXMiLCB0cnVlKTsKKyAg
ICB0aGlzLndhdGNoRXhwcmVzc2lvbnMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoIndhdGNoRXhwcmVz
c2lvbnMiLCBbXSk7CisgICAgdGhpcy5icmVha3BvaW50cyA9IHRoaXMuY3JlYXRlU2V0dGluZygi
YnJlYWtwb2ludHMiLCBbXSk7CisgICAgdGhpcy5ldmVudExpc3RlbmVyQnJlYWtwb2ludHMgPSB0
aGlzLmNyZWF0ZVNldHRpbmcoImV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyIsIFtdKTsKKyAgICB0
aGlzLmRvbUJyZWFrcG9pbnRzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJkb21CcmVha3BvaW50cyIs
IFtdKTsKKyAgICB0aGlzLnhockJyZWFrcG9pbnRzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJ4aHJC
cmVha3BvaW50cyIsIFtdKTsKKyAgICB0aGlzLndvcmtlckluc3BlY3Rpb25FbmFibGVkID0gdGhp
cy5jcmVhdGVTZXR0aW5nKCJ3b3JrZXJJbnNwZWN0aW9uRW5hYmxlZCIsIFtdKTsKKyAgICB0aGlz
LmNhY2hlRGlzYWJsZWQgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImNhY2hlRGlzYWJsZWQiLCBmYWxz
ZSk7CisgICAgdGhpcy5zaG93U2NyaXB0Rm9sZGVycyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hv
d1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsKIAogICAgIC8vIElmIHRoZXJlIGFyZSB0b28gbWFueSBi
cmVha3BvaW50cyBpbiBhIHN0b3JhZ2UsIGl0IGlzIGxpa2VseSBkdWUgdG8gYSByZWNlbnQgYnVn
IHRoYXQgY2F1c2VkCiAgICAgLy8gcGVyaW9kaWNhbCBicmVha3BvaW50cyBkdXBsaWNhdGlvbiBs
ZWFkaW5nIHRvIGluc3BlY3RvciBzbG93bmVzcy4KQEAgLTk0LDE0ICs5NiwxOCBAQCBXZWJJbnNw
ZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCiB9CiAKIFdlYkluc3BlY3Rvci5TZXR0aW5ncy5w
cm90b3R5cGUgPSB7Ci0gICAgaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZzogZnVuY3Rpb24oa2V5
LCBkZWZhdWx0VmFsdWUpCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNl
dHRpbmd9CisgICAgICovCisgICAgY3JlYXRlU2V0dGluZzogZnVuY3Rpb24oa2V5LCBkZWZhdWx0
VmFsdWUpCiAgICAgewotICAgICAgICBpZiAoa2V5IGluIHRoaXMpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHRoaXNba2V5XSA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhrZXksIGRl
ZmF1bHRWYWx1ZSwgdGhpcy5fZXZlbnRTdXBwb3J0KTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZyhrZXksIGRlZmF1bHRWYWx1ZSwgdGhpcy5fZXZlbnRTdXBwb3J0KTsK
ICAgICB9CiB9CiAKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5TZXR0
aW5nID0gZnVuY3Rpb24obmFtZSwgZGVmYXVsdFZhbHVlLCBldmVudFN1cHBvcnQpCiB7CiAgICAg
dGhpcy5fbmFtZSA9IG5hbWU7CkBAIC0xNTAsMyArMTU2LDUgQEAgV2ViSW5zcGVjdG9yLlNldHRp
bmcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9ldmVudFN1cHBvcnQuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKHRoaXMuX25hbWUsIHZhbHVlKTsKICAgICB9CiB9CisKK1dlYkluc3BlY3Rv
ci5zZXR0aW5ncyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb2Z0Q29udGV4dE1lbnUuanMKaW5kZXgg
MjU4YTFmNzRiYjk0OWFjYjFhMWJjNjlhZjUyMjI2Y2I1NWQ0NTcyYy4uNTYwOWM3ZWUzMDYwMmQ3
OWMzZTk5NzYzY2M0NWQ5YTA0ODhjYTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb2Z0Q29udGV4dE1lbnUuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb2Z0Q29udGV4dE1lbnUuanMKQEAgLTI1LDYgKzI1LDkgQEAK
IAogaWYgKCFJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2hvd0NvbnRleHRNZW51KSB7CiAKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKi8KIFdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUgPSBmdW5j
dGlvbihpdGVtcykKIHsKICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zOwpAQCAtMTI3LDEwICsxMzAs
MTAgQEAgV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUgPSB7CiAKICAgICBf
bWVudUl0ZW1Nb3VzZVVwOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Ry
aWdnZXJBY3Rpb24oZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgdGhpcy5fdHJpZ2dlckFjdGlvbihl
dmVudC50YXJnZXQsIGV2ZW50KTsKICAgICB9LAogCi0gICAgX3RyaWdnZXJBY3Rpb246IGZ1bmN0
aW9uKG1lbnVJdGVtRWxlbWVudCkKKyAgICBfdHJpZ2dlckFjdGlvbjogZnVuY3Rpb24obWVudUl0
ZW1FbGVtZW50LCBldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rpc2NhcmRNZW51KGV2ZW50
KTsKICAgICAgICAgaWYgKHR5cGVvZiBtZW51SXRlbUVsZW1lbnQuX2FjdGlvbklkICE9PSAidW5k
ZWZpbmVkIikgewpAQCAtMTkxLDcgKzE5NCw3IEBAIFdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1l
bnUucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCiAgICAgICAgIGNh
c2UgIlUrMDAyMCI6IC8vIFNwYWNlCiAgICAgICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0ZWRN
ZW51SXRlbUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdHJpZ2dlckFjdGlvbih0aGlz
Ll9oaWdobGlnaHRlZE1lbnVJdGVtRWxlbWVudCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdHJp
Z2dlckFjdGlvbih0aGlzLl9oaWdobGlnaHRlZE1lbnVJdGVtRWxlbWVudCwgZXZlbnQpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJl
ZFBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUu
anMKaW5kZXggNTdjMTk1NDkyOTc0MzRmYTYxMWM4YTU0ZDEwMzQ1YjFhOTk3ZGU2Mi4uNGZlZjVk
NmZhNjEwZDkwMjk2ZDBiMDAwOGMwMDJhMWFjNmJiYTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkUGFuZS5qcwpAQCAtMjgsNiArMjgsMTAgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorLyoqCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZp
ZXd9CisgKiBAY29uc3RydWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUgPSBmdW5j
dGlvbihlbGVtZW50KQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcywgZWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQ
cm9tcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQu
anMKaW5kZXggMzZhMzhjY2NiNmU1ZmJmN2I2YjIwOWZiMWM0NmE4MzE0NjYyM2U0NS4uYjAwMTc1
NTk3ZTVjMjI5MGU3MzZmN2IwMThiZTdlNTFkZGMzMGU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0UHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFByb21wdC5qcwpAQCAtMjYsNiArMjYsOSBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0
b3IuVGV4dFByb21wdCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbXBsZXRpb25zLCBzdG9wQ2hhcmFj
dGVycywgb21pdEhpc3RvcnkpCiB7CiAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVXNlck1ldHJpY3MuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VzZXJNZXRyaWNzLmpzCmluZGV4
IGMyYmIwNTBjNTliNmNjOGI4M2Q3NWM2YjEzOTM1MjRhMzhlNDdjZDcuLmQ0Zjk5ZTZiZWJiYTM5
NDc5YzdkZGNkMDZkMDc5YWEzMGNiZTQ2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVXNlck1ldHJpY3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Vc2VyTWV0cmljcy5qcwpAQCAtMjgsNiArMjgsOSBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3Iu
VXNlck1ldHJpY3MgPSBmdW5jdGlvbigpCiB7CiAgICAgZm9yICh2YXIgYWN0aW9uTmFtZSBpbiBX
ZWJJbnNwZWN0b3IuVXNlck1ldHJpY3MuX0FjdGlvbkNvZGVzKSB7CkBAIC05Myw2ICs5Niw5IEBA
IFdlYkluc3BlY3Rvci5Vc2VyTWV0cmljcy5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICovCiBXZWJJbnNwZWN0b3IuVXNlck1ldHJpY3MuX1JlY29yZGVy
ID0gZnVuY3Rpb24oYWN0aW9uQ29kZSkKIHsKICAgICB0aGlzLl9hY3Rpb25Db2RlID0gYWN0aW9u
Q29kZTsKQEAgLTEwNCwzICsxMTAsNSBAQCBXZWJJbnNwZWN0b3IuVXNlck1ldHJpY3MuX1JlY29y
ZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnJlY29yZEFj
dGlvblRha2VuKHRoaXMuX2FjdGlvbkNvZGUpOwogICAgIH0KIH0KKworV2ViSW5zcGVjdG9yLnVz
ZXJNZXRyaWNzID0gbmV3IFdlYkluc3BlY3Rvci5Vc2VyTWV0cmljcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9WaWV3LmpzCmluZGV4IGY5ODNkODkxN2FkZjg4ZTg1NzNm
MjEzZmU5YTYzODQ3MzEyOGViZmUuLmE1Mjg0YmVmZjkwODZhN2IwOGVlNzAxNTRhYTE4YjRjMmE4
ODRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1ZpZXcuanMKQEAg
LTI0LDYgKzI0LDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKy8qKgorICogQGNvbnN0cnVj
dG9yCisgKiBAcGFyYW0ge0VsZW1lbnQ9fSBlbGVtZW50CisgKi8KIFdlYkluc3BlY3Rvci5WaWV3
ID0gZnVuY3Rpb24oZWxlbWVudCkKIHsKICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9leHRlcm5zLmpzCmluZGV4IDRjMzc3ZjQyNDkzMzM5ZTdmYzZhN2U0MGEyNmZm
ZmRlMzZjZWI2NDYuLmYzNDUxNTEzZGVkMjQ3OTViYTA5YmQ1NjQ4OTlkNDc3ZmRjMmFjOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTMz
LDMgKzMzLDExIEBAIGNvbnNvbGUud2FybiA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHt9CiAKIHZhciBX
ZWJJbnNwZWN0b3IgPSB7fQogdmFyIEluc3BlY3RvckJhY2tlbmQgPSB7fQorCit2YXIgSlNPTiA9
IHt9CisvKiogQHBhcmFtIHtzdHJpbmd9IHN0ciAqLworSlNPTi5wYXJzZSA9IGZ1bmN0aW9uKHN0
cikge30KKworLyoqIEBwYXJhbSB7T2JqZWN0fSBvYmogKi8KKy8qKiBAcmV0dXJuIHtzdHJpbmd9
ICovCitKU09OLnN0cmluZ2lmeSA9IGZ1bmN0aW9uKHN0cikge30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggN2FlOTAzZTVmYWJjM2Zj
ZDViNjdlMzZlYzhkODZiMzA0NDUzZGM2Mi4uNjY0ODFlNzc3MWQ0YTFiYWQ0OWQxNWRlMGJmNTNi
YzJmZmQyMjViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKQEAgLTQ2MCwxNCArNDYwLDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAg
ICB9CiB9CiAKLVdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvciA9IHsKLSAgICBXaW5kb3dzVmlz
dGE6ICJ3aW5kb3dzLXZpc3RhIiwKLSAgICBNYWNUaWdlcjogIm1hYy10aWdlciIsCi0gICAgTWFj
TGVvcGFyZDogIm1hYy1sZW9wYXJkIiwKLSAgICBNYWNTbm93TGVvcGFyZDogIm1hYy1zbm93bGVv
cGFyZCIKLX07Ci0KLShmdW5jdGlvbiBwYXJzZVF1ZXJ5UGFyYW1ldGVycygpCit7KGZ1bmN0aW9u
IHBhcnNlUXVlcnlQYXJhbWV0ZXJzKCkKIHsKICAgICBXZWJJbnNwZWN0b3IucXVlcnlQYXJhbXNP
YmplY3QgPSB7fTsKICAgICB2YXIgcXVlcnlQYXJhbXMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNo
OwpAQCAtNDc4LDcgKzQ3MSw3IEBAIFdlYkluc3BlY3Rvci5QbGF0Zm9ybUZsYXZvciA9IHsKICAg
ICAgICAgdmFyIHBhaXIgPSBwYXJhbXNbaV0uc3BsaXQoIj0iKTsKICAgICAgICAgV2ViSW5zcGVj
dG9yLnF1ZXJ5UGFyYW1zT2JqZWN0W3BhaXJbMF1dID0gcGFpclsxXTsKICAgICB9Ci19KSgpOwor
fSkoKTt9CiAKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7CkBAIC01MTIsOSAr
NTA1LDYgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICBpZiAo
V2ViSW5zcGVjdG9yLnNvY2tldCkKICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRTdHlsZUNsYXNz
KCJyZW1vdGUiKTsKIAotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncyA9IG5ldyBXZWJJbnNwZWN0
b3IuU2V0dGluZ3MoKTsKLSAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MgPSBuZXcgV2ViSW5z
cGVjdG9yLlVzZXJNZXRyaWNzKCk7Ci0KICAgICB0aGlzLl9yZWdpc3RlclNob3J0Y3V0cygpOwog
CiAgICAgLy8gc2V0IG9yZGVyIG9mIHNvbWUgc2VjdGlvbnMgZXhwbGljaXRseQpAQCAtNTQ4LDcg
KzUzOCw5IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgdGhp
cy5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsKCk7CiAKICAgICB0aGlzLnNlYXJjaENvbnRyb2xsZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNlYXJjaENvbnRyb2xsZXIoKTsKLSAgICB0aGlzLmRvbUJyZWFrcG9pbnRzU2lk
ZWJhclBhbmUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRzU2lkZWJhclBhbmUoKTsK
KyAgICAKKyAgICBpZiAoUHJlZmVyZW5jZXMubmF0aXZlSW5zdHJ1bWVudGF0aW9uRW5hYmxlZCkK
KyAgICAgICAgdGhpcy5kb21CcmVha3BvaW50c1NpZGViYXJQYW5lID0gbmV3IFdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50c1NpZGViYXJQYW5lKCk7CiAKICAgICB0aGlzLnBhbmVscyA9IHt9Owog
ICAgIHRoaXMuX2NyZWF0ZVBhbmVscygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2dlbmVyYXRlLXByb3RvY29sLWV4dGVybnMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZ2VuZXJhdGUtcHJvdG9jb2wtZXh0ZXJucwppbmRleCBjMGFlZTYyOWM1MWJkMmVmNDdjYzYy
OGNmYjcwMjQ0OTE5ZGIxMzEwLi4zNWZmNzRlZDUzYWQwNGRlZThmYmY5NzBiZjA3OTRlZmY4MDkx
NTk0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtcHJvdG9j
b2wtZXh0ZXJucworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZ2VuZXJhdGUtcHJvdG9j
b2wtZXh0ZXJucwpAQCAtMTA5LDEzICsxMDksMTMgQEAgZm9yIGRvbWFpbiBpbiBqc29uX2FwaToK
ICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoIm9wdF9jYWxsYmFjayIpOwogICAgICAgICAgICAg
b3V0cHV0X2ZpbGUud3JpdGUoIiVzQWdlbnQuJXMgPSBmdW5jdGlvbiglcykge31cbiIgJSAoZG9t
YWluX25hbWUsIGNvbW1hbmRbIm5hbWUiXSwgIiwgIi5qb2luKHBhcmFtcykpKQogCi0gICAgb3V0
cHV0X2ZpbGUud3JpdGUoIlxuXG5cbi8qKlxuICogQGludGVyZmFjZVxuICovXG4iKQorICAgIG91
dHB1dF9maWxlLndyaXRlKCIvKiogQGludGVyZmFjZSAqL1xuIikKICAgICBvdXRwdXRfZmlsZS53
cml0ZSgiJXNBZ2VudC5EaXNwYXRjaGVyID0gZnVuY3Rpb24oKSB7fTtcbiIgJSBkb21haW5fbmFt
ZSkKICAgICBpZiAiZXZlbnRzIiBpbiBkb21haW46CiAgICAgICAgIGZvciBldmVudCBpbiBkb21h
aW5bImV2ZW50cyJdOgotICAgICAgICAgICAgb3V0cHV0X2ZpbGUud3JpdGUoIlxuLyoqXG4iKQog
ICAgICAgICAgICAgcGFyYW1zID0gW10KICAgICAgICAgICAgIGlmICgicGFyYW1ldGVycyIgaW4g
ZXZlbnQpOgorICAgICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCIvKipcbiIpCiAgICAg
ICAgICAgICAgICAgZm9yIHBhcmFtIGluIGV2ZW50WyJwYXJhbWV0ZXJzIl06CiAgICAgICAgICAg
ICAgICAgICAgIGlmICgib3B0aW9uYWwiIGluIHBhcmFtKToKICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy5hcHBlbmQoIm9wdF8lcyIgJSBwYXJhbVsibmFtZSJdKQpAQCAtMTIzLDYgKzEy
Myw4IEBAIGZvciBkb21haW4gaW4ganNvbl9hcGk6CiAgICAgICAgICAgICAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKHBhcmFtWyJuYW1lIl0pCiAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZS53cml0ZSgiICogQHBhcmFtIHslc30g
JXNcbiIgJSAocGFyYW1fdHlwZShkb21haW5fbmFtZSwgcGFyYW0pLCBwYXJhbVsibmFtZSJdKSkK
LSAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRlKCIgKi9cbiIpCisgICAgICAgICAgICAgICAg
b3V0cHV0X2ZpbGUud3JpdGUoIiAqL1xuIikKICAgICAgICAgICAgIG91dHB1dF9maWxlLndyaXRl
KCIlc0FnZW50LkRpc3BhdGNoZXIucHJvdG90eXBlLiVzID0gZnVuY3Rpb24oJXMpIHt9O1xuIiAl
IChkb21haW5fbmFtZSwgZXZlbnRbIm5hbWUiXSwgIiwgIi5qb2luKHBhcmFtcykpKTsKKyAgICBv
dXRwdXRfZmlsZS53cml0ZSgiLyoqXG4gKiBAcGFyYW0geyVzQWdlbnQuRGlzcGF0Y2hlcn0gZGlz
cGF0Y2hlclxuICovXG4iICUgZG9tYWluX25hbWUpCisgICAgb3V0cHV0X2ZpbGUud3JpdGUoIklu
c3BlY3RvckJhY2tlbmQucmVnaXN0ZXIlc0Rpc3BhdGNoZXIgPSBmdW5jdGlvbihkaXNwYXRjaGVy
KSB7fVxuIiAlIGRvbWFpbl9uYW1lKTsKIG91dHB1dF9maWxlLmNsb3NlKCkK
</data>
<flag name="review"
          id="100845"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>