<?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>67609</bug_id>
          
          <creation_ts>2011-09-05 10:19:27 -0700</creation_ts>
          <short_desc>Web Inspector: re-implement RawSourceCode.</short_desc>
          <delta_ts>2011-09-06 08:25:10 -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>
          <dependson>67635</dependson>
    
    <dependson>67636</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</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>462189</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-05 10:19:27 -0700</bug_when>
    <thetext>Web Inspector: re-implement RawSourceCode.

RawSourceCode content and source mapping loading logic is too complex, re-implement it using simpler semantics:
1) Initially, RawSourceCode doesn&apos;t have any content or mapping because content loading and
formatting operations are asynchronous, it only has scripts metadata. We don&apos;t update UI right
after RawSourceCode creation until full RawSourceCode representation is ready (content + mapping).
2) When RawSourceCode representation is ready (e.g. resource is finished, or content is formatted 
if in pretty-print mode) we dispatch SourceMappingUpdated event to notify the listeners that
source code should be shown to user and raw locations should be converted to ui locations
(to show breakpoins, messages, call frames etc in UI). At this moment, all source file&apos;s content
is ready for loading and source mapping is available.
3) Later, RawSourceCode representation may change again, e.g. if pretty-print mode is toggled, or
blocked resource is finished etc., in that case SourceMappingUpdated is dispatched again to update
source code, links and decorations in UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462191</commentid>
    <comment_count>1</comment_count>
      <attachid>106345</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-05 10:24:08 -0700</bug_when>
    <thetext>Created attachment 106345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462424</commentid>
    <comment_count>2</comment_count>
      <attachid>106345</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-06 01:34:47 -0700</bug_when>
    <thetext>Comment on attachment 106345
Patch

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:178
&gt; +            var eventData = { sourceCode: uiSourceCode, oldSourceCode: oldUISourceCode };

sourceCode -&gt; uiSourceCode

&gt; Source/WebCore/inspector/front-end/SourceFile.js:155
&gt; +        if (this._locked) {

_locked -&gt; _updatingSourceMapping ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462435</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-06 02:34:07 -0700</bug_when>
    <thetext>Committed r94560: &lt;http://trac.webkit.org/changeset/94560&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462532</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-06 08:25:10 -0700</bug_when>
    <thetext>Committed r94571: &lt;http://trac.webkit.org/changeset/94571&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106345</attachid>
            <date>2011-09-05 10:24:08 -0700</date>
            <delta_ts>2011-09-06 01:34:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67609-20110905212405.patch</filename>
            <type>text/plain</type>
            <size>25317</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1MzMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZTMwOTk2Nzg2OWJjZTg1ZDM3YTll
ZTQzM2EwNDU5YTg5M2VlZGY1Li41ZjQxMmQ1NTFhYzNjNDQyNjNlZDFlZDFmNzY0ZDlhZDNiMzI1
ZDk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDUgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmUtaW1w
bGVtZW50IFJhd1NvdXJjZUNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NzYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbnRlbnQtcHJvdmlkZXJzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvY29udGVudC1wcm92aWRlcnMu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbDoKKwog
MjAxMS0wOS0wNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyAtIG1vdmUgZXhwZWN0YXRpb24gdG8gdGhlIGNv
cnJlY3QgcGxhY2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
Y29udGVudC1wcm92aWRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2NvbnRlbnQtcHJvdmlkZXJzLWV4cGVjdGVkLnR4dAppbmRleCBhOWJiNDE0MjBhMzJj
YmI2NTg0NmQ5NGUyNWZiNTJkMTE1OGU2NTQ5Li4zZWM3MTAzOTgwMzEzMzc1OTQyM2EyMWJiZDBh
YTRiZWU2MDkwM2E0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
Y29udGVudC1wcm92aWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9jb250ZW50LXByb3ZpZGVycy1leHBlY3RlZC50eHQKQEAgLTIxLDUgKzIxLDMg
QEAgZnVuY3Rpb24gYmF6KCkKIFJ1bm5pbmc6IHRlc3RSZXNvdXJjZUNvbnRlbnRQcm92aWRlcgog
UmVxdWVzdCByZXNvdXJjZSBjb250ZW50LgogCi1SdW5uaW5nOiB0ZXN0Rm9ybWF0dGVkQ29udGVu
dFByb3ZpZGVyCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9j
b250ZW50LXByb3ZpZGVycy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Nv
bnRlbnQtcHJvdmlkZXJzLmh0bWwKaW5kZXggMTFlYTEyMGM4MmNlNjE2NWQyZjQ2ODNiMDUwZWQ3
ZDZhZmRhNDliNy4uYWE1MTQ2ZGM2MTAwMjI2MDY2YWVjYzY0ZjMyYTNhNGUyYWIyZDk1NyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbnRlbnQtcHJvdmlkZXJz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbnRlbnQtcHJvdmlk
ZXJzLmh0bWwKQEAgLTY5LDI4ICs2OSw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRlbnRQcm92aWRlci5y
ZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7Ci0gICAgICAgIH0sCi0KLSAgICAgICAg
ZnVuY3Rpb24gdGVzdEZvcm1hdHRlZENvbnRlbnRQcm92aWRlcihuZXh0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgbWFwcGluZyA9IHt9OwotICAgICAgICAgICAgdmFyIGZvcm1hdHRlciA9
IHsKLSAgICAgICAgICAgICAgICBmb3JtYXRDb250ZW50OiBmdW5jdGlvbihtaW1lVHlwZSwgY29u
dGVudCwgY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgIjxmb3JtYXR0ZWQ+ICIgKyBjb250ZW50LCBt
YXBwaW5nKSwgMCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgIHZhciByZXNvdXJjZSA9IHsgdHlwZTogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9j
dW1lbnQsIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykgeyBjYWxsYmFjaygiPHJl
c291cmNlIGNvbnRlbnQ+Iik7IH0gfTsKLSAgICAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyKHJlc291cmNlKTsKLSAg
ICAgICAgICAgIHZhciBmb3JtYXR0ZWRDb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkZvcm1hdHRlZENvbnRlbnRQcm92aWRlcihjb250ZW50UHJvdmlkZXIsIGZvcm1hdHRlcik7Ci0g
ICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygidGV4dC9odG1sIiwgbWltZVR5cGUpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKCI8Zm9ybWF0dGVkPiA8cmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50KTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtYXBwaW5nLCBmb3Jt
YXR0ZWRDb250ZW50UHJvdmlkZXIubWFwcGluZyk7Ci0gICAgICAgICAgICAgICAgbmV4dCgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9ybWF0dGVkQ29udGVudFByb3ZpZGVyLnJlcXVl
c3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKICAgICAgICAgfQogICAgIF0pOwogfTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCmlu
ZGV4IDZmZTVkNjM5NDk0YWUzNmQwYWQ4ZDYwYWFkZGVkZTJjZDQ4ZDQyYWYuLjk0YzgwZGNhNGIw
OTM4MzE0YjQyZDIxMDMxNWQ3MTU3MDU2ZGMxNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbApAQCAtMTAsNiArMTAsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAgIHZhciBtb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
T2JqZWN0KCk7CiAgICAgICAgIG1vZGVsLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlID0gZnVu
Y3Rpb24oKSB7IHJldHVybiBbXTsgfTsKKyAgICAgICAgbW9kZWwubWVzc2FnZXNGb3JVSVNvdXJj
ZUNvZGUgPSBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9OwogICAgICAgICByZXR1cm4gbW9kZWw7
CiAgICAgfQogICAgIGZ1bmN0aW9uIGFkZFVJU291Y2VDb2RlKG1vZGVsLCB1cmwpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0
bWwKaW5kZXggODlkYTI5YjM5YWIwNTg4ZDRlMDU0Njk1YTNlNmRlN2YzMDU4NDYwNS4uNzVmMmVl
N2EwZjNlNTgxY2M2NDNjODhjMTg2OTlkNzlmOWIyMmFiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS1jb3VudC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbApAQCAtMzEs
OCArMzEsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJl
bG9hZCgpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93
U2NyaXB0U291cmNlKCJzb3VyY2UtZnJhbWUtY291bnQuaHRtbCIsIGRpZFNob3dTY3JpcHRTb3Vy
Y2VBZ2Fpbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dT
Y3JpcHRTb3VyY2VBZ2FpbigpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRUcnVlKHNlbGVjdFtzZWxlY3Quc2VsZWN0ZWRJbmRleF0udGV4dC5pbmRl
eE9mKCJzb3VyY2UtZnJhbWUtY291bnQuaHRtbCIpICE9PSAtMSk7Ci0gICAgICAgICAgICAgICAg
Ly8gVGhlcmUgc2hvdWxkIGJlIG1heGltdW0gMiBzb3VyY2UgZnJhbWVzOiBmaXJzdCBvbmUgaXMg
dGhlIGZpcnN0IHNob3duLCBzZWNvbmQgb25lIGlzIHRoZSBsYXN0IHZpZXdlZCAoInNjcmlwdHMt
cGFuZWwuaHRtbCIpLgorICAgICAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBtYXhpbXVt
IDIgc291cmNlIGZyYW1lczogZmlyc3Qgb25lIGlzIHRoZSBmaXJzdCBzaG93biwgc2Vjb25kIG9u
ZSBpcyB0aGUgbGFzdCB2aWV3ZWQgKCJzb3VyY2UtZnJhbWUtY291bnQuaHRtbCIpLgogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHNvdXJjZUZyYW1lQ291
bnQgPD0gMiwgInRvbyBtYW55IHNvdXJjZSBmcmFtZXMgY3JlYXRlZCBhZnRlciBwYWdlIHJlbG9h
ZCIpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3NmM2N2NiNTM4ODI5ODVhMzY5ODljMTg1NjdmZjlmZGI1M2MwMzk1Li45YTUxZTA1MTA2OWFh
YmJlZTFmNjdhZWY3ZThlNTBlNjdlOTNhMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAK
KzIwMTEtMDktMDUgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcmUtaW1wbGVtZW50IFJhd1NvdXJjZUNvZGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzYwOQorCisgICAg
ICAgIFJhd1NvdXJjZUNvZGUgY29udGVudCBhbmQgc291cmNlIG1hcHBpbmcgbG9hZGluZyBsb2dp
YyBpcyB0b28gY29tcGxleCwgcmUtaW1wbGVtZW50IGl0IHVzaW5nIHNpbXBsZXIgc2VtYW50aWNz
OgorICAgICAgICAxKSBJbml0aWFsbHksIFJhd1NvdXJjZUNvZGUgZG9lc24ndCBoYXZlIGFueSBj
b250ZW50IG9yIG1hcHBpbmcgYmVjYXVzZSBjb250ZW50IGxvYWRpbmcgYW5kCisgICAgICAgIGZv
cm1hdHRpbmcgb3BlcmF0aW9ucyBhcmUgYXN5bmNocm9ub3VzLCBpdCBvbmx5IGhhcyBzY3JpcHRz
IG1ldGFkYXRhLiBXZSBkb24ndCB1cGRhdGUgVUkgcmlnaHQKKyAgICAgICAgYWZ0ZXIgUmF3U291
cmNlQ29kZSBjcmVhdGlvbiB1bnRpbCBmdWxsIFJhd1NvdXJjZUNvZGUgcmVwcmVzZW50YXRpb24g
aXMgcmVhZHkgKGNvbnRlbnQgKyBtYXBwaW5nKS4KKyAgICAgICAgMikgV2hlbiBSYXdTb3VyY2VD
b2RlIHJlcHJlc2VudGF0aW9uIGlzIHJlYWR5IChlLmcuIHJlc291cmNlIGlzIGZpbmlzaGVkLCBv
ciBjb250ZW50IGlzIGZvcm1hdHRlZAorICAgICAgICBpZiBpbiBwcmV0dHktcHJpbnQgbW9kZSkg
d2UgZGlzcGF0Y2ggU291cmNlTWFwcGluZ1VwZGF0ZWQgZXZlbnQgdG8gbm90aWZ5IHRoZSBsaXN0
ZW5lcnMgdGhhdAorICAgICAgICBzb3VyY2UgY29kZSBzaG91bGQgYmUgc2hvd24gdG8gdXNlciBh
bmQgcmF3IGxvY2F0aW9ucyBzaG91bGQgYmUgY29udmVydGVkIHRvIHVpIGxvY2F0aW9ucworICAg
ICAgICAodG8gc2hvdyBicmVha3BvaW5zLCBtZXNzYWdlcywgY2FsbCBmcmFtZXMgZXRjIGluIFVJ
KS4gQXQgdGhpcyBtb21lbnQsIGFsbCBzb3VyY2UgZmlsZSdzIGNvbnRlbnQKKyAgICAgICAgaXMg
cmVhZHkgZm9yIGxvYWRpbmcgYW5kIHNvdXJjZSBtYXBwaW5nIGlzIGF2YWlsYWJsZS4KKyAgICAg
ICAgMykgTGF0ZXIsIFJhd1NvdXJjZUNvZGUgcmVwcmVzZW50YXRpb24gbWF5IGNoYW5nZSBhZ2Fp
biwgZS5nLiBpZiBwcmV0dHktcHJpbnQgbW9kZSBpcyB0b2dnbGVkLCBvcgorICAgICAgICBibG9j
a2VkIHJlc291cmNlIGlzIGZpbmlzaGVkIGV0Yy4sIGluIHRoYXQgY2FzZSBTb3VyY2VNYXBwaW5n
VXBkYXRlZCBpcyBkaXNwYXRjaGVkIGFnYWluIHRvIHVwZGF0ZQorICAgICAgICBzb3VyY2UgY29k
ZSwgbGlua3MgYW5kIGRlY29yYXRpb25zIGluIFVJLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLmxpbmtpZnlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUu
X3NvdXJjZU1hcHBpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fcmVzdG9yZUJyZWFrcG9pbnRzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fYWRkQ29u
c29sZU1lc3NhZ2UuZGlkR2V0VUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZENvbnNvbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5t
ZXNzYWdlc0ZvclVJU291cmNlQ29kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
Y3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5fdWlTb3VyY2VDb2RlUmVwbGFjZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX3NvdXJjZUZyYW1lTG9hZGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUu
YWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlw
ZS5jb250ZW50RWRpdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnBy
b3RvdHlwZS5fcmVzb3VyY2VGaW5pc2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUucHJvdG90eXBlLmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZC5zb3Vy
Y2VNYXBwaW5nVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5w
cm90b3R5cGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5mb3JjZUxvYWRDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fdXBkYXRlU291cmNlTWFwcGlu
Zy5kaWRDcmVhdGVTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlLnByb3RvdHlwZS5fdXBkYXRlU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuX2NyZWF0ZUNvbnRlbnRQcm92aWRlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuX2NyZWF0ZVNvdXJj
ZU1hcHBpbmcuZGlkUmVxdWVzdENvbnRlbnQuZGlkRm9ybWF0Q29udGVudCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuX2NyZWF0ZVNvdXJjZU1hcHBpbmcu
ZGlkUmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlLl9jcmVhdGVTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fc2F2ZVNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3RhdGljQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisKIDIwMTEt
MDktMDIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogcmVuYW1lIFJhd1NvdXJjZUNvZGUucmVsb2FkIHRvIGNvbnRlbnRF
ZGl0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggZjJkNDA1OTM2NWM4ZTI5
NGNlM2M3MjU0NzUxNDM4ZGY0YmEzY2YwMy4uYWJiNDYyNGY1OGI2YTNmYjI1MzRmMDIxMmIxYjVh
NGE4Zjk0ZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMTMyLDcgKzEz
Miw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX3NjcmlwdExvY2F0aW9uVG9VSUxvY2F0aW9uKHNvdXJjZVVS
TCwgbnVsbCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkaWRHZXRMb2NhdGlvbi5iaW5kKHRo
aXMpKTsKICAgICAgICAgfQogICAgICAgICB1cGRhdGVBbmNob3IuY2FsbCh0aGlzKTsKLSAgICAg
ICAgdGhpcy5hZGRTb3VyY2VNYXBwaW5nTGlzdGVuZXIoc291cmNlVVJMLCBudWxsLCB1cGRhdGVB
bmNob3IuYmluZCh0aGlzKSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQs
IHVwZGF0ZUFuY2hvci5iaW5kKHRoaXMpKTsKICAgICAgICAgcmV0dXJuIGFuY2hvcjsKICAgICB9
LAogCkBAIC0xNTcsMjcgKzE1NywzNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZShyYXdTb3VyY2VDb2RlSWQsIHNjcmlwdCwgdGhpcy5fZm9y
bWF0dGVyLCB0aGlzLl9mb3JtYXRTb3VyY2UpOwogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2Rl
W3Jhd1NvdXJjZUNvZGVJZF0gPSByYXdTb3VyY2VDb2RlOwotICAgICAgICByYXdTb3VyY2VDb2Rl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291
cmNlQ29kZVJlcGxhY2VkLCB0aGlzLl91aVNvdXJjZUNvZGVSZXBsYWNlZCwgdGhpcyk7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZygpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnVpU291cmNlQ29kZUFkZGVkKHJhd1NvdXJj
ZUNvZGUudWlTb3VyY2VDb2RlKTsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMu
X2JyZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlKHJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlKTsKLSAgICAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJl
YWtwb2ludHMpCi0gICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9p
bnRzW2xpbmVOdW1iZXJdKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogZm9yY2Ugc291
cmNlIGZvcm1hdHRpbmcgaWYgbmVlZGVkLiBUaGlzIHdpbGwgZ28gYXdheSBvbmNlIGZvcm1hdHRp
bmcKLSAgICAgICAgLy8gaXMgZnVsbHkgZW5jYXBzdWxhdGVkIGluIFJhd1NvdXJjZUNvZGUgY2xh
c3MuCi0gICAgICAgIHJhd1NvdXJjZUNvZGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRp
ZENyZWF0ZVNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNl
TWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3NvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzKTsKKyAgICB9
LAogCisgICAgX3NvdXJjZU1hcHBpbmdVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgb2xk
VUlTb3VyY2VDb2RlID0gZXZlbnQuZGF0YS5vbGRTb3VyY2VDb2RlOwogICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdWlTb3VyY2VDb2RlKTsKKworICAgICAgICBp
ZiAoIW9sZFVJU291cmNlQ29kZSkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNv
dXJjZUNvZGVBZGRlZCwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50c0Zv
clVJU291cmNlQ29kZShvbGRVSVNvdXJjZUNvZGUpOworICAgICAgICAgICAgZm9yICh2YXIgbGlu
ZU51bWJlciBpbiBicmVha3BvaW50cykgeworICAgICAgICAgICAgICAgIHZhciBicmVha3BvaW50
ID0gYnJlYWtwb2ludHNbbGluZU51bWJlcl07CisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtw
b2ludFJlbW92ZWQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgZGVsZXRlIGJyZWFrcG9p
bnQudWlTb3VyY2VDb2RlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGV2ZW50RGF0
YSA9IHsgc291cmNlQ29kZTogdWlTb3VyY2VDb2RlLCBvbGRTb3VyY2VDb2RlOiBvbGRVSVNvdXJj
ZUNvZGUgfTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBs
YWNlZCwgZXZlbnREYXRhKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtw
b2ludHModWlTb3VyY2VDb2RlKTsKICAgICB9LAogCi0gICAgX3VpU291cmNlQ29kZVJlcGxhY2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVzdG9yZUJyZWFrcG9pbnRzOiBmdW5jdGlvbih1aVNv
dXJjZUNvZGUpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogcmVzdG9yZSBicmVha3BvaW50cyBp
biBuZXcgc291cmNlIGNvZGUgKGN1cnJlbnRseSB3ZSBqdXN0IHJlY3JlYXRlIGV2ZXJ5dGhpbmcg
d2hlbiBzd2l0Y2hpbmcgdG8gcHJldHR5LXByaW50IG1vZGUpLgotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIGV2ZW50LmRhdGEpOworICAgICAgICB0aGlz
Ll9icmVha3BvaW50TWFuYWdlci51aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpOworICAg
ICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50
c0ZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgICAgICBmb3IgKHZhciBsaW5lTnVt
YmVyIGluIGJyZWFrcG9pbnRzKQorICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJy
ZWFrcG9pbnRzW2xpbmVOdW1iZXJdKTsKICAgICB9LAogCiAgICAgY2FuRWRpdFNjcmlwdFNvdXJj
ZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQpAQCAtMjkwLDcgKzI5OSw3IEBAIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBy
ZXNlbnRhdGlvbk1lc3NhZ2UudWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwogICAgICAgICAg
ICAgcHJlc2VudGF0aW9uTWVzc2FnZS5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKICAgICAgICAg
ICAgIHByZXNlbnRhdGlvbk1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdlID0gbWVzc2FnZTsKLSAgICAg
ICAgICAgIHVpU291cmNlQ29kZS5tZXNzYWdlcy5wdXNoKHByZXNlbnRhdGlvbk1lc3NhZ2UpOwor
ICAgICAgICAgICAgcmF3U291cmNlQ29kZS5tZXNzYWdlcy5wdXNoKHByZXNlbnRhdGlvbk1lc3Nh
Z2UpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLkNvbnNvbGVNZXNzYWdlQWRkZWQs
IHByZXNlbnRhdGlvbk1lc3NhZ2UpOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FKDYyNzI1
KTogc3RhY2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2VkLgpAQCAtMzI1
LDYgKzMzNCwxMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBicmVha3BvaW50c0xpc3Q7CiAgICAgfSwKIAorICAg
IG1lc3NhZ2VzRm9yVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCisgICAgewor
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlOwor
ICAgICAgICByZXR1cm4gcmF3U291cmNlQ29kZS5tZXNzYWdlczsKKyAgICB9LAorCiAgICAgc2V0
QnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24s
IGVuYWJsZWQpCiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5zZXRCcmVh
a3BvaW50KHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKTsKQEAg
LTQ5NSw3ICs1MTAsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUucHJvdG90
eXBlID0gewogICAgIHNlbGVjdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X3VpU291cmNlQ29kZSkKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5mb3JjZUxvYWRD
b250ZW50KHRoaXMuX3NjcmlwdCk7CisgICAgICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGUuZm9y
Y2VVcGRhdGVVSVNvdXJjZUNvZGUodGhpcy5fc2NyaXB0KTsKICAgICB9LAogCiAgICAgZXZhbHVh
dGU6IGZ1bmN0aW9uKGNvZGUsIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIHJl
dHVybkJ5VmFsdWUsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBiYjhkMzlmNTk2OWFmNWE0MzFlYThmZjI5
OTY3YzEzZmZkMDVjOGI1Li5mNDUxZWI0YTQzYThiMTUzOGU1YmViNzk1ZTBkNzRiYmU5MDJiNmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcwpAQCAtNjc2LDYgKzY3Niw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgICAgIC8vIFJlLWJpbmQgZmlsZSBzZWxlY3Qgb3B0aW9uIGZyb20g
b2xkIHNvdXJjZSBmaWxlIHRvIG5ldyBvbmUuCiAgICAgICAgIHZhciBvcHRpb24gPSBvbGRVSVNv
dXJjZUNvZGUuX29wdGlvbjsKKyAgICAgICAgaWYgKCFvcHRpb24pCisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGRlbGV0ZSBvbGRVSVNvdXJjZUNvZGUuX29wdGlvbjsKICAgICAgICAgb3B0
aW9uLl91aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CiAgICAgICAgIHVpU291cmNlQ29kZS5f
b3B0aW9uID0gb3B0aW9uOwpAQCAtNjkxLDcgKzY5Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBldmVudC50YXJn
ZXQ7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBzb3VyY2VGcmFtZS5fdWlTb3VyY2VDb2Rl
OwogCi0gICAgICAgIHZhciBtZXNzYWdlcyA9IHVpU291cmNlQ29kZS5tZXNzYWdlczsKKyAgICAg
ICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwubWVzc2FnZXNGb3JVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNz
YWdlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBtZXNzYWdlc1tp
XTsKICAgICAgICAgICAgIHNvdXJjZUZyYW1lLmFkZE1lc3NhZ2VUb1NvdXJjZShtZXNzYWdlLmxp
bmVOdW1iZXIsIG1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCAwYmZkYWM4MGRjYTQ4YTRl
ZGNkODUwYjE5ZDBmZWIxNTYwZWUxYjhkLi5kMjNiOTRmOTYxYTIyNGYzNDkwZWM1MjViNjNiZTJh
OTRiY2NjZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
b3VyY2VGaWxlLmpzCkBAIC00MywyNSArNDMsMjkgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUgPSBmdW5jdGlvbihpZCwgc2NyaXB0LCBmb3JtYXR0ZXIsIGZvcm1hdHRlZCkKIAogICAgIGlm
IChzY3JpcHQuc291cmNlVVJMKQogICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwp
IHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsKLSAgICB0
aGlzLl9yZXF1ZXN0Q29udGVudENhbGxiYWNrcyA9IFtdOwogCiAgICAgdGhpcy5pZCA9IGlkOwog
ICAgIHRoaXMudXJsID0gc2NyaXB0LnNvdXJjZVVSTDsKICAgICB0aGlzLmlzQ29udGVudFNjcmlw
dCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQ7CiAgICAgdGhpcy5tZXNzYWdlcyA9IFtdOwogCi0g
ICAgaWYgKHRoaXMuX2hhc1BlbmRpbmdSZXNvdXJjZSgpKQotICAgICAgICB0aGlzLl9yZXNvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3JlbG9hZC5iaW5kKHRoaXMpKTsK
KyAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gdGhpcy5fcmVzb3VyY2UgJiYgIXRoaXMu
X3Jlc291cmNlLmZpbmlzaGVkOworICAgIHRoaXMuX2hhc05ld1NjcmlwdHMgPSB0cnVlOworICAg
IGlmICghdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCkKKyAgICAgICAgdGhpcy5fdXBkYXRlU291
cmNlTWFwcGluZygpOworICAgIGVsc2UgaWYgKHRoaXMuX3Jlc291cmNlKQorICAgICAgICB0aGlz
Ll9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3Jlc291cmNlRmlu
aXNoZWQuYmluZCh0aGlzKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50
cyA9IHsKLSAgICBVSVNvdXJjZUNvZGVSZXBsYWNlZDogInVpLXNvdXJjZS1jb2RlLXJlcGxhY2Vk
IgorICAgIFNvdXJjZU1hcHBpbmdVcGRhdGVkOiAic291cmNlLW1hcHBpbmctdXBkYXRlZCIKIH0K
IAogV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgIGFkZFNjcmlw
dDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAgICAgICAgdGhpcy5fc2NyaXB0cy5wdXNoKHNj
cmlwdCk7CisgICAgICAgIHRoaXMuX2hhc05ld1NjcmlwdHMgPSB0cnVlOwogICAgIH0sCiAKICAg
ICBnZXQgdWlTb3VyY2VDb2RlKCkKQEAgLTc4LDcgKzgyLDEzIEBAIFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIGNvbnRlbnRFZGl0ZWQ6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX3JlbG9hZCgpOworICAgICAgICB0aGlzLl91cGRhdGVTb3Vy
Y2VNYXBwaW5nKCk7CisgICAgfSwKKworICAgIF9yZXNvdXJjZUZpbmlzaGVkOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gZmFsc2U7CisgICAg
ICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCiAgICAgcmF3TG9jYXRp
b25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQpAQCAtMTEyLDEyNiArMTIyLDkz
IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIHJlcXVl
c3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9j
b250ZW50TG9hZGVkKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlwZSwgdGhp
cy5fY29udGVudCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0
aGlzLl9yZXF1ZXN0Q29udGVudENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKLSAgICAgICAgdGhp
cy5fcmVxdWVzdENvbnRlbnQoKTsKKyAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzLgorICAg
ICAgICB0aGlzLl91aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoY2FsbGJhY2spOwogICAgIH0s
CiAKICAgICBjcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9mb3JtYXR0ZWQpIHsKKyAgICAgICAgLy8gRklYTUU6
IHJlbW92ZSBjcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQsIGNsaWVudCBzaG91bGQgbGlzdGVu
IHRvIFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50IGluc3RlYWQuCisgICAgICAgIGlmICh0aGlz
Ll91aVNvdXJjZUNvZGUpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudCgp
CisgICAgICAgIGZ1bmN0aW9uIHNvdXJjZU1hcHBpbmdVcGRhdGVkKCkKICAgICAgICAgeworICAg
ICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgc291cmNlTWFwcGluZ1VwZGF0ZWQsIHRo
aXMpOwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQotICAgICAgICAvLyBGb3Jj
ZSBjb250ZW50IGZvcm1hdHRpbmcgdG8gb2J0YWluIHRoZSBtYXBwaW5nLgotICAgICAgICB0aGlz
LnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNv
dXJjZU1hcHBpbmdVcGRhdGVkLCBzb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcyk7CiAgICAgfSwK
IAotICAgIF9zZXRDb250ZW50UHJvdmlkZXI6IGZ1bmN0aW9uKGNvbnRlbnRQcm92aWRlcikKKyAg
ICBmb3JjZVVwZGF0ZVVJU291cmNlQ29kZTogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX2Zvcm1hdHRlZCkKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRQcm92aWRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkQ29udGVudFByb3ZpZGVyKGNvbnRlbnRQcm92
aWRlciwgdGhpcy5fZm9ybWF0dGVyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5f
Y29udGVudFByb3ZpZGVyID0gY29udGVudFByb3ZpZGVyOworICAgICAgICBpZiAoIXRoaXMuX3Vz
ZVRlbXBvcmFyeUNvbnRlbnQgfHwgIXRoaXMuX2hhc05ld1NjcmlwdHMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHRoaXMuX2hhc05ld1NjcmlwdHMgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5fdXBkYXRlU291cmNlTWFwcGluZygpOwogICAgIH0sCiAKLSAgICBmb3JjZUxvYWRDb250ZW50
OiBmdW5jdGlvbihzY3JpcHQpCisgICAgX3VwZGF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5faGFzUGVuZGluZ1Jlc291cmNlKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9jb25jYXRlbmF0ZWRTY3JpcHRzKQot
ICAgICAgICAgICAgdGhpcy5fY29uY2F0ZW5hdGVkU2NyaXB0cyA9IHt9OwotICAgICAgICBpZiAo
dGhpcy5fY29uY2F0ZW5hdGVkU2NyaXB0c1tzY3JpcHQuc2NyaXB0SWRdKQorICAgICAgICBpZiAo
dGhpcy5fbG9ja2VkKSB7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVOZWVkZWQgPSB0cnVlOwog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Nj
cmlwdHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9jb25jYXRlbmF0ZWRTY3JpcHRz
W3RoaXMuX3NjcmlwdHNbaV0uc2NyaXB0SWRdID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9sb2NrZWQgPSB0cnVlOworICAgICAgICB0aGlzLl91cGRhdGVOZWVkZWQgPSBmYWxzZTsK
IAotICAgICAgICB0aGlzLl9yZWxvYWQoKTsKKyAgICAgICAgdmFyIG9yaWdpbmFsQ29udGVudFBy
b3ZpZGVyID0gdGhpcy5fY3JlYXRlQ29udGVudFByb3ZpZGVyKCk7CisgICAgICAgIHRoaXMuX2Ny
ZWF0ZVNvdXJjZU1hcHBpbmcob3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIGRpZENyZWF0ZVNvdXJj
ZU1hcHBpbmcuYmluZCh0aGlzKSk7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50UmVxdWVz
dGVkKSB7Ci0gICAgICAgICAgICB0aGlzLl9jb250ZW50UmVxdWVzdGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHRoaXMuX2xvYWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KCk7CisgICAgICAg
IGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoY29udGVudFByb3ZpZGVyLCBtYXBwaW5n
KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl9sb2NrZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICghdGhpcy5fdXBkYXRlTmVlZGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVT
b3VyY2VNYXBwaW5nKGNvbnRlbnRQcm92aWRlciwgbWFwcGluZyk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwogICAgICAgICB9
CiAgICAgfSwKIAotICAgIF9yZWxvYWQ6IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlQ29udGVudFBy
b3ZpZGVyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fY29udGVudExvYWRl
ZCkgewotICAgICAgICAgICAgdGhpcy5fY29udGVudExvYWRlZCA9IGZhbHNlOwotICAgICAgICAg
ICAgLy8gRklYTUU6IGNyZWF0ZSBhbm90aGVyIFVJU291cmNlQ29kZSBpbnN0YW5jZSBoZXJlLCBV
SVNvdXJjZUNvZGUgc2hvdWxkIGJlIGltbXV0YWJsZS4KLSAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNv
dXJjZUNvZGVSZXBsYWNlZCwgeyBvbGRTb3VyY2VDb2RlOiB0aGlzLCBzb3VyY2VDb2RlOiB0aGlz
IH0pOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQpCi0gICAgICAg
ICAgICB0aGlzLl9yZWxvYWRDb250ZW50ID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAodGhpcy5f
cmVxdWVzdENvbnRlbnRDYWxsYmFja3MubGVuZ3RoKQotICAgICAgICAgICAgdGhpcy5fcmVxdWVz
dENvbnRlbnQoKTsKLSAgICB9LAotCi0gICAgX3JlcXVlc3RDb250ZW50OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5fY29udGVudFJlcXVlc3RlZCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLl9jb250ZW50UmVxdWVzdGVkID0gdHJ1ZTsKICAgICAgICAg
aWYgKHRoaXMuX3Jlc291cmNlICYmIHRoaXMuX3Jlc291cmNlLmZpbmlzaGVkKQotICAgICAgICAg
ICAgdGhpcy5fbG9hZFJlc291cmNlQ29udGVudCh0aGlzLl9yZXNvdXJjZSk7Ci0gICAgICAgIGVs
c2UgaWYgKCF0aGlzLl9yZXNvdXJjZSkKLSAgICAgICAgICAgIHRoaXMuX2xvYWRTY3JpcHRDb250
ZW50KCk7Ci0gICAgICAgIGVsc2UgaWYgKHRoaXMuX2NvbmNhdGVuYXRlZFNjcmlwdHMpCi0gICAg
ICAgICAgICB0aGlzLl9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudCgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9jb250ZW50UmVxdWVzdGVkID0gZmFsc2U7Ci0gICAg
fSwKLQotICAgIF9sb2FkUmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3NldENvbnRlbnRQcm92aWRlcihuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlQ29udGVudFByb3ZpZGVyKHJlc291cmNlKSk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRQcm92
aWRlci5yZXF1ZXN0Q29udGVudCh0aGlzLl9kaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsK
LSAgICB9LAotCi0gICAgX2xvYWRTY3JpcHRDb250ZW50OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9zZXRDb250ZW50UHJvdmlkZXIobmV3IFdlYkluc3BlY3Rvci5TY3JpcHRDb250
ZW50UHJvdmlkZXIodGhpcy5fc2NyaXB0c1swXSkpOwotICAgICAgICB0aGlzLl9jb250ZW50UHJv
dmlkZXIucmVxdWVzdENvbnRlbnQodGhpcy5fZGlkUmVxdWVzdENvbnRlbnQuYmluZCh0aGlzKSk7
Ci0gICAgfSwKLQotICAgIF9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudDogZnVuY3Rp
b24oKQotICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNl
Q29udGVudFByb3ZpZGVyKHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgaWYgKHRoaXMuX3Njcmlw
dHMubGVuZ3RoID09PSAxICYmICF0aGlzLl9zY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXRoaXMu
X3NjcmlwdHNbMF0uY29sdW1uT2Zmc2V0KQotICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFBy
b3ZpZGVyKG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyKHRoaXMuX3Njcmlw
dHNbMF0pKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFByb3Zp
ZGVyKG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcih0
aGlzLl9zY3JpcHRzKSk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRQcm92aWRlci5yZXF1ZXN0Q29u
dGVudCh0aGlzLl9kaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRz
WzBdKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0
c0NvbnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRzKTsKICAgICB9LAogCi0gICAgX2RpZFJlcXVl
c3RDb250ZW50OiBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVudCkKKyAgICBfY3JlYXRlU291cmNl
TWFwcGluZzogZnVuY3Rpb24ob3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIGNhbGxiYWNrKQogICAg
IHsKLSAgICAgICAgdGhpcy5fY29udGVudExvYWRlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2Nv
bnRlbnRSZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5fbWltZVR5cGUgPSBtaW1lVHlw
ZTsKLSAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgIHRoaXMuX21hcHBp
bmcgPSB0aGlzLl9jb250ZW50UHJvdmlkZXIubWFwcGluZzsKLQotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX3JlcXVlc3RDb250ZW50Q2FsbGJhY2tzLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgdGhpcy5fcmVxdWVzdENvbnRlbnRDYWxsYmFja3NbaV0obWltZVR5cGUsIGNvbnRl
bnQpOwotICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudENhbGxiYWNrcyA9IFtdOwotCi0gICAg
ICAgIGlmICh0aGlzLl9yZWxvYWRDb250ZW50KQotICAgICAgICAgICAgdGhpcy5fcmVsb2FkKCk7
CisgICAgICAgIGlmICghdGhpcy5fZm9ybWF0dGVkKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0
KGNhbGxiYWNrLmJpbmQobnVsbCwgb3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIG51bGwpLCAwKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBm
dW5jdGlvbiBkaWRGb3JtYXRDb250ZW50KGZvcm1hdHRlZENvbnRlbnQsIG1hcHBpbmcpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlLCBmb3JtYXR0ZWRDb250ZW50
KQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRlbnRQcm92aWRlciwgbWFwcGluZyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9mb3JtYXR0ZXIuZm9ybWF0Q29udGVudCht
aW1lVHlwZSwgY29udGVudCwgZGlkRm9ybWF0Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
fQorICAgICAgICBvcmlnaW5hbENvbnRlbnRQcm92aWRlci5yZXF1ZXN0Q29udGVudChkaWRSZXF1
ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgX2hhc1BlbmRpbmdSZXNvdXJj
ZTogZnVuY3Rpb24oKQorICAgIF9zYXZlU291cmNlTWFwcGluZzogZnVuY3Rpb24oY29udGVudFBy
b3ZpZGVyLCBtYXBwaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlICYm
ICF0aGlzLl9yZXNvdXJjZS5maW5pc2hlZDsKKyAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZTsK
KyAgICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZSkKKyAgICAgICAgICAgIG9sZFVJU291cmNl
Q29kZSA9IHRoaXM7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVJZCA9ICh0aGlzLl9mb3JtYXR0
ZWQgPyAiZGVvYmZ1c2NhdGVkOiIgOiAiIikgKyAodGhpcy5fc2NyaXB0c1swXS5zb3VyY2VVUkwg
fHwgdGhpcy5fc2NyaXB0c1swXS5zY3JpcHRJZCk7CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUlkLCB0aGlzLnVy
bCwgdGhpcy5pc0NvbnRlbnRTY3JpcHQsIHRoaXMsIGNvbnRlbnRQcm92aWRlcik7CisgICAgICAg
IHRoaXMuX21hcHBpbmcgPSBtYXBwaW5nOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycyhXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1Vw
ZGF0ZWQsIHsgb2xkU291cmNlQ29kZTogb2xkVUlTb3VyY2VDb2RlIH0pOwogICAgIH0KIH0KIApA
QCAtMzY0LDI2ICszNDEsMTcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlci5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90b3R5cGU7
CiAKIAotV2ViSW5zcGVjdG9yLkZvcm1hdHRlZENvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKGNv
bnRlbnRQcm92aWRlciwgZm9ybWF0dGVyKQorV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92
aWRlciA9IGZ1bmN0aW9uKG1pbWVUeXBlLCBjb250ZW50KQogewotICAgIHRoaXMuX2NvbnRlbnRQ
cm92aWRlciA9IGNvbnRlbnRQcm92aWRlcjsKLSAgICB0aGlzLl9mb3JtYXR0ZXIgPSBmb3JtYXR0
ZXI7CisgICAgdGhpcy5fbWltZVR5cGUgPSBtaW1lVHlwZTsKKyAgICB0aGlzLl9jb250ZW50ID0g
Y29udGVudDsKIH07CiAKLVdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRDb250ZW50UHJvdmlkZXIucHJv
dG90eXBlID0geworV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUg
PSB7CiAgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAg
ICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZEZvcm1hdENvbnRlbnQoZm9ybWF0dGVkQ29udGVu
dCwgbWFwcGluZykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0aGlzLm1hcHBpbmcg
PSBtYXBwaW5nOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1pbWVUeXBlLCBmb3JtYXR0ZWRD
b250ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuX2Zvcm1hdHRlci5mb3Jt
YXRDb250ZW50KG1pbWVUeXBlLCBjb250ZW50LCBkaWRGb3JtYXRDb250ZW50LmJpbmQodGhpcykp
OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRQcm92aWRlci5yZXF1ZXN0Q29udGVu
dChkaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgY2FsbGJhY2sodGhpcy5f
bWltZVR5cGUsIHRoaXMuX2NvbnRlbnQpOwogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLkZvcm1h
dHRlZENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNv
bnRlbnRQcm92aWRlci5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3Zp
ZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnBy
b3RvdHlwZTsK
</data>
<flag name="review"
          id="102750"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>