<?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>128332</bug_id>
          
          <creation_ts>2014-02-06 14:28:28 -0800</creation_ts>
          <short_desc>Web Inspector: Clean up DataGrid and add table columns incrementally</short_desc>
          <delta_ts>2014-02-07 11:44:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128333</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>977536</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-06 14:28:28 -0800</bug_when>
    <thetext>This is implemented in ProbeSetDataGrid subclass, but maybe better in the base class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977538</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-06 14:29:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/16005948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977685</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-06 19:06:37 -0800</bug_when>
    <thetext>I had some column addition code but wasn&apos;t too sure whether it did the right thing or not. I ended up refactoring DataGrid so that it&apos;s much more obvious that adding columns incrementally is correct. See changelog on patch for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977688</commentid>
    <comment_count>3</comment_count>
      <attachid>223415</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-06 19:20:07 -0800</bug_when>
    <thetext>Created attachment 223415
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977918</commentid>
    <comment_count>4</comment_count>
      <attachid>223415</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-07 11:09:48 -0800</bug_when>
    <thetext>Comment on attachment 223415
patch

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

&gt; Source/WebInspectorUI/UserInterface/DataGrid.js:336
&gt; +        for (var [identifier, column] of this.columns)

Sweet!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977958</commentid>
    <comment_count>5</comment_count>
      <attachid>223415</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-07 11:44:47 -0800</bug_when>
    <thetext>Comment on attachment 223415
patch

Clearing flags on attachment: 223415

Committed r163637: &lt;http://trac.webkit.org/changeset/163637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977959</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-07 11:44:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223415</attachid>
            <date>2014-02-06 19:20:07 -0800</date>
            <delta_ts>2014-02-07 11:44:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128332-20140206192006.patch</filename>
            <type>text/plain</type>
            <size>45495</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBi
MmIzMzMzNjQwZjhkZDlhMzRiY2Y1ZjExZTE3ZDZhZWIxN2FkYjNlLi40Y2EwNzczM2ZkNmQ2MTNk
ZDg5NTA2ODhhMzUwNWU4YzViYWI4MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxNC0wMi0wNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBDbGVhbiB1cCBEYXRhR3JpZCBhbmQgYWRkIHRhYmxlIGNv
bHVtbnMgaW5jcmVtZW50YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI4MzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWlzY2VsbGFuZW91cyBpbXByb3ZlbWVudHMgdG8gRGF0YUdyaWQgdG8gbWFr
ZSBpdCBtb3JlIG1haW50YWluYWJsZS4KKyAgICAgICAgSW4gcGFydGljdWxhciwgaXQgbm93IHVz
ZXMgYSBgTWFwYCB0byBzdG9yZSBjb2x1bW4gc2V0dGluZ3MsIGFuZCB0aGUKKyAgICAgICAgY29u
c3RydWN0aW9uIHNlcXVlbmNlIGhhcyBiZWVuIHNpbXBsaWZpZWQgc28gdGhhdCBpdCBpcyBzYWZl
IHRvIGFkZAorICAgICAgICBjb2x1bW5zIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnN0cnVjdG9yIChv
ciBhbnkgbGF0ZXIgdGltZSkuCisKKyAgICAgICAgRGF0YUdyaWQgc3RvcmVzIGEgYnVuY2ggb2Yg
c2V0dGluZ3MgcGVyLWNvbHVtbiwgYnV0IGJlZm9yZSB0aGlzIHdhcyBkb25lCisgICAgICAgIGJ5
IGJvdGggc3RvcmluZyBwcm9wZXJ0aWVzIG9uIHRoZSBwcm92aWRlZCBgY29sdW1uYCBvYmplY3Rz
IGFzIHdlbGwgYXMKKyAgICAgICAga2VlcGluZyBzZXZlcmFsIGBjb2x1bW5JZGVudGlmaWVyYC1r
ZXllZCBtYXBzIGZvciBwcm9wZXJ0aWVzIGxpa2UgYGdyb3VwYAorICAgICAgICBhbmQgYGhpZGRl
bmAuCisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5IGJ5IHVzaW5nIGZvci4ub2Yg
bG9vcHMsIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudCwKKyAgICAgICAgYE5vZGUuY3JlYXRlRWxl
bWVudGAsIGFuZCB1cGRhdGluZyB2YXJpYWJsZSBuYW1lcy4gQWxsIHZhcmlhYmxlcyB0aGF0IHJl
ZmVyCisgICAgICAgIHRvIERPTSBub2RlcyBub3cgaGF2ZSBhIGBFbGVtZW50YCBzdWZmaXggdG8g
ZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIG1vZGVsIG9iamVjdHMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0RhdGFHcmlkLmpzOgorICAgICAgICAoLnNvcnREYXRhR3JpZCk6CisgICAgICAgIChX
ZWJJbnBlY3Rvci5EYXRhR3JpZCk6IENyZWF0ZSBhbGwgRE9NIGVsZW1lbnRzIGJlZm9yZSBwb3B1
bGF0aW5nIGNvbHVtbnMuCisgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgb2JqZWN0cyBmb3Igc3Rv
cmluZyBwZXItY29sdW1uIHZhbHVlcy4gQ29weSBjb2x1bW4gc2V0dGluZ3MKKyAgICAgICAgaW50
byBhIG1hcCByYXRoZXIgdGhhbiBtdXRhdGluZyB0aGUgcGFzc2VkLWluIEpTT04tbGlrZSBzZXR0
aW5ncyBkYXRhIHN0cnVjdHVyZS4KKworICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNy
ZWF0ZVNvcnRhYmxlRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZS5nZXQgbGVuZ3RoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUuZ2V0IHNjcm9sbENvbnRhaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLmlzU2Nyb2xsZWRUb0xhc3RSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5zY3JvbGxUb0xhc3RSb3cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fcG9zaXRpb25SZXNpemVyRWxlbWVudHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5hZGRDcmVhdGlvbk5vZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS4pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5zb3J0Tm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLnByb3RvdHlwZS5kYXRhR3JpZE5vZGVGcm9tUG9pbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fY2xpY2tJbkhlYWRlckNlbGwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5pc0NvbHVtblNvcnRDb2x1bW4p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5oZWFkZXJUYWJsZUhl
YWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9jb3B5VGV4
dEZvckRhdGFHcmlkTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlLl9yZXNpemVyRHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUuY3JlYXRlQ2VsbHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5nZXQgdmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmVsZW1lbnRXaXRoQ29sdW1uSWRlbnRpZmllcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fYXR0YWNoKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUudHJlZUVsZW1lbnRNYXRjaGVzQWN0
aXZlU2NvcGVGaWx0ZXJzLnNjb3BlQmFyLnRoaXMuY29sdW1ucy5nZXQgc2NvcGVCYXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlLnRyZWVFbGVtZW50
TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVycyk6CisKIDIwMTQtMDItMDUgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIHByb2JlIG1hbmFn
ZXIgYW5kIG1vZGVsIG9iamVjdHMgdG8gdGhlIGZyb250ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFHcmlkLmpzCmluZGV4IGFjNTIxNzVjOTdkNzBlM2E3
MTRjY2ZjNTk2YzgxNWI2ZGI5MWUzOTcuLmQwNDk1MWYyZWVjN2QzNjc4MWZlOGM5YzAwMTM4OWRm
NTAyNDhhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0RhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Rh
dGFHcmlkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNzYgKzIzLDgxIEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9i
amVjdH0KLSAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSwgbnVt
YmVyLCBzdHJpbmcsIHN0cmluZyk9fSBlZGl0Q2FsbGJhY2sKLSAqIEBwYXJhbSB7ZnVuY3Rpb24o
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSk9fSBkZWxldGVDYWxsYmFjawotICovCi1XZWJJbnNw
ZWN0b3IuRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5zLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNh
bGxiYWNrKQorV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1uc0RhdGEsIGVk
aXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiB7CisgICAgdGhpcy5jb2x1bW5zID0gbmV3IE1h
cDsKKyAgICB0aGlzLm9yZGVyZWRDb2x1bW5zID0gW107CisKKyAgICBmb3IgKHZhciBjb2x1bW5J
ZGVudGlmaWVyIGluIGNvbHVtbnNEYXRhKSB7CisgICAgICAgIGNvbHVtbkRhdGEgPSBuZXcgTWFw
OworICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gY29sdW1uc0RhdGFbY29sdW1uSWRl
bnRpZmllcl0pCisgICAgICAgICAgICBjb2x1bW5EYXRhLnNldChwcm9wZXJ0eU5hbWUsIGNvbHVt
bnNEYXRhW2NvbHVtbklkZW50aWZpZXJdW3Byb3BlcnR5TmFtZV0pOworCisgICAgICAgIGNvbHVt
bkRhdGEuc2V0KCJvcmRpbmFsIiwgdGhpcy5vcmRlcmVkQ29sdW1ucy5sZW5ndGgpOworICAgICAg
ICBjb2x1bW5EYXRhLnNldCgiY29sdW1uSWRlbnRpZmllciIsIGNvbHVtbklkZW50aWZpZXIpOwor
ICAgICAgICB0aGlzLm9yZGVyZWRDb2x1bW5zLnB1c2goY29sdW1uSWRlbnRpZmllcik7CisgICAg
ICAgIHRoaXMuY29sdW1ucy5zZXQoY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0YSk7CisgICAg
fQorCisgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbnVs
bDsKKyAgICB0aGlzLmV4cGFuZE5vZGVzV2hlbkFycm93aW5nID0gZmFsc2U7CisgICAgdGhpcy5y
b290ID0gdHJ1ZTsKKyAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgdGhpcy5leHBh
bmRlZCA9IHRydWU7CisgICAgdGhpcy5yZXZlYWxlZCA9IHRydWU7CisgICAgdGhpcy5zZWxlY3Rl
ZCA9IGZhbHNlOworICAgIHRoaXMuZGF0YUdyaWQgPSB0aGlzOworICAgIHRoaXMuaW5kZW50V2lk
dGggPSAxNTsKKyAgICB0aGlzLnJlc2l6ZXJFbGVtZW50cyA9IFtdOworICAgIHRoaXMuX2NvbHVt
bldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7CisKICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gImRh
dGEtZ3JpZCI7CiAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gMDsKICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0aGlzKSwg
ZmFsc2UpOwogICAgIHRoaXMuZWxlbWVudC5jb3B5SGFuZGxlciA9IHRoaXM7CiAKLSAgICB0aGlz
Ll9oZWFkZXJUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgdGhp
cy5faGVhZGVyVGFibGUuY2xhc3NOYW1lID0gImhlYWRlciI7Ci0gICAgdGhpcy5faGVhZGVyVGFi
bGVIZWFkZXJzID0ge307CisgICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGFibGUiKTsKKyAgICB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY2xh
c3NOYW1lID0gImhlYWRlciI7CisgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1l
bnQgPSB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY3JlYXRlQ2hpbGQoImNvbGdyb3VwIik7Cisg
ICAgdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlRWxlbWVu
dC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKKyAgICB0aGlzLl9oZWFkZXJUYWJsZVJvd0VsZW1lbnQg
PSB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOworCisgICAg
dGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMgPSBuZXcgTWFwOwogCi0gICAgdGhpcy5fZGF0
YVRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKLSAgICB0aGlzLl9kYXRh
VGFibGUuY2xhc3NOYW1lID0gImRhdGEiOworICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9zY3JvbGxDb250
YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhLWNvbnRhaW5lciI7CiAKLSAgICB0aGlzLl9k
YXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5E
YXRhVGFibGUuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZGF0YVRhYmxlLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKKyAgICB0aGlz
Ll9kYXRhVGFibGVFbGVtZW50ID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5jcmVhdGVD
aGlsZCgidGFibGUiKTsKKyAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmNsYXNzTmFtZSA9ICJk
YXRhIjsKIAotICAgIHRoaXMuX2RhdGFUYWJsZS5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVu
dSIsIHRoaXMuX2NvbnRleHRNZW51SW5EYXRhVGFibGUuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAg
dGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlz
Ll9tb3VzZURvd25JbkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKKyAgICB0aGlzLl9kYXRhVGFibGVF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkRhdGFUYWJsZS5i
aW5kKHRoaXMpKTsKKyAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4dE1lbnVJbkRhdGFUYWJsZS5iaW5kKHRoaXMpLCB0
cnVlKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgYSBjcmVhdGVDYWxsYmFjayB3aGljaCBpcyBkaWZm
ZXJlbnQgZnJvbSBlZGl0Q2FsbGJhY2sgYW5kIGhhcyBkaWZmZXJlbnQKICAgICAvLyBiZWhhdmlv
ciB3aGVuIGNyZWF0aW5nIGEgbmV3IG5vZGUuCiAgICAgaWYgKGVkaXRDYWxsYmFjaykgewotICAg
ICAgICB0aGlzLl9kYXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9v
bmRibGNsaWNrLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX29uZGJsY2xpY2suYmluZCh0
aGlzKSwgZmFsc2UpOwogICAgICAgICB0aGlzLl9lZGl0Q2FsbGJhY2sgPSBlZGl0Q2FsbGJhY2s7
CiAgICAgfQogICAgIGlmIChkZWxldGVDYWxsYmFjaykKICAgICAgICAgdGhpcy5fZGVsZXRlQ2Fs
bGJhY2sgPSBkZWxldGVDYWxsYmFjazsKIAotICAgIHRoaXMuYWxpZ25lZCA9IHt9OwotICAgIHRo
aXMuZ3JvdXBzID0ge307Ci0gICAgdGhpcy5faGlkZGVuQ29sdW1ucyA9IHt9OwotCi0gICAgdGhp
cy5fc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5fc2Nyb2xsQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJkYXRhLWNvbnRhaW5lciI7Ci0gICAg
dGhpcy5fc2Nyb2xsQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX2RhdGFUYWJsZSk7Ci0KLSAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyVGFibGUpOwotICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxDb250YWluZXIpOwotCi0gICAgdmFyIGhl
YWRlclJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdmFyIGNvbHVtbkdy
b3VwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY29sZ3JvdXAiKTsKLSAgICB0aGlzLl9jb2x1
bW5Db3VudCA9IDA7CisgICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50ID0gdGhp
cy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpOworICAgIHRo
aXMuX2RhdGFUYWJsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YVRhYmxlQ29sdW1uR3Jv
dXBFbGVtZW50KTsKIAotICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykg
ewotICAgICAgICB2YXIgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXTsKLSAgICAg
ICAgaWYgKGNvbHVtbi5kaXNjbG9zdXJlKQotICAgICAgICAgICAgdGhpcy5kaXNjbG9zdXJlQ29s
dW1uSWRlbnRpZmllciA9IGNvbHVtbklkZW50aWZpZXI7CisgICAgLy8gVGhpcyBlbGVtZW50IGlz
IHVzZWQgYnkgRGF0YUdyaWROb2RlcyB0byBtYW5pcHVsYXRlIHRhYmxlIHJvd3MgYW5kIGNlbGxz
LgorICAgIHRoaXMuZGF0YVRhYmxlQm9keUVsZW1lbnQgPSB0aGlzLl9kYXRhVGFibGVFbGVtZW50
LmNyZWF0ZUNoaWxkKCJ0Ym9keSIpOworICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQgPSB0aGlz
LmRhdGFUYWJsZUJvZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOworICAgIHRoaXMuX2ZpbGxl
clJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImZpbGxlciI7CiAKLSAgICAgICAgdmFyIGNvbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbCIpOwotICAgICAgICBpZiAoY29sdW1uLndpZHRoKQot
ICAgICAgICAgICAgY29sLnN0eWxlLndpZHRoID0gY29sdW1uLndpZHRoOwotICAgICAgICBjb2x1
bW4uZWxlbWVudCA9IGNvbDsKLSAgICAgICAgY29sdW1uR3JvdXAuYXBwZW5kQ2hpbGQoY29sKTsK
LQotICAgICAgICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7Ci0gICAg
ICAgIGNlbGwuY2xhc3NOYW1lID0gY29sdW1uSWRlbnRpZmllciArICItY29sdW1uIjsKLSAgICAg
ICAgY2VsbC5jb2x1bW5JZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmllcjsKLSAgICAgICAgaWYg
KGNvbHVtbi5hbGlnbmVkKQotICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKGNvbHVtbi5h
bGlnbmVkKTsKLSAgICAgICAgdGhpcy5faGVhZGVyVGFibGVIZWFkZXJzW2NvbHVtbklkZW50aWZp
ZXJdID0gY2VsbDsKLQotICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIGlmIChjb2x1bW4udGl0bGVET01GcmFnbWVudCkKLSAgICAgICAgICAg
IGRpdi5hcHBlbmRDaGlsZChjb2x1bW4udGl0bGVET01GcmFnbWVudCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRpdi50ZXh0Q29udGVudCA9IGNvbHVtbi50aXRsZSB8fCAiIjsKLSAgICAg
ICAgY2VsbC5hcHBlbmRDaGlsZChkaXYpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQpOworICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50KTsKIAotICAgICAgICBpZiAoY29sdW1uLnNvcnQp
IHsKLSAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgic29ydC0iICsgY29sdW1uLnNvcnQp
OwotICAgICAgICAgICAgdGhpcy5fc29ydENvbHVtbkNlbGwgPSBjZWxsOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGNvbHVtbi5zb3J0YWJsZSkgewotICAgICAgICAgICAgY2VsbC5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsaWNrSW5IZWFkZXJDZWxsLmJpbmQodGhpcyksIGZh
bHNlKTsKLSAgICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgic29ydGFibGUiKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChjb2x1bW4uYWxpZ25lZCkKLSAgICAgICAgICAgIHRoaXMuYWxp
Z25lZFtjb2x1bW5JZGVudGlmaWVyXSA9IGNvbHVtbi5hbGlnbmVkOwotCi0gICAgICAgIGlmIChj
b2x1bW4uZ3JvdXApIHsKLSAgICAgICAgICAgIHRoaXMuZ3JvdXBzW2NvbHVtbklkZW50aWZpZXJd
ID0gY29sdW1uLmdyb3VwOwotICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJjb2x1bW4t
Z3JvdXAtIiArIGNvbHVtbi5ncm91cCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29sdW1u
LmNvbGxhcHNlc0dyb3VwKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb2x1bW4uZ3Jv
dXAgIT09IGNvbHVtbi5jb2xsYXBzZXNHcm91cCk7Ci0KLSAgICAgICAgICAgIHZhciBkaXZpZGVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBkaXZpZGVyLmNs
YXNzTmFtZSA9ICJkaXZpZGVyIjsKLSAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQoZGl2aWRl
cik7Ci0KLSAgICAgICAgICAgIHZhciBjb2xsYXBzZURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICAgICAgY29sbGFwc2VEaXYuY2xhc3NOYW1lID0gImNvbGxhcHNl
ci1idXR0b24iOwotICAgICAgICAgICAgY29sbGFwc2VEaXYudGl0bGUgPSB0aGlzLl9jb2xsYXBz
ZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29sVGlwKCk7Ci0gICAgICAgICAgICBjb2xsYXBzZURp
di5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9tb3VzZW92ZXJDb2x1bW5Db2xs
YXBzZXIuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICBjb2xsYXBzZURpdi5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZW91dCIsIHRoaXMuX21vdXNlb3V0Q29sdW1uQ29sbGFwc2VyLmJpbmQodGhpcykp
OwotICAgICAgICAgICAgY29sbGFwc2VEaXYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9jbGlja0luQ29sdW1uQ29sbGFwc2VyLmJpbmQodGhpcykpOwotICAgICAgICAgICAgY2VsbC5h
cHBlbmRDaGlsZChjb2xsYXBzZURpdik7Ci0KLSAgICAgICAgICAgIGNlbGwuY29sbGFwc2VzR3Jv
dXAgPSBjb2x1bW4uY29sbGFwc2VzR3JvdXA7Ci0gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5h
ZGQoImNvbGxhcHNlciIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaGVhZGVyUm93LmFwcGVuZENo
aWxkKGNlbGwpOwotCi0gICAgICAgICsrdGhpcy5fY29sdW1uQ291bnQ7Ci0gICAgfQotCi0gICAg
Y29sdW1uR3JvdXAuc3BhbiA9IHRoaXMuX2NvbHVtbkNvdW50OwotCi0gICAgdGhpcy5faGVhZGVy
VGFibGVDb2x1bW5Hcm91cCA9IGNvbHVtbkdyb3VwOwotICAgIHRoaXMuX2hlYWRlclRhYmxlLmFw
cGVuZENoaWxkKHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXApOwotICAgIHRoaXMuaGVhZGVy
VGFibGVCb2R5LmFwcGVuZENoaWxkKGhlYWRlclJvdyk7Ci0KLSAgICB2YXIgZmlsbGVyUm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICBmaWxsZXJSb3cuY2xhc3NOYW1lID0g
ImZpbGxlciI7Ci0KLSAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnMpIHsK
LSAgICAgICAgdmFyIGNvbHVtbiA9IGNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl07Ci0gICAgICAg
IHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHRkLmNsYXNz
TmFtZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7Ci0gICAgICAgIHRkLl9fY29sdW1u
SWRlbnRpZmllciA9IGNvbHVtbklkZW50aWZpZXI7Ci0gICAgICAgIHZhciBncm91cCA9IHRoaXMu
Z3JvdXBzW2NvbHVtbklkZW50aWZpZXJdOwotICAgICAgICBpZiAoZ3JvdXApCi0gICAgICAgICAg
ICB0ZC5jbGFzc0xpc3QuYWRkKCJjb2x1bW4tZ3JvdXAtIiArIGdyb3VwKTsKLSAgICAgICAgZmls
bGVyUm93LmFwcGVuZENoaWxkKHRkKTsKLSAgICB9Ci0KLSAgICB0aGlzLl9kYXRhVGFibGVDb2x1
bW5Hcm91cCA9IGNvbHVtbkdyb3VwLmNsb25lTm9kZSh0cnVlKTsKLSAgICB0aGlzLl9kYXRhVGFi
bGUuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXApOwotICAgIHRoaXMuZGF0
YVRhYmxlQm9keS5hcHBlbmRDaGlsZChmaWxsZXJSb3cpOwotCi0gICAgdGhpcy5jb2x1bW5zID0g
Y29sdW1ucyB8fCB7fTsKLSAgICB0aGlzLl9jb2x1bW5zQXJyYXkgPSBbXTsKLQotICAgIGZvciAo
dmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewotICAgICAgICBjb2x1bW5zW2NvbHVt
bklkZW50aWZpZXJdLm9yZGluYWwgPSB0aGlzLl9jb2x1bW5zQXJyYXkubGVuZ3RoOwotICAgICAg
ICBjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLmlkZW50aWZpZXIgPSBjb2x1bW5JZGVudGlmaWVy
OwotICAgICAgICB0aGlzLl9jb2x1bW5zQXJyYXkucHVzaChjb2x1bW5zW2NvbHVtbklkZW50aWZp
ZXJdKTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvbHVtbnNBcnJh
eS5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fY29sdW1uc0FycmF5W2ldLmJvZHlFbGVtZW50
ID0gdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXAuY2hpbGRyZW5baV07Ci0KLSAgICB0aGlzLmNo
aWxkcmVuID0gW107Ci0gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsOwotICAgIHRoaXMuZXhw
YW5kTm9kZXNXaGVuQXJyb3dpbmcgPSBmYWxzZTsKLSAgICB0aGlzLnJvb3QgPSB0cnVlOwotICAg
IHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKLSAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTsKLSAg
ICB0aGlzLnJldmVhbGVkID0gdHJ1ZTsKLSAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7Ci0gICAg
dGhpcy5kYXRhR3JpZCA9IHRoaXM7Ci0gICAgdGhpcy5pbmRlbnRXaWR0aCA9IDE1OwotICAgIHRo
aXMucmVzaXplcnMgPSBbXTsKLSAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZh
bHNlOwotCi0gICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKSB7Ci0gICAg
ICAgIGlmIChjb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdLmhpZGRlbikKLSAgICAgICAgICAgIHRo
aXMuX2hpZGVDb2x1bW4oY29sdW1uSWRlbnRpZmllcik7Ci0gICAgfQorICAgIGZvciAodmFyIGNv
bHVtbklkZW50aWZpZXIgb2YgdGhpcy5vcmRlcmVkQ29sdW1ucykKKyAgICAgICAgdGhpcy5hZGRD
b2x1bW4oY29sdW1uSWRlbnRpZmllcik7CiAKICAgICB0aGlzLl9nZW5lcmF0ZVNvcnRJbmRpY2F0
b3JJbWFnZXNJZk5lZWRlZCgpOwogfQpAQCAtMjE1LDE1ICsxMjAsMTUgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5OYW1lcywg
dmFsdWVzKQogICAgIGlmICghbnVtQ29sdW1ucykKICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAg
ICB2YXIgY29sdW1ucyA9IHt9OworICAgIHZhciBjb2x1bW5zRGF0YSA9IHt9OwogCi0gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5OYW1lcy5sZW5ndGg7ICsraSkgeworICAgIGZvciAodmFy
IGNvbHVtbk5hbWUgb2YgY29sdW1uTmFtZXMpIHsKICAgICAgICAgdmFyIGNvbHVtbiA9IHt9Owot
ICAgICAgICBjb2x1bW4ud2lkdGggPSBjb2x1bW5OYW1lc1tpXS5sZW5ndGg7Ci0gICAgICAgIGNv
bHVtbi50aXRsZSA9IGNvbHVtbk5hbWVzW2ldOworICAgICAgICBjb2x1bW4ud2lkdGggPSBjb2x1
bW5OYW1lLmxlbmd0aDsKKyAgICAgICAgY29sdW1uLnRpdGxlID0gY29sdW1uTmFtZTsKICAgICAg
ICAgY29sdW1uLnNvcnRhYmxlID0gdHJ1ZTsKIAotICAgICAgICBjb2x1bW5zW2NvbHVtbk5hbWVz
W2ldXSA9IGNvbHVtbjsKKyAgICAgICAgY29sdW1uc0RhdGFbY29sdW1uTmFtZV0gPSBjb2x1bW47
CiAgICAgfQogCiAgICAgdmFyIG5vZGVzID0gW107CkBAIC0yMzcsMTAgKzE0Miw5IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1u
TmFtZXMsIHZhbHVlcykKICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKICAgICB9CiAKLSAgICB2
YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMpOwotICAgIHZh
ciBsZW5ndGggPSBub2Rlcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkKLSAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZXNbaV0pOworICAgIHZhciBk
YXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1uc0RhdGEpOworICAgIGZv
ciAodmFyIG5vZGUgb2Ygbm9kZXMpCisgICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUp
OwogCiAgICAgZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
RXZlbnQuU29ydENoYW5nZWQsIHNvcnREYXRhR3JpZCwgdGhpcyk7CiAKQEAgLTI1MSw4ICsxNTUs
OCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0
aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAgICAgICAgIHZhciBzb3J0RGlyZWN0aW9uID0gZGF0
YUdyaWQuc29ydE9yZGVyID09PSAiYXNjZW5kaW5nIiA/IDEgOiAtMTsKICAgICAgICAgdmFyIGNv
bHVtbklzTnVtZXJpYyA9IHRydWU7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rl
cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihub2Rlc1tpXS5k
YXRhW3NvcnRDb2x1bW5JZGVudGlmaWVyXSB8fCAiIikpKQorICAgICAgICBmb3IgKHZhciBub2Rl
IG9mIG5vZGVzKSB7CisgICAgICAgICAgICBpZiAoaXNOYU4oTnVtYmVyKG5vZGUuZGF0YVtzb3J0
Q29sdW1uSWRlbnRpZmllcl0gfHwgIiIpKSkKICAgICAgICAgICAgICAgICBjb2x1bW5Jc051bWVy
aWMgPSBmYWxzZTsKICAgICAgICAgfQogCkBAIC0yNzUsOCArMTc5LDggQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5OYW1lcywg
dmFsdWVzKQogCiAgICAgICAgIG5vZGVzLnNvcnQoY29tcGFyYXRvcik7CiAgICAgICAgIGRhdGFH
cmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMu
bGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBkYXRhR3JpZC5hcHBlbmRDaGlsZChub2Rlc1tpXSk7
CisgICAgICAgIGZvciAodmFyIG5vZGUgb2Ygbm9kZXMpCisgICAgICAgICAgICBkYXRhR3JpZC5h
cHBlbmRDaGlsZChub2RlKTsKICAgICB9CiAgICAgcmV0dXJuIGRhdGFHcmlkOwogfQpAQCAtNDIz
LDYzICszMjcsMzMgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgfSwKIAotICAgIGdldCBoZWFkZXJUYWJsZUJvZHkoKQotICAg
IHsKLSAgICAgICAgaWYgKCJfaGVhZGVyVGFibGVCb2R5IiBpbiB0aGlzKQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlQm9keTsKLQotICAgICAgICB0aGlzLl9oZWFkZXJUYWJs
ZUJvZHkgPSB0aGlzLl9oZWFkZXJUYWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVsw
XTsKLSAgICAgICAgaWYgKCF0aGlzLl9oZWFkZXJUYWJsZUJvZHkpIHsKLSAgICAgICAgICAgIHRo
aXMuX2hlYWRlclRhYmxlQm9keSA9IHRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRib2R5Iik7Ci0gICAgICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZS5pbnNlcnRCZWZv
cmUodGhpcy5faGVhZGVyVGFibGVCb2R5LCB0aGlzLl9oZWFkZXJUYWJsZS50Rm9vdCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyVGFibGVCb2R5OwotICAgIH0sCi0K
LSAgICBnZXQgZGF0YVRhYmxlQm9keSgpCi0gICAgewotICAgICAgICBpZiAoIl9kYXRhVGFibGVC
b2R5IiBpbiB0aGlzKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFUYWJsZUJvZHk7Ci0K
LSAgICAgICAgdGhpcy5fZGF0YVRhYmxlQm9keSA9IHRoaXMuX2RhdGFUYWJsZS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGJvZHkiKVswXTsKLSAgICAgICAgaWYgKCF0aGlzLl9kYXRhVGFibGVCb2R5
KSB7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVCb2R5ID0gdGhpcy5lbGVtZW50Lm93bmVy
RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFU
YWJsZS5pbnNlcnRCZWZvcmUodGhpcy5fZGF0YVRhYmxlQm9keSwgdGhpcy5fZGF0YVRhYmxlLnRG
b290KTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLl9kYXRhVGFibGVCb2R5Owot
ICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcj19IG1heERlc2NlbnRMZXZl
bAotICAgICAqLwogICAgIGF1dG9TaXplQ29sdW1uczogZnVuY3Rpb24obWluUGVyY2VudCwgbWF4
UGVyY2VudCwgbWF4RGVzY2VudExldmVsKQogICAgIHsKICAgICAgICAgaWYgKG1pblBlcmNlbnQp
Ci0gICAgICAgICAgICBtaW5QZXJjZW50ID0gTWF0aC5taW4obWluUGVyY2VudCwgTWF0aC5mbG9v
cigxMDAgLyB0aGlzLl9jb2x1bW5Db3VudCkpOworICAgICAgICAgICAgbWluUGVyY2VudCA9IE1h
dGgubWluKG1pblBlcmNlbnQsIE1hdGguZmxvb3IoMTAwIC8gdGhpcy5vcmRlcmVkQ29sdW1ucy5s
ZW5ndGgpKTsKICAgICAgICAgdmFyIHdpZHRocyA9IHt9OwotICAgICAgICB2YXIgY29sdW1ucyA9
IHRoaXMuY29sdW1uczsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1
bW5zKQotICAgICAgICAgICAgd2lkdGhzW2NvbHVtbklkZW50aWZpZXJdID0gKGNvbHVtbnNbY29s
dW1uSWRlbnRpZmllcl0udGl0bGUgfHwgIiIpLmxlbmd0aDsKKyAgICAgICAgLy8gRm9yIHRoZSBm
aXJzdCB3aWR0aCBhcHByb3hpbWF0aW9uLCB1c2UgdGhlIGNoYXJhY3RlciBsZW5ndGggb2YgY29s
dW1uIHRpdGxlcy4KKyAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhp
cy5jb2x1bW5zKQorICAgICAgICAgICAgd2lkdGhzW2lkZW50aWZpZXJdID0gY29sdW1uLmdldCgi
dGl0bGUiLCAiIikubGVuZ3RoOwogCisgICAgICAgIC8vIE5vdyBhcHByb3hpbWF0ZSB0aGUgd2lk
dGggb2YgZWFjaCBjb2x1bW4gYXMgbWF4KHRpdGxlLCBjZWxscykuCiAgICAgICAgIHZhciBjaGls
ZHJlbiA9IG1heERlc2NlbnRMZXZlbCA/IHRoaXMuX2VudW1lcmF0ZUNoaWxkcmVuKHRoaXMsIFtd
LCBtYXhEZXNjZW50TGV2ZWwgKyAxKSA6IHRoaXMuY2hpbGRyZW47Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBub2Rl
ID0gY2hpbGRyZW5baV07Ci0gICAgICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGlu
IGNvbHVtbnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IG5vZGUuZGF0YVtjb2x1bW5J
ZGVudGlmaWVyXSB8fCAiIjsKLSAgICAgICAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiB3aWR0
aHNbY29sdW1uSWRlbnRpZmllcl0pCi0gICAgICAgICAgICAgICAgICAgIHdpZHRoc1tjb2x1bW5J
ZGVudGlmaWVyXSA9IHRleHQubGVuZ3RoOworICAgICAgICBmb3IgKHZhciBub2RlIG9mIGNoaWxk
cmVuKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIHRoaXMuY29sdW1ucy5r
ZXlzKCkpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IG5vZGUuZGF0YVtpZGVudGlmaWVy
XSB8fCAiIjsKKyAgICAgICAgICAgICAgICBpZiAodGV4dC5sZW5ndGggPiB3aWR0aHNbaWRlbnRp
Zmllcl0pCisgICAgICAgICAgICAgICAgICAgIHdpZHRoc1tpZGVudGlmaWVyXSA9IHRleHQubGVu
Z3RoOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdmFyIHRvdGFsQ29sdW1u
V2lkdGhzID0gMDsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5z
KQotICAgICAgICAgICAgdG90YWxDb2x1bW5XaWR0aHMgKz0gd2lkdGhzW2NvbHVtbklkZW50aWZp
ZXJdOworICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIHRoaXMuY29sdW1ucy5rZXlzKCkp
CisgICAgICAgICAgICB0b3RhbENvbHVtbldpZHRocyArPSB3aWR0aHNbaWRlbnRpZmllcl07CiAK
KyAgICAgICAgLy8gQ29tcHV0ZSBwZXJjZW50YWdlcyBhbmQgY2xhbXAgZGVzaXJlZCB3aWR0aHMg
dG8gbWluIGFuZCBtYXggd2lkdGhzLgogICAgICAgICB2YXIgcmVjb3VwUGVyY2VudCA9IDA7Ci0g
ICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewotICAgICAgICAg
ICAgdmFyIHdpZHRoID0gTWF0aC5yb3VuZCgxMDAgKiB3aWR0aHNbY29sdW1uSWRlbnRpZmllcl0g
LyB0b3RhbENvbHVtbldpZHRocyk7CisgICAgICAgIGZvciAodmFyIGlkZW50aWZpZXIgb2YgdGhp
cy5jb2x1bW5zLmtleXMoKSkgeworICAgICAgICAgICAgdmFyIHdpZHRoID0gTWF0aC5yb3VuZCgx
MDAgKiB3aWR0aHNbaWRlbnRpZmllcl0gLyB0b3RhbENvbHVtbldpZHRocyk7CiAgICAgICAgICAg
ICBpZiAobWluUGVyY2VudCAmJiB3aWR0aCA8IG1pblBlcmNlbnQpIHsKICAgICAgICAgICAgICAg
ICByZWNvdXBQZXJjZW50ICs9IChtaW5QZXJjZW50IC0gd2lkdGgpOwogICAgICAgICAgICAgICAg
IHdpZHRoID0gbWluUGVyY2VudDsKQEAgLTQ4NywxMyArMzYxLDE0IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmVjb3VwUGVyY2VudCAtPSAo
d2lkdGggLSBtYXhQZXJjZW50KTsKICAgICAgICAgICAgICAgICB3aWR0aCA9IG1heFBlcmNlbnQ7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aWR0aHNbY29sdW1uSWRlbnRpZmllcl0gPSB3
aWR0aDsKKyAgICAgICAgICAgIHdpZHRoc1tpZGVudGlmaWVyXSA9IHdpZHRoOwogICAgICAgICB9
CiAKKyAgICAgICAgLy8gSWYgd2UgYXNzaWduZWQgdG9vIG11Y2ggd2lkdGggZHVlIHRvIHRoZSBh
Ym92ZSwgcmVkdWNlIGNvbHVtbiB3aWR0aHMuCiAgICAgICAgIHdoaWxlIChtaW5QZXJjZW50ICYm
IHJlY291cFBlcmNlbnQgPiAwKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlm
aWVyIGluIGNvbHVtbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAod2lkdGhzW2NvbHVtbklkZW50
aWZpZXJdID4gbWluUGVyY2VudCkgewotICAgICAgICAgICAgICAgICAgICAtLXdpZHRoc1tjb2x1
bW5JZGVudGlmaWVyXTsKKyAgICAgICAgICAgIGZvciAodmFyIGlkZW50aWZpZXIgb2YgdGhpcy5j
b2x1bW5zLmtleXMoKSkgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aHNbaWRlbnRpZmllcl0g
PiBtaW5QZXJjZW50KSB7CisgICAgICAgICAgICAgICAgICAgIC0td2lkdGhzW2lkZW50aWZpZXJd
OwogICAgICAgICAgICAgICAgICAgICAtLXJlY291cFBlcmNlbnQ7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghcmVjb3VwUGVyY2VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNTAxLDEwICszNzYsMTEgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIC8vIElmIGV4dHJhIHdpZHRoIHJl
bWFpbnMgYWZ0ZXIgY2xhbXBpbmcgd2lkdGhzLCBleHBhbmQgY29sdW1uIHdpZHRocy4KICAgICAg
ICAgd2hpbGUgKG1heFBlcmNlbnQgJiYgcmVjb3VwUGVyY2VudCA8IDApIHsKLSAgICAgICAgICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewotICAgICAgICAgICAgICAg
IGlmICh3aWR0aHNbY29sdW1uSWRlbnRpZmllcl0gPCBtYXhQZXJjZW50KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICsrd2lkdGhzW2NvbHVtbklkZW50aWZpZXJdOworICAgICAgICAgICAgZm9yICh2
YXIgaWRlbnRpZmllciBvZiB0aGlzLmNvbHVtbnMua2V5cygpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHdpZHRoc1tpZGVudGlmaWVyXSA8IG1heFBlcmNlbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgKyt3aWR0aHNbaWRlbnRpZmllcl07CiAgICAgICAgICAgICAgICAgICAgICsrcmVjb3VwUGVy
Y2VudDsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWNvdXBQZXJjZW50KQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MTIsMTIgKzM4OCw4NCBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKQotICAgICAgICAgICAgY29s
dW1uc1tjb2x1bW5JZGVudGlmaWVyXS5lbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGhzW2NvbHVt
bklkZW50aWZpZXJdICsgIiUiOworICAgICAgICBmb3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1u
XSBvZiB0aGlzLmNvbHVtbnMpCisgICAgICAgICAgICBjb2x1bW4uZ2V0KCJlbGVtZW50Iikuc3R5
bGUud2lkdGggPSB3aWR0aHNbaWRlbnRpZmllcl0gKyAiJSI7CiAgICAgICAgIHRoaXMuX2NvbHVt
bldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7
CiAgICAgfSwKIAorICAgIGFkZENvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZp
ZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydChjb2x1bW4pOworCisgICAgICAgIGlmIChjb2x1
bW4uaGFzKCJkaXNjbG9zdXJlIikpCisgICAgICAgICAgICB0aGlzLmRpc2Nsb3N1cmVDb2x1bW5J
ZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmllcjsKKworICAgICAgICB2YXIgaGVhZGVyQ29sdW1u
RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNyZWF0ZUNoaWxk
KCJjb2wiKTsKKyAgICAgICAgaWYgKGNvbHVtbi5oYXMoIndpZHRoIikpCisgICAgICAgICAgICBo
ZWFkZXJDb2x1bW5FbGVtZW50LnN0eWxlLndpZHRoID0gY29sdW1uLmdldCgid2lkdGgiKTsKKyAg
ICAgICAgY29sdW1uLnNldCgiZWxlbWVudCIsIGhlYWRlckNvbHVtbkVsZW1lbnQpOworCisgICAg
ICAgIHZhciBoZWFkZXJDZWxsRWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlUm93RWxlbWVudC5j
cmVhdGVDaGlsZCgidGgiKTsKKyAgICAgICAgaGVhZGVyQ2VsbEVsZW1lbnQuY2xhc3NOYW1lID0g
Y29sdW1uSWRlbnRpZmllciArICItY29sdW1uIjsKKyAgICAgICAgaGVhZGVyQ2VsbEVsZW1lbnQu
Y29sdW1uSWRlbnRpZmllciA9IGNvbHVtbklkZW50aWZpZXI7CisgICAgICAgIGlmIChjb2x1bW4u
aGFzKCJhbGlnbmVkIikpCisgICAgICAgICAgICBoZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3Qu
YWRkKGNvbHVtbi5nZXQoImFsaWduZWQiKSk7CisgICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ2Vs
bEVsZW1lbnRzLnNldChjb2x1bW5JZGVudGlmaWVyLCBoZWFkZXJDZWxsRWxlbWVudCk7CisKKyAg
ICAgICAgdmFyIGRpdiA9IGhlYWRlckNlbGxFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiKTsKKyAg
ICAgICAgaWYgKGNvbHVtbi5oYXMoInRpdGxlRE9NRnJhZ21lbnQiKSkKKyAgICAgICAgICAgIGRp
di5hcHBlbmRDaGlsZChjb2x1bW4uZ2V0KCJ0aXRsZURPTUZyYWdtZW50IikpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBkaXYudGV4dENvbnRlbnQgPSBjb2x1bW4uZ2V0KCJ0aXRsZSIsICIi
KTsKKworICAgICAgICBpZiAoY29sdW1uLmhhcygic29ydCIpKSB7CisgICAgICAgICAgICBoZWFk
ZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzb3J0LSIgKyBjb2x1bW4uZ2V0KCJzb3J0Iikp
OworICAgICAgICAgICAgdGhpcy5fc29ydENvbHVtbkNlbGwgPSBoZWFkZXJDZWxsRWxlbWVudDsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChjb2x1bW4uaGFzKCJzb3J0YWJsZSIpKSB7CisgICAg
ICAgICAgICBoZWFkZXJDZWxsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2NsaWNrSW5IZWFkZXJDZWxsLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgICAgIGhlYWRl
ckNlbGxFbGVtZW50LmNsYXNzTGlzdC5hZGQoInNvcnRhYmxlIik7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoY29sdW1uLmhhcygiZ3JvdXAiKSkKKyAgICAgICAgICAgIGhlYWRlckNlbGxFbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImNvbHVtbi1ncm91cC0iICsgY29sdW1uLmdldCgiZ3JvdXAiKSk7
CisKKyAgICAgICAgaWYgKGNvbHVtbi5oYXMoImNvbGxhcHNlc0dyb3VwIikpIHsKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbHVtbi5nZXQoImdyb3VwIikgIT09IGNvbHVtbi5nZXQoImNv
bGxhcHNlc0dyb3VwIikpOworCisgICAgICAgICAgICB2YXIgZGl2aWRlckVsZW1lbnQgPSBoZWFk
ZXJDZWxsRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2Iik7CisgICAgICAgICAgICBkaXZpZGVyRWxl
bWVudC5jbGFzc05hbWUgPSAiZGl2aWRlciI7CisKKyAgICAgICAgICAgIHZhciBjb2xsYXBzZURp
diA9IGhlYWRlckNlbGxFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYiKTsKKyAgICAgICAgICAgIGNv
bGxhcHNlRGl2LmNsYXNzTmFtZSA9ICJjb2xsYXBzZXItYnV0dG9uIjsKKyAgICAgICAgICAgIGNv
bGxhcHNlRGl2LnRpdGxlID0gdGhpcy5fY29sbGFwc2VyQnV0dG9uQ29sbGFwc2VDb2x1bW5zVG9v
bFRpcCgpOworICAgICAgICAgICAgY29sbGFwc2VEaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vv
dmVyIiwgdGhpcy5fbW91c2VvdmVyQ29sdW1uQ29sbGFwc2VyLmJpbmQodGhpcykpOworICAgICAg
ICAgICAgY29sbGFwc2VEaXYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9tb3Vz
ZW91dENvbHVtbkNvbGxhcHNlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIGNvbGxhcHNlRGl2
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tJbkNvbHVtbkNvbGxhcHNlci5i
aW5kKHRoaXMpKTsKKworICAgICAgICAgICAgaGVhZGVyQ2VsbEVsZW1lbnQuY29sbGFwc2VzR3Jv
dXAgPSBjb2x1bW4uZ2V0KCJjb2xsYXBzZXNHcm91cCIpOworICAgICAgICAgICAgaGVhZGVyQ2Vs
bEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGFwc2VyIik7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5zcGFuID0gdGhpcy5vcmRlcmVk
Q29sdW1ucy5sZW5ndGg7CisKKyAgICAgICAgdmFyIGRhdGFDb2x1bW5FbGVtZW50ID0gaGVhZGVy
Q29sdW1uRWxlbWVudC5jbG9uZU5vZGUoKTsKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1u
R3JvdXBFbGVtZW50LmFwcGVuZENoaWxkKGRhdGFDb2x1bW5FbGVtZW50KTsKKyAgICAgICAgY29s
dW1uLnNldCgiYm9keUVsZW1lbnQiLCBkYXRhQ29sdW1uRWxlbWVudCk7CisKKyAgICAgICAgdmFy
IGZpbGxlckNlbGxFbGVtZW50ID0gdGhpcy5fZmlsbGVyUm93RWxlbWVudC5jcmVhdGVDaGlsZCgi
dGQiKTsKKyAgICAgICAgZmlsbGVyQ2VsbEVsZW1lbnQuY2xhc3NOYW1lID0gY29sdW1uSWRlbnRp
ZmllciArICItY29sdW1uIjsKKyAgICAgICAgZmlsbGVyQ2VsbEVsZW1lbnQuX19jb2x1bW5JZGVu
dGlmaWVyID0gY29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKGNvbHVtbi5oYXMoImdyb3Vw
IikpCisgICAgICAgICAgICBmaWxsZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2x1bW4t
Z3JvdXAtIiArIGNvbHVtbi5nZXQoImdyb3VwIikpOworCisgICAgICAgIGlmIChjb2x1bW4uaGFz
KCJoaWRkZW4iKSkKKyAgICAgICAgICAgIHRoaXMuX2hpZGVDb2x1bW4oY29sdW1uSWRlbnRpZmll
cik7CisgICAgfSwKKwogICAgIF9lbnVtZXJhdGVDaGlsZHJlbjogZnVuY3Rpb24ocm9vdE5vZGUs
IHJlc3VsdCwgbWF4TGV2ZWwpCiAgICAgewogICAgICAgICBpZiAoIXJvb3ROb2RlLnJvb3QpCkBA
IC01NDcsMzUgKzQ5NSwzNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgLy8gd2hlbiB0aGUgdHdvIGNvbHVtbnMgdGhhdCBnZXQgcmVzaXplZCBnZXQg
YSBwZXJjZW50IHZhbHVlIGZvcgogICAgICAgICAgICAgLy8gdGhlaXIgd2lkdGhzLCBhbGwgdGhl
IG90aGVyIGNvbHVtbnMgYWxyZWFkeSBoYXZlIHBlcmNlbnQgdmFsdWVzCiAgICAgICAgICAgICAv
LyBmb3IgdGhlaXIgd2lkdGhzLgotICAgICAgICAgICAgdmFyIGhlYWRlclRhYmxlQ29sdW1ucyA9
IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXAuY2hpbGRyZW47Ci0gICAgICAgICAgICB2YXIg
dGFibGVXaWR0aCA9IHRoaXMuX2RhdGFUYWJsZS5vZmZzZXRXaWR0aDsKLSAgICAgICAgICAgIHZh
ciBudW1Db2x1bW5zID0gaGVhZGVyVGFibGVDb2x1bW5zLmxlbmd0aDsKKyAgICAgICAgICAgIHZh
ciBoZWFkZXJUYWJsZUNvbHVtbkVsZW1lbnRzID0gdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91
cEVsZW1lbnQuY2hpbGRyZW47CisgICAgICAgICAgICB2YXIgdGFibGVXaWR0aCA9IHRoaXMuX2Rh
dGFUYWJsZUVsZW1lbnQub2Zmc2V0V2lkdGg7CisgICAgICAgICAgICB2YXIgbnVtQ29sdW1ucyA9
IGhlYWRlclRhYmxlQ29sdW1uRWxlbWVudHMubGVuZ3RoOwogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBudW1Db2x1bW5zOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2YXIgaGVhZGVy
Q2VsbCA9IHRoaXMuaGVhZGVyVGFibGVCb2R5LnJvd3NbMF0uY2VsbHNbaV0KLSAgICAgICAgICAg
ICAgICBpZiAodGhpcy5faXNDb2x1bW5WaXNpYmxlKGhlYWRlckNlbGwuY29sdW1uSWRlbnRpZmll
cikpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNvbHVtbldpZHRoID0gaGVhZGVyQ2VsbC5v
ZmZzZXRXaWR0aDsKKyAgICAgICAgICAgICAgICB2YXIgaGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlz
Ll9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LnJvd3NbMF0uY2VsbHNbaV0KKyAgICAgICAgICAgICAg
ICBpZiAodGhpcy5faXNDb2x1bW5WaXNpYmxlKGhlYWRlckNlbGxFbGVtZW50LmNvbHVtbklkZW50
aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5XaWR0aCA9IGhlYWRlckNl
bGxFbGVtZW50Lm9mZnNldFdpZHRoOwogICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudFdp
ZHRoID0gKChjb2x1bW5XaWR0aCAvIHRhYmxlV2lkdGgpICogMTAwKSArICIlIjsKLSAgICAgICAg
ICAgICAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cC5jaGlsZHJlbltpXS5zdHls
ZS53aWR0aCA9IHBlcmNlbnRXaWR0aDsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YVRh
YmxlQ29sdW1uR3JvdXAuY2hpbGRyZW5baV0uc3R5bGUud2lkdGggPSBwZXJjZW50V2lkdGg7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNo
aWxkcmVuW2ldLnN0eWxlLndpZHRoID0gcGVyY2VudFdpZHRoOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5baV0uc3R5bGUud2lk
dGggPSBwZXJjZW50V2lkdGg7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cC5jaGlsZHJlbltpXS5zdHlsZS53
aWR0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3Vw
LmNoaWxkcmVuW2ldLnN0eWxlLndpZHRoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
aGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5baV0uc3R5bGUud2lkdGggPSAw
OworICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQu
Y2hpbGRyZW5baV0uc3R5bGUud2lkdGggPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSB0cnVl
OwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fcG9zaXRpb25SZXNpemVycygpOworICAgICAg
ICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuRGlkTGF5b3V0KTsK
ICAgICB9LAogCiAgICAgY29sdW1uV2lkdGhzTWFwOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB2YXIgcmVzdWx0ID0ge307Ci0gICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4g
dGhpcy5jb2x1bW5zKSB7Ci0gICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zW2Nv
bHVtbklkZW50aWZpZXJdOwotICAgICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5faGVhZGVyVGFi
bGVDb2x1bW5Hcm91cC5jaGlsZHJlbltjb2x1bW4ub3JkaW5hbF0uc3R5bGUud2lkdGg7CisgICAg
ICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgeworICAg
ICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQu
Y2hpbGRyZW5bY29sdW1uLmdldCgib3JkaW5hbCIpXS5zdHlsZS53aWR0aDsKICAgICAgICAgICAg
IHJlc3VsdFtjb2x1bW5JZGVudGlmaWVyXSA9IHBhcnNlRmxvYXQod2lkdGgpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01ODMsMTEgKzUzMCwxMSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgYXBwbHlDb2x1bW5XaWR0aHNNYXA6IGZ1
bmN0aW9uKGNvbHVtbldpZHRoc01hcCkKICAgICB7Ci0gICAgICAgIGZvciAodmFyIGNvbHVtbklk
ZW50aWZpZXIgaW4gdGhpcy5jb2x1bW5zKSB7Ci0gICAgICAgICAgICB2YXIgY29sdW1uID0gdGhp
cy5jb2x1bW5zW2NvbHVtbklkZW50aWZpZXJdOwotICAgICAgICAgICAgdmFyIHdpZHRoID0gKGNv
bHVtbldpZHRoc01hcFtjb2x1bW5JZGVudGlmaWVyXSB8fCAwKSArICIlIjsKLSAgICAgICAgICAg
IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXAuY2hpbGRyZW5bY29sdW1uLm9yZGluYWxdLnN0
eWxlLndpZHRoID0gd2lkdGg7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91
cC5jaGlsZHJlbltjb2x1bW4ub3JkaW5hbF0uc3R5bGUud2lkdGggPSB3aWR0aDsKKyAgICAgICAg
Zm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7CisgICAgICAg
ICAgICB2YXIgd2lkdGggPSAoY29sdW1uV2lkdGhzTWFwW2lkZW50aWZpZXJdIHx8IDApICsgIiUi
OworICAgICAgICAgICAgdmFyIG9yZGluYWwgPSBjb2x1bW4uZ2V0KCJvcmRpbmFsIik7CisgICAg
ICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltvcmRp
bmFsXS5zdHlsZS53aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29s
dW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW29yZGluYWxdLnN0eWxlLndpZHRoID0gd2lkdGg7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwpAQCAtNTk1LDg2ICs1NDIs
ODAgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgIF9pc0NvbHVt
blZpc2libGU6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gIShjb2x1bW5JZGVudGlmaWVyIGluIHRoaXMuX2hpZGRlbkNvbHVtbnMpOworICAgICAgICBy
ZXR1cm4gIXRoaXMuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcikuaGFzKCJoaWRkZW4iKTsK
ICAgICB9LAogCiAgICAgX3Nob3dDb2x1bW46IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICBkZWxldGUgdGhpcy5faGlkZGVuQ29sdW1uc1tjb2x1bW5JZGVudGlmaWVy
XTsKKyAgICAgICAgdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKS5kZWxldGUoImhp
ZGRlbiIpOwogICAgIH0sCiAKICAgICBfaGlkZUNvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHRoaXMuX2hpZGRlbkNvbHVtbnNbY29sdW1uSWRlbnRpZmll
cl0gPSB0cnVlOworICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdldChjb2x1bW5J
ZGVudGlmaWVyKTsKKyAgICAgICAgY29sdW1uLnNldCgiaGlkZGVuIiwgdHJ1ZSk7CiAKLSAgICAg
ICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAg
dmFyIGNvbHVtbkVsZW1lbnQgPSBjb2x1bW4uZWxlbWVudDsKKyAgICAgICAgdmFyIGNvbHVtbkVs
ZW1lbnQgPSBjb2x1bW4uZ2V0KCJlbGVtZW50Iik7CiAgICAgICAgIGNvbHVtbkVsZW1lbnQuc3R5
bGUud2lkdGggPSAwOwogCi0gICAgICAgIHZhciBjb2x1bW5Cb2R5RWxlbWVudCA9IGNvbHVtbi5i
b2R5RWxlbWVudDsKLSAgICAgICAgY29sdW1uQm9keUVsZW1lbnQuc3R5bGUud2lkdGggPSAwOwot
CiAgICAgICAgIHRoaXMuX2NvbHVtbldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7CiAgICAgfSwK
IAogICAgIGdldCBzY3JvbGxDb250YWluZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3Njcm9sbENvbnRhaW5lcjsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbENvbnRhaW5lckVs
ZW1lbnQ7CiAgICAgfSwKIAogICAgIGlzU2Nyb2xsZWRUb0xhc3RSb3c6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxDb250YWluZXIuaXNTY3JvbGxlZFRvQm90
dG9tKCk7CisgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmlzU2Ny
b2xsZWRUb0JvdHRvbSgpOwogICAgIH0sCiAKICAgICBzY3JvbGxUb0xhc3RSb3c6IGZ1bmN0aW9u
KCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlz
Ll9zY3JvbGxDb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyLm9m
ZnNldEhlaWdodDsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5zY3JvbGxU
b3AgPSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuX3Nj
cm9sbENvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0OwogICAgIH0sCiAKLSAgICBfcG9zaXRp
b25SZXNpemVyczogZnVuY3Rpb24oKQorICAgIF9wb3NpdGlvblJlc2l6ZXJFbGVtZW50czogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGhlYWRlclRhYmxlQ29sdW1ucyA9IHRoaXMuX2hl
YWRlclRhYmxlQ29sdW1uR3JvdXAuY2hpbGRyZW47Ci0gICAgICAgIHZhciBudW1Db2x1bW5zID0g
aGVhZGVyVGFibGVDb2x1bW5zLmxlbmd0aDsKICAgICAgICAgdmFyIGxlZnQgPSAwOwotICAgICAg
ICB2YXIgcHJldmlvdXNSZXNpemVyID0gbnVsbDsKKyAgICAgICAgdmFyIHByZXZpb3VzUmVzaXpl
ckVsZW1lbnQgPSBudWxsOwogCiAgICAgICAgIC8vIE1ha2UgbiAtIDEgcmVzaXplcnMgZm9yIG4g
Y29sdW1ucy4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db2x1bW5zIC0gMTsgaSsr
KSB7Ci0gICAgICAgICAgICB2YXIgcmVzaXplciA9IHRoaXMucmVzaXplcnNbaV07CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vcmRlcmVkQ29sdW1ucy5sZW5ndGggLSAxOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciByZXNpemVyRWxlbWVudCA9IHRoaXMucmVzaXplckVsZW1lbnRz
W2ldOwogCi0gICAgICAgICAgICBpZiAoIXJlc2l6ZXIpIHsKKyAgICAgICAgICAgIGlmICghcmVz
aXplckVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBjYWxs
IHRvIHVwZGF0ZVdpZHRoLCBzbyB0aGUgcmVzaXplcnMgbmVlZAogICAgICAgICAgICAgICAgIC8v
IHRvIGJlIGNyZWF0ZWQuCi0gICAgICAgICAgICAgICAgcmVzaXplciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgICAgIHJlc2l6ZXIuY2xhc3NMaXN0LmFkZCgi
ZGF0YS1ncmlkLXJlc2l6ZXIiKTsKKyAgICAgICAgICAgICAgICByZXNpemVyRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgICAgIHJlc2l6ZXJFbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImRhdGEtZ3JpZC1yZXNpemVyIik7CiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyByZXNpemVyIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29sdW1uIHRvIGl0cyByaWdo
dC4KLSAgICAgICAgICAgICAgICByZXNpemVyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMuX3N0YXJ0UmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocmVzaXplcik7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5yZXNpemVyc1tpXSA9IHJlc2l6ZXI7CisgICAgICAgICAgICAgICAgcmVzaXplckVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc3RhcnRSZXNpemVyRHJh
Z2dpbmcuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZChyZXNpemVyRWxlbWVudCk7CisgICAgICAgICAgICAgICAgdGhpcy5yZXNpemVy
RWxlbWVudHNbaV0gPSByZXNpemVyRWxlbWVudDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gR2V0IHRoZSB3aWR0aCBvZiB0aGUgY2VsbCBpbiB0aGUgZmlyc3QgKGFuZCBvbmx5KSBy
b3cgb2YgdGhlCiAgICAgICAgICAgICAvLyBoZWFkZXIgdGFibGUgaW4gb3JkZXIgdG8gZGV0ZXJt
aW5lIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uLCBzaW5jZQogICAgICAgICAgICAgLy8gaXQgaXMg
bm90IHBvc3NpYmxlIHRvIHF1ZXJ5IGEgY29sdW1uIGZvciBpdHMgd2lkdGguCi0gICAgICAgICAg
ICBsZWZ0ICs9IHRoaXMuaGVhZGVyVGFibGVCb2R5LnJvd3NbMF0uY2VsbHNbaV0ub2Zmc2V0V2lk
dGg7Ci0KLSAgICAgICAgICAgIHZhciBjb2x1bW5Jc1Zpc2libGUgPSB0aGlzLl9pc0NvbHVtblZp
c2libGUodGhpcy5fY29sdW1uc0FycmF5W2ldLmlkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYg
KGNvbHVtbklzVmlzaWJsZSkgewotICAgICAgICAgICAgICAgIHJlc2l6ZXIuc3R5bGUucmVtb3Zl
UHJvcGVydHkoImRpc3BsYXkiKTsKLSAgICAgICAgICAgICAgICByZXNpemVyLnN0eWxlLmxlZnQg
PSBsZWZ0ICsgInB4IjsKLSAgICAgICAgICAgICAgICByZXNpemVyLmxlZnROZWlnaGJvcmluZ0Nv
bHVtbklEID0gaTsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNpemVyKQotICAgICAg
ICAgICAgICAgICAgICBwcmV2aW91c1Jlc2l6ZXIucmlnaHROZWlnaGJvcmluZ0NvbHVtbklEID0g
aTsKLSAgICAgICAgICAgICAgICBwcmV2aW91c1Jlc2l6ZXIgPSByZXNpemVyOworICAgICAgICAg
ICAgbGVmdCArPSB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LnJvd3NbMF0uY2VsbHNbaV0u
b2Zmc2V0V2lkdGg7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9pc0NvbHVtblZpc2libGUodGhp
cy5vcmRlcmVkQ29sdW1uc1tpXSkpIHsKKyAgICAgICAgICAgICAgICByZXNpemVyRWxlbWVudC5z
dHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpOworICAgICAgICAgICAgICAgIHJlc2l6ZXJF
bGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0ICsgInB4IjsKKyAgICAgICAgICAgICAgICByZXNpemVy
RWxlbWVudC5sZWZ0TmVpZ2hib3JpbmdDb2x1bW5JRCA9IGk7CisgICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVzaXplckVsZW1lbnQpCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVz
aXplckVsZW1lbnQucmlnaHROZWlnaGJvcmluZ0NvbHVtbklEID0gaTsKKyAgICAgICAgICAgICAg
ICBwcmV2aW91c1Jlc2l6ZXJFbGVtZW50ID0gcmVzaXplckVsZW1lbnQ7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHJlc2l6ZXIuc3R5bGUuc2V0UHJvcGVydHkoImRpc3Bs
YXkiLCAibm9uZSIpOwotICAgICAgICAgICAgICAgIHJlc2l6ZXIubGVmdE5laWdoYm9yaW5nQ29s
dW1uSUQgPSAwOwotICAgICAgICAgICAgICAgIHJlc2l6ZXIucmlnaHROZWlnaGJvcmluZ0NvbHVt
bklEID0gMDsKKyAgICAgICAgICAgICAgICByZXNpemVyRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0
eSgiZGlzcGxheSIsICJub25lIik7CisgICAgICAgICAgICAgICAgcmVzaXplckVsZW1lbnQubGVm
dE5laWdoYm9yaW5nQ29sdW1uSUQgPSAwOworICAgICAgICAgICAgICAgIHJlc2l6ZXJFbGVtZW50
LnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRCA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKHByZXZpb3VzUmVzaXplcikKLSAgICAgICAgICAgIHByZXZpb3VzUmVzaXpl
ci5yaWdodE5laWdoYm9yaW5nQ29sdW1uSUQgPSBudW1Db2x1bW5zIC0gMTsKKyAgICAgICAgaWYg
KHByZXZpb3VzUmVzaXplckVsZW1lbnQpCisgICAgICAgICAgICBwcmV2aW91c1Jlc2l6ZXJFbGVt
ZW50LnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRCA9IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3Ro
IC0gMTsKICAgICB9LAogCiAgICAgYWRkQ3JlYXRpb25Ob2RlOiBmdW5jdGlvbihoYXNDaGlsZHJl
bikKQEAgLTY4Myw4ICs2MjQsOCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5jcmVhdGlvbk5vZGUubWFrZU5vcm1hbCgpOwogCiAgICAgICAg
IHZhciBlbXB0eURhdGEgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uIGluIHRoaXMuY29s
dW1ucykKLSAgICAgICAgICAgIGVtcHR5RGF0YVtjb2x1bW5dID0gJyc7CisgICAgICAgIGZvciAo
dmFyIGlkZW50aWZpZXIgb2YgdGhpcy5jb2x1bW5zLmtleXMoKSkKKyAgICAgICAgICAgIGVtcHR5
RGF0YVtpZGVudGlmaWVyXSA9ICcnOwogICAgICAgICB0aGlzLmNyZWF0aW9uTm9kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ3JlYXRpb25EYXRhR3JpZE5vZGUoZW1wdHlEYXRhLCBoYXNDaGlsZHJlbik7
CiAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGlvbk5vZGUpOwogICAgIH0sCkBA
IC04MTEsMTIgKzc1MiwxMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaWYgKGIuX2RhdGFHcmlkTm9kZS5fZGF0YS5zdW1tYXJ5Um93KQogICAgICAg
ICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICAgICAgdmFyIGFEYXRhR2lyZE5vZGUgPSBh
Ll9kYXRhR3JpZE5vZGU7Ci0gICAgICAgICAgICB2YXIgYkRhdGFHaXJkTm9kZSA9IGIuX2RhdGFH
cmlkTm9kZTsKLSAgICAgICAgICAgIHJldHVybiByZXZlcnNlTW9kZSA/IGNvbXBhcmF0b3IoYkRh
dGFHaXJkTm9kZSwgYURhdGFHaXJkTm9kZSkgOiBjb21wYXJhdG9yKGFEYXRhR2lyZE5vZGUsIGJE
YXRhR2lyZE5vZGUpOworICAgICAgICAgICAgdmFyIGFEYXRhR3JpZE5vZGUgPSBhLl9kYXRhR3Jp
ZE5vZGU7CisgICAgICAgICAgICB2YXIgYkRhdGFHcmlkTm9kZSA9IGIuX2RhdGFHcmlkTm9kZTsK
KyAgICAgICAgICAgIHJldHVybiByZXZlcnNlTW9kZSA/IGNvbXBhcmF0b3IoYkRhdGFHcmlkTm9k
ZSwgYURhdGFHcmlkTm9kZSkgOiBjb21wYXJhdG9yKGFEYXRhR3JpZE5vZGUsIGJEYXRhR3JpZE5v
ZGUpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHRib2R5ID0gdGhpcy5kYXRhVGFibGVCb2R5
OworICAgICAgICB2YXIgdGJvZHkgPSB0aGlzLmRhdGFUYWJsZUJvZHlFbGVtZW50OwogICAgICAg
ICB2YXIgdGJvZHlQYXJlbnQgPSB0Ym9keS5wYXJlbnRFbGVtZW50OwogICAgICAgICB0Ym9keVBh
cmVudC5yZW1vdmVDaGlsZCh0Ym9keSk7CiAKQEAgLTk0NCw3ICs4ODUsNyBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgZGF0YUdyaWROb2RlRnJvbVBvaW50OiBm
dW5jdGlvbih4LCB5KQogICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9kYXRhVGFibGUu
b3duZXJEb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpOworICAgICAgICB2YXIgbm9kZSA9
IHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQub3duZXJEb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgs
IHkpOwogICAgICAgICB2YXIgcm93RWxlbWVudCA9IG5vZGUuZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhOb2RlTmFtZSgidHIiKTsKICAgICAgICAgcmV0dXJuIHJvd0VsZW1lbnQgJiYgcm93RWxlbWVu
dC5fZGF0YUdyaWROb2RlOwogICAgIH0sCkBAIC05NzAsNyArOTExLDcgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc29ydENvbHVtbkNlbGwgPSBj
ZWxsOwogCiAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgic29ydC0iICsgc29ydE9yZGVyKTsK
LSAgICAKKwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQpOwogICAgIH0sCiAKQEAgLTEwMDYsMjAgKzk0
NywxOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgY29sbGFw
c2VDb2x1bW5Hcm91cDogZnVuY3Rpb24oY29sdW1uR3JvdXApCiAgICAgewotICAgICAgICB2YXIg
Y29sbGFwc2VyQ29sdW1uID0gbnVsbDsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmll
ciBpbiB0aGlzLmNvbHVtbnMpIHsKLSAgICAgICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVt
bnNbY29sdW1uSWRlbnRpZmllcl07Ci0gICAgICAgICAgICBpZiAoY29sdW1uLmNvbGxhcHNlc0dy
b3VwID09IGNvbHVtbkdyb3VwKSB7Ci0gICAgICAgICAgICAgICAgY29sbGFwc2VyQ29sdW1uID0g
Y29sdW1uOworICAgICAgICB2YXIgY29sbGFwc2VyQ29sdW1uSWRlbnRpZmllciA9IG51bGw7Cisg
ICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewor
ICAgICAgICAgICAgaWYgKGNvbHVtbi5nZXQoImNvbGxhcHNlc0dyb3VwIikgPT0gY29sdW1uR3Jv
dXApIHsKKyAgICAgICAgICAgICAgICBjb2xsYXBzZXJDb2x1bW5JZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbGxhcHNlckNvbHVtbik7Ci0gICAgICAgIGlmICgh
Y29sbGFwc2VyQ29sdW1uKQorICAgICAgICBjb25zb2xlLmFzc2VydChjb2xsYXBzZXJDb2x1bW5J
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFjb2xsYXBzZXJDb2x1bW5JZGVudGlmaWVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBjZWxsID0gdGhpcy5faGVhZGVyVGFibGVI
ZWFkZXJzW2NvbGxhcHNlckNvbHVtbi5pZGVudGlmaWVyXTsKKyAgICAgICAgdmFyIGNlbGwgPSB0
aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5nZXQoY29sbGFwc2VyQ29sdW1uSWRlbnRpZmll
cik7CiAgICAgICAgIHRoaXMuX2NvbGxhcHNlQ29sdW1uR3JvdXBXaXRoQ2VsbChjZWxsKTsKICAg
ICB9LAogCkBAIC0xMDMwLDEwICs5NzAsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLndpbGxUb2dnbGVDb2x1bW5Hcm91cChjZWxsLmNvbGxhcHNl
c0dyb3VwLCBjb2x1bW5zV2lsbENvbGxhcHNlKTsKIAogICAgICAgICB2YXIgc2hvd09ySGlkZSA9
IGNvbHVtbnNXaWxsQ29sbGFwc2UgPyB0aGlzLl9oaWRlQ29sdW1uIDogdGhpcy5fc2hvd0NvbHVt
bjsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiB0aGlzLmNvbHVtbnMpIHsK
LSAgICAgICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbY29sdW1uSWRlbnRpZmllcl07
Ci0gICAgICAgICAgICBpZiAoY29sdW1uLmdyb3VwID09PSBjZWxsLmNvbGxhcHNlc0dyb3VwKQot
ICAgICAgICAgICAgICAgIHNob3dPckhpZGUuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyKTsK
KyAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7
CisgICAgICAgICAgICBpZiAoY29sdW1uLmdldCgiZ3JvdXAiKSA9PT0gY2VsbC5jb2xsYXBzZXNH
cm91cCkKKyAgICAgICAgICAgICAgICBzaG93T3JIaWRlLmNhbGwodGhpcywgaWRlbnRpZmllcik7
CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgY29sbGFwc2VyQnV0dG9uID0gY2VsbC5xdWVyeVNl
bGVjdG9yKCIuY29sbGFwc2VyLWJ1dHRvbiIpOwpAQCAtMTA2NSwyMCArMTAwNCwyMCBAQCBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgaXNDb2x1bW5Tb3J0Q29sdW1u
OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3NvcnRDb2x1bW5DZWxsID09PSB0aGlzLl9oZWFkZXJUYWJsZUhlYWRlcnNbY29sdW1uSWRlbnRp
Zmllcl07CisgICAgICAgIHJldHVybiB0aGlzLl9zb3J0Q29sdW1uQ2VsbCA9PT0gdGhpcy5faGVh
ZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0KGNvbHVtbklkZW50aWZpZXIpOwogICAgIH0sCiAKICAg
ICBtYXJrQ29sdW1uQXNTb3J0ZWRCeTogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgc29ydE9y
ZGVyKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnRDb2x1bW5DZWxsKQogICAgICAgICAg
ICAgdGhpcy5fc29ydENvbHVtbkNlbGwucmVtb3ZlTWF0Y2hpbmdTdHlsZUNsYXNzZXMoInNvcnQt
XFx3KyIpOwotICAgICAgICB0aGlzLl9zb3J0Q29sdW1uQ2VsbCA9IHRoaXMuX2hlYWRlclRhYmxl
SGVhZGVyc1tjb2x1bW5JZGVudGlmaWVyXTsKKyAgICAgICAgdGhpcy5fc29ydENvbHVtbkNlbGwg
PSB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5nZXQoY29sdW1uSWRlbnRpZmllcik7CiAg
ICAgICAgIHRoaXMuX3NvcnRDb2x1bW5DZWxsLmNsYXNzTGlzdC5hZGQoInNvcnQtIiArIHNvcnRP
cmRlcik7CiAgICAgfSwKIAogICAgIGhlYWRlclRhYmxlSGVhZGVyOiBmdW5jdGlvbihjb2x1bW5J
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlSGVhZGVy
c1tjb2x1bW5JZGVudGlmaWVyXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlQ2Vs
bEVsZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKICAgICB9LAogCiAgICAgX2dlbmVyYXRl
U29ydEluZGljYXRvckltYWdlc0lmTmVlZGVkOiBmdW5jdGlvbigpCkBAIC0xMTcyLDggKzExMTEs
OCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgIF9jb3B5VGV4dEZv
ckRhdGFHcmlkTm9kZTogZnVuY3Rpb24obm9kZSkKICAgICB7CiAgICAgICAgIHZhciBmaWVsZHMg
PSBbXTsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBub2RlLmRhdGFHcmlk
LmNvbHVtbnMpCi0gICAgICAgICAgICBmaWVsZHMucHVzaChub2RlLmRhdGFbY29sdW1uSWRlbnRp
Zmllcl0gfHwgIiIpOworICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIG5vZGUuZGF0YUdy
aWQub3JkZXJlZENvbHVtbnMpCisgICAgICAgICAgICBmaWVsZHMucHVzaChub2RlLmRhdGFbaWRl
bnRpZmllcl0gfHwgIiIpOwogCiAgICAgICAgIHZhciB0YWJTZXBhcmF0ZWRWYWx1ZXMgPSBmaWVs
ZHMuam9pbigiXHQiKTsKICAgICAgICAgcmV0dXJuIHRhYlNlcGFyYXRlZFZhbHVlczsKQEAgLTEy
NDcsMTQgKzExODYsMTQgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gY29sdW1uIGRpcmVjdGx5IHRvIHRoZSBsZWZ0IGFuZCB0aGUgY29sdW1uIGRpcmVj
dGx5IHRvIHRoZSByaWdodC4KICAgICAgICAgdmFyIGxlZnRDZWxsSW5kZXggPSByZXNpemVyLmxl
ZnROZWlnaGJvcmluZ0NvbHVtbklEOwogICAgICAgICB2YXIgcmlnaHRDZWxsSW5kZXggPSByZXNp
emVyLnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRDsKLSAgICAgICAgdmFyIGZpcnN0Um93Q2VsbHMg
PSB0aGlzLmhlYWRlclRhYmxlQm9keS5yb3dzWzBdLmNlbGxzOworICAgICAgICB2YXIgZmlyc3RS
b3dDZWxscyA9IHRoaXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQucm93c1swXS5jZWxsczsKICAg
ICAgICAgdmFyIGxlZnRFZGdlT2ZQcmV2aW91c0NvbHVtbiA9IDA7CiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVmdENlbGxJbmRleDsgaSsrKQogICAgICAgICAgICAgbGVmdEVkZ2VPZlBy
ZXZpb3VzQ29sdW1uICs9IGZpcnN0Um93Q2VsbHNbaV0ub2Zmc2V0V2lkdGg7CiAKICAgICAgICAg
Ly8gRGlmZmVyZW5jZXMgZm9yIG90aGVyIHJlc2l6ZSBtZXRob2RzCiAgICAgICAgIGlmICh0aGlz
LnJlc2l6ZU1ldGhvZCA9PSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuUmVzaXplTWV0aG9kLkxhc3Qp
IHsKLSAgICAgICAgICAgIHJpZ2h0Q2VsbEluZGV4ID0gdGhpcy5yZXNpemVycy5sZW5ndGg7Cisg
ICAgICAgICAgICByaWdodENlbGxJbmRleCA9IHRoaXMucmVzaXplckVsZW1lbnRzLmxlbmd0aDsK
ICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc2l6ZU1ldGhvZCA9PSBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuUmVzaXplTWV0aG9kLkZpcnN0KSB7CiAgICAgICAgICAgICBsZWZ0RWRnZU9mUHJldmlv
dXNDb2x1bW4gKz0gZmlyc3RSb3dDZWxsc1tsZWZ0Q2VsbEluZGV4XS5vZmZzZXRXaWR0aCAtIGZp
cnN0Um93Q2VsbHNbMF0ub2Zmc2V0V2lkdGg7CiAgICAgICAgICAgICBsZWZ0Q2VsbEluZGV4ID0g
MDsKQEAgLTEyNzAsMTUgKzEyMDksMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICByZXNpemVyLnN0eWxlLmxlZnQgPSAoZHJhZ1BvaW50IC0gdGhpcy5D
ZW50ZXJSZXNpemVyT3ZlckJvcmRlckFkanVzdG1lbnQpICsgInB4IjsKIAotICAgICAgICB2YXIg
cGVyY2VudExlZnRDb2x1bW4gPSAoKChkcmFnUG9pbnQgLSBsZWZ0RWRnZU9mUHJldmlvdXNDb2x1
bW4pIC8gdGhpcy5fZGF0YVRhYmxlLm9mZnNldFdpZHRoKSAqIDEwMCkgKyAiJSI7Ci0gICAgICAg
IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXAuY2hpbGRyZW5bbGVmdENlbGxJbmRleF0uc3R5
bGUud2lkdGggPSBwZXJjZW50TGVmdENvbHVtbjsKLSAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29s
dW1uR3JvdXAuY2hpbGRyZW5bbGVmdENlbGxJbmRleF0uc3R5bGUud2lkdGggPSBwZXJjZW50TGVm
dENvbHVtbjsKKyAgICAgICAgdmFyIHBlcmNlbnRMZWZ0Q29sdW1uID0gKCgoZHJhZ1BvaW50IC0g
bGVmdEVkZ2VPZlByZXZpb3VzQ29sdW1uKSAvIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQub2Zmc2V0
V2lkdGgpICogMTAwKSArICIlIjsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91
cEVsZW1lbnQuY2hpbGRyZW5bbGVmdENlbGxJbmRleF0uc3R5bGUud2lkdGggPSBwZXJjZW50TGVm
dENvbHVtbjsKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxk
cmVuW2xlZnRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0gcGVyY2VudExlZnRDb2x1bW47CiAKLSAg
ICAgICAgdmFyIHBlcmNlbnRSaWdodENvbHVtbiA9ICgoKHJpZ2h0RWRnZU9mTmV4dENvbHVtbiAt
IGRyYWdQb2ludCkgLyB0aGlzLl9kYXRhVGFibGUub2Zmc2V0V2lkdGgpICogMTAwKSArICIlIjsK
LSAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cC5jaGlsZHJlbltyaWdodENlbGxJ
bmRleF0uc3R5bGUud2lkdGggPSAgcGVyY2VudFJpZ2h0Q29sdW1uOwotICAgICAgICB0aGlzLl9k
YXRhVGFibGVDb2x1bW5Hcm91cC5jaGlsZHJlbltyaWdodENlbGxJbmRleF0uc3R5bGUud2lkdGgg
PSBwZXJjZW50UmlnaHRDb2x1bW47CisgICAgICAgIHZhciBwZXJjZW50UmlnaHRDb2x1bW4gPSAo
KChyaWdodEVkZ2VPZk5leHRDb2x1bW4gLSBkcmFnUG9pbnQpIC8gdGhpcy5fZGF0YVRhYmxlRWxl
bWVudC5vZmZzZXRXaWR0aCkgKiAxMDApICsgIiUiOworICAgICAgICB0aGlzLl9oZWFkZXJUYWJs
ZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltyaWdodENlbGxJbmRleF0uc3R5bGUud2lkdGgg
PSAgcGVyY2VudFJpZ2h0Q29sdW1uOworICAgICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91
cEVsZW1lbnQuY2hpbGRyZW5bcmlnaHRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0gcGVyY2VudFJp
Z2h0Q29sdW1uOwogCi0gICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplcnMoKTsKKyAgICAgICAg
dGhpcy5fcG9zaXRpb25SZXNpemVyRWxlbWVudHMoKTsKICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLkV2ZW50LkRpZExheW91dCk7CiAgICAgfSwKQEAgLTEzNTgsMTAgKzEyOTcs
OCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIGNyZWF0
ZUNlbGxzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlm
aWVyIGluIHRoaXMuZGF0YUdyaWQuY29sdW1ucykgewotICAgICAgICAgICAgdmFyIGNlbGwgPSB0
aGlzLmNyZWF0ZUNlbGwoY29sdW1uSWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKGNlbGwpOwotICAgICAgICB9CisgICAgICAgIGZvciAodmFyIGNvbHVt
bklkZW50aWZpZXIgb2YgdGhpcy5kYXRhR3JpZC5vcmRlcmVkQ29sdW1ucykKKyAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVDZWxsKGNvbHVtbklkZW50aWZp
ZXIpKTsKICAgICB9LAogCiAgICAgcmVmcmVzaElmTmVlZGVkOiBmdW5jdGlvbigpCkBAIC0xNTQ2
LDMwICsxNDgzLDI5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
CiAgICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgY2Vs
bC5jbGFzc05hbWUgPSBjb2x1bW5JZGVudGlmaWVyICsgIi1jb2x1bW4iOwotICAgICAgICBjZWxs
Ll9fY29sdW1uSWRlbnRpZmllciA9IGNvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBjZWxs
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgICAgIGNlbGxFbGVt
ZW50LmNsYXNzTmFtZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7CisgICAgICAgIGNl
bGxFbGVtZW50Ll9fY29sdW1uSWRlbnRpZmllciA9IGNvbHVtbklkZW50aWZpZXI7CisKKyAgICAg
ICAgdmFyIGNvbHVtbiA9IHRoaXMuZGF0YUdyaWQuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmll
cik7CiAKLSAgICAgICAgdmFyIGFsaWdubWVudCA9IHRoaXMuZGF0YUdyaWQuYWxpZ25lZFtjb2x1
bW5JZGVudGlmaWVyXTsKLSAgICAgICAgaWYgKGFsaWdubWVudCkKLSAgICAgICAgICAgIGNlbGwu
Y2xhc3NMaXN0LmFkZChhbGlnbm1lbnQpOworICAgICAgICBpZiAoY29sdW1uLmhhcygiYWxpZ25l
ZCIpKQorICAgICAgICAgICAgY2VsbEVsZW1lbnQuY2xhc3NMaXN0LmFkZChjb2x1bW4uZ2V0KCJh
bGlnbmVkIikpOwogCi0gICAgICAgIHZhciBncm91cCA9IHRoaXMuZGF0YUdyaWQuZ3JvdXBzW2Nv
bHVtbklkZW50aWZpZXJdOwotICAgICAgICBpZiAoZ3JvdXApCi0gICAgICAgICAgICBjZWxsLmNs
YXNzTGlzdC5hZGQoImNvbHVtbi1ncm91cC0iICsgZ3JvdXApOworICAgICAgICBpZiAoY29sdW1u
LmhhcygiZ3JvdXAiKSkKKyAgICAgICAgICAgIGNlbGxFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNv
bHVtbi1ncm91cC0iICsgY29sdW1uLmdldCgiZ3JvdXAiKSk7CiAKLSAgICAgICAgdmFyIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB2YXIgY29udGVudCA9IHRo
aXMuY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CisgICAgICAgIHZh
ciBkaXYgPSBjZWxsRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2Iik7CisgICAgICAgIHZhciBjb250
ZW50ID0gdGhpcy5jcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsRWxlbWVu
dCk7CiAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChjb250ZW50IGluc3RhbmNlb2YgTm9kZSA/IGNv
bnRlbnQgOiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KSk7Ci0gICAgICAgIGNlbGwu
YXBwZW5kQ2hpbGQoZGl2KTsKIAogICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gdGhp
cy5kYXRhR3JpZC5kaXNjbG9zdXJlQ29sdW1uSWRlbnRpZmllcikgewotICAgICAgICAgICAgY2Vs
bC5jbGFzc0xpc3QuYWRkKCJkaXNjbG9zdXJlIik7CisgICAgICAgICAgICBjZWxsRWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJkaXNjbG9zdXJlIik7CiAgICAgICAgICAgICBpZiAodGhpcy5sZWZ0UGFk
ZGluZykKLSAgICAgICAgICAgICAgICBjZWxsLnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWxl
ZnQiLCB0aGlzLmxlZnRQYWRkaW5nICsgInB4Iik7CisgICAgICAgICAgICAgICAgY2VsbEVsZW1l
bnQuc3R5bGUuc2V0UHJvcGVydHkoInBhZGRpbmctbGVmdCIsIHRoaXMubGVmdFBhZGRpbmcgKyAi
cHgiKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBjZWxsOworICAgICAgICByZXR1cm4g
Y2VsbEVsZW1lbnQ7CiAgICAgfSwKIAogICAgIGNyZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihj
b2x1bW5JZGVudGlmaWVyKQpAQCAtMTU3OSw3ICsxNTE1LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBlbGVtZW50V2l0aENvbHVtbklkZW50aWZpZXI6
IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewotICAgICAgICB2YXIgaW5kZXggPSBP
YmplY3Qua2V5cyh0aGlzLmRhdGFHcmlkLmNvbHVtbnMpLmluZGV4T2YoY29sdW1uSWRlbnRpZmll
cik7CisgICAgICAgIHZhciBpbmRleCA9IHRoaXMuZGF0YUdyaWQub3JkZXJlZENvbHVtbnMuaW5k
ZXhPZihjb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKICAgICAg
ICAgICAgIHJldHVybiBudWxsOwogCkBAIC0xODI4LDE0ICsxNzY0LDE0IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICBpZiAocHJldmlvdXNHcmlkTm9k
ZSAmJiBwcmV2aW91c0dyaWROb2RlLmVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAgIG5l
eHRFbGVtZW50ID0gcHJldmlvdXNHcmlkTm9kZS5lbGVtZW50Lm5leHRTaWJsaW5nOwogICAgICAg
ICBlbHNlIGlmICghcHJldmlvdXNHcmlkTm9kZSkKLSAgICAgICAgICAgIG5leHRFbGVtZW50ID0g
dGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5LmZpcnN0Q2hpbGQ7CisgICAgICAgICAgICBuZXh0
RWxlbWVudCA9IHRoaXMuZGF0YUdyaWQuZGF0YVRhYmxlQm9keUVsZW1lbnQuZmlyc3RDaGlsZDsK
IAogICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBuZXh0IGdyaWQgbm9kZSwgdGhlbiBhcHBlbmQg
YmVmb3JlIHRoZSBsYXN0IGNoaWxkIHNpbmNlIHRoZSBsYXN0IGNoaWxkIGlzIHRoZSBmaWxsZXIg
cm93LgotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmRhdGFHcmlkLmRhdGFUYWJsZUJvZHku
bGFzdENoaWxkLmNsYXNzTGlzdC5jb250YWlucygiZmlsbGVyIikpOworICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLmRhdGFHcmlkLmRhdGFUYWJsZUJvZHlFbGVtZW50Lmxhc3RDaGlsZC5jbGFz
c0xpc3QuY29udGFpbnMoImZpbGxlciIpKTsKICAgICAgICAgaWYgKCFuZXh0RWxlbWVudCkKLSAg
ICAgICAgICAgIG5leHRFbGVtZW50ID0gdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5Lmxhc3RD
aGlsZDsKKyAgICAgICAgICAgIG5leHRFbGVtZW50ID0gdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVC
b2R5RWxlbWVudC5sYXN0Q2hpbGQ7CiAKLSAgICAgICAgdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVC
b2R5Lmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIG5leHRFbGVtZW50KTsKKyAgICAgICAgdGhp
cy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50
LCBuZXh0RWxlbWVudCk7CiAKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZURhdGFHcmlk
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVEYXRhR3Jp
ZC5qcwppbmRleCA3MmRmMDRkZmNlYTMwYTQzNDM0OGI4ZDU4OTU2ZThlMDE3YmRhNzA5Li4zMTk3
NjdiZDY1MTI2NThjYmYzZDU4OGE2ODFmZmNiNWQxZTgzZTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZURhdGFHcmlkLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lRGF0YUdyaWQuanMKQEAg
LTQ5LDcgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQgPSBmdW5jdGlvbih0
cmVlT3V0bGluZSwgY29sdW1ucywgZGVsZWdhdGUsIGVkaXRDYWwKICAgICB9CiAKICAgICBpZiAo
dGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMubGVuZ3RoKSB7Ci0gICAgICAgIHZhciBpdGVtcyA9IFtu
ZXcgV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbSwgdGhpcy5jb2x1bW5z
W3RoaXMuX2ZpbHRlcmFibGVDb2x1bW5zWzBdXS5zY29wZUJhciwgbmV3IFdlYkluc3BlY3Rvci5G
bGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW1dOworICAgICAgICB2YXIgaXRlbXMgPSBbbmV3IFdl
Ykluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0sIHRoaXMuY29sdW1ucy5nZXQo
dGhpcy5fZmlsdGVyYWJsZUNvbHVtbnNbMF0pLmdldCgic2NvcGVCYXIiKSwgbmV3IFdlYkluc3Bl
Y3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW1dOwogICAgICAgICB0aGlzLl9uYXZpZ2F0
aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKG51bGwsIGl0ZW1zKTsKICAg
ICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAibmF2
aWdhdGlvbi1iYXItY29udGFpbmVyIjsKQEAgLTE0OSw3ICsxNDksNyBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRh
dGFHcmlkTm9kZSk7CiAKICAgICAgICAgZm9yICh2YXIgaWRlbnRpZmllciBvZiB0aGlzLl9maWx0
ZXJhYmxlQ29sdW1ucykgewotICAgICAgICAgICAgdmFyIHNjb3BlQmFyID0gdGhpcy5jb2x1bW5z
W2lkZW50aWZpZXJdLnNjb3BlQmFyOworICAgICAgICAgICAgdmFyIHNjb3BlQmFyID0gdGhpcy5j
b2x1bW5zLmdldChpZGVudGlmaWVyKS5zY29wZUJhcjsKICAgICAgICAgICAgIGlmICghc2NvcGVC
YXIgfHwgc2NvcGVCYXIuZGVmYXVsdEl0ZW0uc2VsZWN0ZWQpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>