<?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>75955</bug_id>
          
          <creation_ts>2012-01-10 05:36:31 -0800</creation_ts>
          <short_desc>Web Inspector: add &quot;free flow DOM editing&quot; experiment.</short_desc>
          <delta_ts>2012-01-10 09:39:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>jberlin</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533000</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-10 05:36:31 -0800</bug_when>
    <thetext>This change enables HTML editing from Resources panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533003</commentid>
    <comment_count>1</comment_count>
      <attachid>121836</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-10 05:43:58 -0800</bug_when>
    <thetext>Created attachment 121836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533025</commentid>
    <comment_count>2</comment_count>
      <attachid>121836</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-10 06:42:34 -0800</bug_when>
    <thetext>Comment on attachment 121836
Patch

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

&gt; Source/WebCore/inspector/DOMEditor.cpp:75
&gt; +            OwnPtr&lt;NodeDigest&gt; oInfo = createNodeDigest(oldElement);

We don&apos;t use abbreviations in WebKit

&gt; Source/WebCore/inspector/DOMEditor.cpp:76
&gt; +            OwnPtr&lt;NodeDigest&gt; nInfo = createNodeDigest(newElement);

ditto

&gt; Source/WebCore/inspector/DOMEditor.cpp:127
&gt; +    // Trim tail

Period at the end.

&gt; Source/WebCore/inspector/DOMEditor.cpp:135
&gt; +    // Trim head

Period at the end.

&gt; Source/WebCore/inspector/DOMEditor.cpp:167
&gt; +        if (nit-&gt;second.size() != 1)

newIt?

&gt; Source/WebCore/inspector/DOMEditor.cpp:170
&gt; +        DiffTable::iterator oit = oldTable.find(nit-&gt;first);

oldIt?

&gt; Source/WebCore/inspector/DOMEditor.cpp:184
&gt; +            newMap[i + 1] = std::make_pair(newList[i + 1].get(), j);

The standard way is
using namespace std;
at the beginning (I&apos;ve been pointed at it a couple times - kling et al.)

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:649
&gt; +        *errorString = &quot;Editing detached nodes is not supported&quot;;

... of detached nodes...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533112</commentid>
    <comment_count>3</comment_count>
      <attachid>121836</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-01-10 08:48:33 -0800</bug_when>
    <thetext>Comment on attachment 121836
Patch

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

&gt; Source/WebCore/inspector/DOMEditor.cpp:228
&gt; +        RefPtr&lt;Node&gt; adoptedNode = oldParent-&gt;ownerDocument()-&gt;adoptNode(node, ec);

doesn&apos;t insertBefore do adoptNode?

&gt; Source/WebCore/inspector/DOMEditor.h:50
&gt; +    DOMEditor(Document*);

explicit

&gt; Source/WebCore/inspector/DOMEditor.h:56
&gt; +    struct NodeDigest {

Forward declaration should be enough.

&gt; Source/WebCore/inspector/DOMEditor.h:57
&gt; +        NodeDigest(Node*);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533123</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-10 09:01:22 -0800</bug_when>
    <thetext>Committed r104586: &lt;http://trac.webkit.org/changeset/104586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533144</commentid>
    <comment_count>5</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-01-10 09:39:37 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r104586: &lt;http://trac.webkit.org/changeset/104586&gt;

This broke the build:

http://build.webkit.org/builders/Lion%20Intel%20Debug%20%28Build%29/builds/5430/steps/compile-webkit/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121836</attachid>
            <date>2012-01-10 05:43:58 -0800</date>
            <delta_ts>2012-01-10 08:48:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75955-20120110174356.patch</filename>
            <type>text/plain</type>
            <size>29624</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUzOTZmNzI5YWVhNGUy
ZjY4MGJkZmMwYjVjY2ZmMWY1Mzg2Mzg3Yi4uYzFjY2FmNWNmMTQ2ZmI5YWY1NzE1YTZiMWRlODQz
MDhjMmIxZjAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTEwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBhZGQgImZyZWUgZmxvdyBET00gZWRpdGluZyIgZXhwZXJpbWVudC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTU1CisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgZW5hYmxlcyBIVE1MIGVkaXRpbmcgZnJvbSBSZXNvdXJjZXMgcGFuZWwgZXhwZXJpbWVu
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEVuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
czoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpET01FZGl0b3I6OkRPTUVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6
On5ET01FZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpwYXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01FZGl0b3I6Ok5vZGVEaWdlc3Q6Ok5vZGVEaWdlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpwYXRjaEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRWRpdG9yOjpwYXRjaE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRWRpdG9yOjpwYXRj
aENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAg
IChXZWJDb3JlOjpET01FZGl0b3I6OmNyZWF0ZU5vZGVEaWdlc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9ET01FZGl0b3IuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRl
ckhUTUwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU1v
ZGVsUmVzb3VyY2VCaW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Nb2RlbFJlc291
cmNlQmluZGluZy5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLmNhblNldENvbnRlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRXhwZXJpbWVudHNTZXR0aW5ncyk6CisKIDIwMTItMDEtMTAgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvbXBsZXggcGF0aCBzaG91bGQgYmUg
dXNlZCB3aGVuIFVWUyBleGlzdHMgaW4gdGV4dCBydW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZWZmZTZlM2YxNTZhMzI2MGZhOTQxMjM5NWQzYmM5ZDdmY2RhNGJiMC4uNjcxMjIyZGZkZDM4MGY3
OGJiNGI4ZTk0ZmVkYmRjZWZhYmY0NzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg3MCw2
ICs4NzAsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBpbnNwZWN0b3IvQ29uc29sZU1l
c3NhZ2UuY3BwCiAgICAgaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKKyAgICBpbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcAogICAgIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3Bw
CiAgICAgaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAKICAgICBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKaW5kZXggYjQ0MDc2Y2I1OTQ4YmYwODEwZTgyN2FhNWM0ZWI4NmEyYjMw
NWFlZC4uNjkzYjQ3MzJiNzZkNjk5NjI2ZTYzYTI0MDdmNjNlNTU1MTUwZGVkZCAxMDA2NDQKR0lU
IGJpbmFyeSBwYXRjaApkZWx0YSAzMjUKemNtZXghblB0dWU3T3NFKThPaihFOEh5TWJDVTBhXite
RHImaWIrOWphLXBRPzxRRyFmQW0mQVItTl8jJCpkfSpMCnpnU2o5WEM9KThQYElZbz43OUlyfDIz
M1kpMXo4M0toTFh3b3JRKHlYRDByZ15VTXd9O29TQGpOJWREV3JGIV9VQAp6Q2RseFEwbEpnLWBF
eUpUQER+UGdgVGZLdipGY3krbmEldEJ8SiM2N0FMeCs8TmpMV0JafDNYbSpXaVIoSGhJfXIKelF4
dS1jV1UxI3lvMnxCJG50P1J6JmpJXnBWWkh3M0tXe2tZZkVGdDshfiRKdDMmY3RjMGJxWEBHaHtP
NEZ7QUBrCnZDdEItSDR0T2dId2xVK2FHUlQwMV59M1VIeSVoIXZVM2pZcTVAT1dRLUtfOH4jZDcq
SzRhVnNKTyYoKiYKCmRlbHRhIDY5NQp6Y21iUHBmI3VJLTdTOHx3JGB9JEVpV24zb0YpNDE7VU18
SlZwciRiU3FxTkI2bXJ+andfVmtIVGo3RjJZck5KRHEKejFlNlZ5KiEpYGhJMTNNaGpEampkRkB2
bXYwej04PGY+UUN4Un41V2IxXj5DM1pjYkZ9KXJGWXVyd09KTDE5Y3x2CnpfdmVeZz5ue3hFMztL
ensqKzk5P2B+Q21oZkYlejAkYiN0MjR9MTElYUtiSHt5bkwlRTNRdUotPWVGZiQ1RkkmRQp6T2hB
N1dIdFM5UGAtVzI8czlBfDJtTys4UjdLb0o/MD5DfmxYMkBqN1ZATD0yX3U/I18kJEBXMCFDRXVs
RHVlMDUKeld9VjVxLSRHbj1AdlMwUVlAQG8pWDJvfFltaTNgUEAxX0ZITiZ9amExN19zYCVgNX0q
KHQmZ2RMcH5AKGZ2aH0rCno2ZCt2IVdGLU0lRHdxYyVHdlI4SWZvayk+RG5QREQxP3ZOYDZvNTcp
MTlfUFkxd2gkaUFpbkA/VU1rUSZyT0VHVgp6eGhLbys9ZzZkK3tnY21CbkA/fDVYUGlFSGhLWmBO
RlZIRjNVfmQteiR6cUB2TmBYI0kyRDNybCZTNUFBbDlnYSoKYkwlbG1hZnVCKi1pNDJXRWdPYjJ1
dGkpaT16e0xPbmYtST44CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMDY3MWJk
NzljNjIzMjkxM2E2ZjNjYjNiMmNiOGNkOTZlY2U3Nzc5Zi4uNjQ4Njg5NzRjMzg4MmI4OGFiMDhk
MjhiOWY3ZmZlYTBmOWFlNDcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0y
MzI3LDYgKzIzMjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NV3JhcHBlclZpc2l0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyNzhhYzliMjFlMzRjZjNkZTc4
ODlkMDU1ZDljZTJhMDRlMTI4Y2UwLi5kNTAzZjVlNGY1YWMwNzg4YTdmZDQwMjZiMzI5OGI1YmQw
MWQxNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg0OSw2ICs4NDksNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIFwKICAgICBpbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwIFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxz
LmNwcCBcCisgICAgaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgXAogICAgIGluc3BlY3Rvci9ET01O
b2RlSGlnaGxpZ2h0ZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCkBAIC0xOTA3LDYgKzE5MDgs
NyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3RyYWNrL1dlYlZUVFRva2VuaXplci5oIFwKICAg
ICBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBcCiAgICAgaW5zcGVjdG9yL0NvbnRlbnRTZWFy
Y2hVdGlscy5oIFwKKyAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmggXAogICAgIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuaCBcCiAgICAgaW5zcGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmgg
XAogICAgIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggNjI5NTYwOGZmNDA0ZTk2YjlhZGRlZmQ5ZjU1NGMxMWE3N2EwZDIwYi4uY2NhNDk2Nzg4ODY0
OThlOTBiMDczMDM4N2JmMGI3NDZkY2ZjMmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjczMCw2
ICsyNzMwLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaCcsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL0RPTUVkaXRvci5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9ET01FZGl0b3IuaCcs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0RPTVdyYXBwZXJWaXNpdG9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxNTkyOGI5MTJkMDg1ZmU2NTQxMGExOWY2NDE1YmZl
NzUxYmZiZGVmLi5jYzg2MTA1ODQyYjg4OGY5NDk3ZGM3N2Q0ZTQ5NmFmOTJiZTc0ZmY4IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzExMzAs
NiArNzExMzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXERPTUVkaXRvci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxET01FZGl0b3IuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXERP
TU5vZGVIaWdobGlnaHRlci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFhYzYwOTljZjcy
ODAyMWVmZjliZjMzZDk5ZmQyNjA4NTBiYWI4ZmQuLjE1NDkxNTcxNmY2MDFkZjk0ZTI2MWQ0MDA0
YjI4OGIzZDdmYTY1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NTIsNiArMTg1Miw4IEBACiAJCTdBQTUxQjZGMTQ4M0I2
MTYwMEFEMjc1MiAvKiBJbnNwZWN0b3JCYXNlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBNTFCNkQxNDgzQjYxNjAwQUQyNzUyIC8qIElu
c3BlY3RvckJhc2VBZ2VudC5jcHAgKi87IH07CiAJCTdBQTUxREQ1MTQ4NTA2QTkwMEFEMjc1MiAv
KiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUE1MUREMzE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwICovOyB9OwogCQk3QUE1MURENjE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBQTUxREQ0MTQ4NTA2QTkwMEFEMjc1MiAvKiBJbnNwZWN0b3JNZW1vcnlBZ2VudC5o
ICovOyB9OworCQk3QUFCQTI1OTE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQUJBMjU3MTRCQzYx
MzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovOyB9OworCQk3QUFCQTI1QTE0QkM2MTMzMDBB
QTlBMTEgLyogRE9NRWRpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUFCQTI1ODE0QkM2MTMzMDBBQTlBMTEgLyogRE9NRWRpdG9yLmggKi87IH07
CiAJCTdBQjBCMUMwMTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQjBCMUJF
MTIxMUE2MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCAqLzsgfTsKIAkJ
N0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQjBCMUJGMTIxMUE2
MjIwMEE3Njk0MCAvKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmggKi87IH07CiAJCTdBREU3MjI2
MTBDQkJCOUIwMDZCM0IzQSAvKiBDb250ZXh0TWVudVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0Eg
LyogQ29udGV4dE1lbnVQcm92aWRlci5oICovOyB9OwpAQCAtOTE2Miw2ICs5MTY0LDggQEAKIAkJ
N0FBNTFCNkQxNDgzQjYxNjAwQUQyNzUyIC8qIEluc3BlY3RvckJhc2VBZ2VudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCYXNlQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUE1MUREMzE0ODUwNkE5MDBBRDI3NTIgLyog
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QUE1MURENDE0ODUwNkE5MDBBRDI3NTIgLyogSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FBQkEyNTcxNEJDNjEzMzAwQUE5QTExIC8q
IERPTUVkaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01F
ZGl0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUFCQTI1ODE0QkM2MTMz
MDBBQTlBMTEgLyogRE9NRWRpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTUVkaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUIwQjFCRTEyMTFB
NjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QURF
NzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZXh0TWVudVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDU3Myw2ICsxNDU3Nyw4IEBACiAJCQkJNDFGMDYxOEMwRjVG
MDY5ODAwQTA3RUFDIC8qIENvbnNvbGVNZXNzYWdlLmggKi8sCiAJCQkJNTkxMDJGQjkxNDMyN0Qz
QjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hVdGlscy5jcHAgKi8sCiAJCQkJNTkxMDJGQkExNDMy
N0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hVdGlscy5oICovLAorCQkJCTdBQUJBMjU3MTRC
QzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovLAorCQkJCTdBQUJBMjU4MTRCQzYxMzMw
MEFBOUExMSAvKiBET01FZGl0b3IuaCAqLywKIAkJCQk0RjE0NDIyNjEzMzlGRDYyMDBFMEQ2Rjgg
LyogRE9NTm9kZUhpZ2hsaWdodGVyLmNwcCAqLywKIAkJCQk0RjE0NDIyNzEzMzlGRDYyMDBFMEQ2
RjggLyogRE9NTm9kZUhpZ2hsaWdodGVyLmggKi8sCiAJCQkJRjM1QUU1QUIxNDkyNUY1QjAwNEQ1
Nzc2IC8qIERPTVdyYXBwZXJWaXNpdG9yLmggKi8sCkBAIC0yNDg5Nyw2ICsyNDkwMyw3IEBACiAJ
CQkJRkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzRBODYyMzE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0QyQUQwNDE0QjgyM0E2MDA5M0RGMzIgLyogRE9NV2lu
ZG93UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBQUJBMjVBMTRCQzYxMzMwMEFBOUEx
MSAvKiBET01FZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjc4MDMsNiArMjc4MTAsNyBAQAog
CQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5NzRBODYyMjE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RDJBRDAzMTRCODIzQTYwMDkzREYzMiAvKiBE
T01XaW5kb3dQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUFCQTI1OTE0QkM2MTMz
MDBBQTlBMTEgLyogRE9NRWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjNiODVhNmQ3MWRiN2YyMDQzYzVjNTc1
ODA4NWFiZWQwOTQ2MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTUVkaXRvci5jcHAKQEAgLTAsMCArMSwyODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRE9NRWRpdG9yLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVk
ZSAiQmFzZTY0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgorI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGUuaCIK
KworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU0hBMS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01FZGl0
b3I6OkRPTUVkaXRvcihEb2N1bWVudCogZG9jdW1lbnQpIDogbV9kb2N1bWVudChkb2N1bWVudCkg
eyB9CisKK0RPTUVkaXRvcjo6fkRPTUVkaXRvcigpIHsgfQorCit2b2lkIERPTUVkaXRvcjo6cGF0
Y2goY29uc3QgU3RyaW5nJiBtYXJrdXApCit7CisgICAgUmVmUHRyPEhUTUxEb2N1bWVudD4gbmV3
RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIFJlZlB0cjxE
b2N1bWVudFBhcnNlcj4gcGFyc2VyID0gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUobmV3RG9j
dW1lbnQuZ2V0KCksIGZhbHNlKTsKKyAgICBwYXJzZXItPmluc2VydChtYXJrdXApOyAvLyBVc2Ug
aW5zZXJ0KCkgc28gdGhhdCB0aGUgcGFyc2VyIHdpbGwgbm90IHlpZWxkLgorICAgIHBhcnNlci0+
ZmluaXNoKCk7CisgICAgcGFyc2VyLT5kZXRhY2goKTsKKworICAgIGlmICghcGF0Y2hFbGVtZW50
KG1fZG9jdW1lbnQtPmhlYWQoKSwgbmV3RG9jdW1lbnQtPmhlYWQoKSkgfHwgIXBhdGNoRWxlbWVu
dChtX2RvY3VtZW50LT5ib2R5KCksIG5ld0RvY3VtZW50LT5ib2R5KCkpKSB7CisgICAgICAgIC8v
IEZhbGwgYmFjayB0byByZXdyaXRlLgorICAgICAgICBtX2RvY3VtZW50LT53cml0ZShtYXJrdXAp
OworICAgICAgICBtX2RvY3VtZW50LT5jbG9zZSgpOworICAgIH0KK30KKworRE9NRWRpdG9yOjpO
b2RlRGlnZXN0OjpOb2RlRGlnZXN0KE5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpIHsgfQorCiti
b29sIERPTUVkaXRvcjo6cGF0Y2hFbGVtZW50KEVsZW1lbnQqIG9sZEVsZW1lbnQsIEVsZW1lbnQq
IG5ld0VsZW1lbnQpCit7CisgICAgaWYgKG9sZEVsZW1lbnQpICB7CisgICAgICAgIGlmIChuZXdF
bGVtZW50KSB7CisgICAgICAgICAgICBPd25QdHI8Tm9kZURpZ2VzdD4gb0luZm8gPSBjcmVhdGVO
b2RlRGlnZXN0KG9sZEVsZW1lbnQpOworICAgICAgICAgICAgT3duUHRyPE5vZGVEaWdlc3Q+IG5J
bmZvID0gY3JlYXRlTm9kZURpZ2VzdChuZXdFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBw
YXRjaE5vZGUob0luZm8uZ2V0KCksIG5JbmZvLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICBv
bGRFbGVtZW50LT5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKG5ld0VsZW1lbnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9kb2N1bWVudC0+YWRvcHROb2RlKG5ld0Vs
ZW1lbnQsIGVjKTsKKyAgICAgICAgaWYgKCFlYykKKyAgICAgICAgICAgIG1fZG9jdW1lbnQtPmRv
Y3VtZW50RWxlbWVudCgpLT5hcHBlbmRDaGlsZChub2RlLCBlYyk7CisgICAgICAgIHJldHVybiAh
ZWM7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUVkaXRvcjo6cGF0Y2hO
b2RlKE5vZGVEaWdlc3QqIG9sZERpZ2VzdCwgTm9kZURpZ2VzdCogbmV3RGlnZXN0KQoreworICAg
IGlmIChvbGREaWdlc3QtPm1fZGlnZXN0ID09IG5ld0RpZ2VzdC0+bV9kaWdlc3QpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgTm9kZSogb2xkTm9kZSA9IG9sZERpZ2VzdC0+bV9ub2RlOwor
ICAgIE5vZGUqIG5ld05vZGUgPSBuZXdEaWdlc3QtPm1fbm9kZTsKKworICAgIGlmIChuZXdOb2Rl
LT5ub2RlVHlwZSgpICE9IG9sZE5vZGUtPm5vZGVUeXBlKCkgfHwgbmV3Tm9kZS0+bm9kZU5hbWUo
KSAhPSBvbGROb2RlLT5ub2RlTmFtZSgpKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgICAgICBvbGROb2RlLT5wYXJlbnROb2RlKCktPnJlcGxhY2VDaGlsZChuZXdOb2RlLCBv
bGROb2RlLCBlYyk7CisgICAgICAgIGlmIChlYykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgaWYgKG9sZE5vZGUtPm5vZGVWYWx1ZSgpICE9IG5ld05vZGUtPm5vZGVWYWx1ZSgpKQor
ICAgICAgICBvbGROb2RlLT5zZXROb2RlVmFsdWUobmV3Tm9kZS0+bm9kZVZhbHVlKCksIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChvbGROb2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRfTk9ERSAmJiBvbGREaWdlc3QtPm1fYXR0cnNEaWdl
c3QgIT0gbmV3RGlnZXN0LT5tX2F0dHJzRGlnZXN0KSB7CisgICAgICAgIEVsZW1lbnQqIG9sZEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ob2xkTm9kZSk7CisgICAgICAgIEVsZW1lbnQq
IG5ld0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obmV3Tm9kZSk7CisgICAgICAgIG9s
ZEVsZW1lbnQtPnNldEF0dHJpYnV0ZXNGcm9tRWxlbWVudCgqbmV3RWxlbWVudCk7CisgICAgfQor
ICAgIGlmIChvbGREaWdlc3QtPm1fbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05P
REUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIHBhdGNoQ2hpbGRyZW4oc3Rh
dGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KG9sZE5vZGUpLCBvbGREaWdlc3QtPm1fY2hpbGRyZW4s
IG5ld0RpZ2VzdC0+bV9jaGlsZHJlbik7Cit9CisKK2Jvb2wgRE9NRWRpdG9yOjpwYXRjaENoaWxk
cmVuKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCwgVmVjdG9yPE93blB0cjxOb2RlRGlnZXN0PiA+
JiBvbGRMaXN0LCBWZWN0b3I8T3duUHRyPE5vZGVEaWdlc3Q+ID4mIG5ld0xpc3QpCit7CisgICAg
Ly8gVHJpbSB0YWlsCisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgZm9yICg7IG9mZnNldCA8
IG9sZExpc3Quc2l6ZSgpICYmIG9mZnNldCA8IG5ld0xpc3Quc2l6ZSgpICYmIG9sZExpc3Rbb2xk
TGlzdC5zaXplKCkgLSBvZmZzZXQgLSAxXS0+bV9kaWdlc3QgPT0gbmV3TGlzdFtuZXdMaXN0LnNp
emUoKSAtIG9mZnNldCAtIDFdLT5tX2RpZ2VzdDsgKytvZmZzZXQpIHsgfQorICAgIGlmIChvZmZz
ZXQgPiAwKSB7CisgICAgICAgIG9sZExpc3QucmVzaXplKG9sZExpc3Quc2l6ZSgpIC0gb2Zmc2V0
KTsKKyAgICAgICAgbmV3TGlzdC5yZXNpemUobmV3TGlzdC5zaXplKCkgLSBvZmZzZXQpOworICAg
IH0KKworICAgIC8vIFRyaW0gaGVhZAorICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgb2xk
TGlzdC5zaXplKCkgJiYgb2Zmc2V0IDwgbmV3TGlzdC5zaXplKCkgJiYgb2xkTGlzdFtvZmZzZXRd
LT5tX2RpZ2VzdCA9PSBuZXdMaXN0W29mZnNldF0tPm1fZGlnZXN0OyArK29mZnNldCkgeyB9Cisg
ICAgaWYgKG9mZnNldCA+IDApIHsKKyAgICAgICAgb2xkTGlzdC5yZW1vdmUoMCwgb2Zmc2V0KTsK
KyAgICAgICAgbmV3TGlzdC5yZW1vdmUoMCwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICAvLyBEaWZm
IHRoZSBjaGlsZHJlbiBsaXN0cy4KKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8Tm9kZURp
Z2VzdCosIHNpemVfdD4gPiBSZXN1bHRNYXA7CisgICAgUmVzdWx0TWFwIG5ld01hcChuZXdMaXN0
LnNpemUoKSk7CisgICAgUmVzdWx0TWFwIG9sZE1hcChvbGRMaXN0LnNpemUoKSk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZE1hcC5zaXplKCk7ICsraSkKKyAgICAgICAgb2xkTWFw
W2ldLmZpcnN0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld01hcC5zaXplKCk7
ICsraSkKKyAgICAgICAgbmV3TWFwW2ldLmZpcnN0ID0gMDsKKworICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFZlY3RvcjxzaXplX3Q+ID4gRGlmZlRhYmxlOworICAgIERpZmZUYWJsZSBuZXdU
YWJsZTsKKyAgICBEaWZmVGFibGUgb2xkVGFibGU7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG5ld0xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRGlmZlRhYmxlOjppdGVyYXRvciBp
dCA9IG5ld1RhYmxlLmFkZChuZXdMaXN0W2ldLT5tX2RpZ2VzdCwgVmVjdG9yPHNpemVfdD4oKSku
Zmlyc3Q7CisgICAgICAgIGl0LT5zZWNvbmQuYXBwZW5kKGkpOworICAgIH0KKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2xkTGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBEaWZmVGFi
bGU6Oml0ZXJhdG9yIGl0ID0gb2xkVGFibGUuYWRkKG9sZExpc3RbaV0tPm1fZGlnZXN0LCBWZWN0
b3I8c2l6ZV90PigpKS5maXJzdDsKKyAgICAgICAgaXQtPnNlY29uZC5hcHBlbmQoaSk7CisgICAg
fQorCisgICAgZm9yIChEaWZmVGFibGU6Oml0ZXJhdG9yIG5pdCA9IG5ld1RhYmxlLmJlZ2luKCk7
IG5pdCAhPSBuZXdUYWJsZS5lbmQoKTsgKytuaXQpIHsKKyAgICAgICAgaWYgKG5pdC0+c2Vjb25k
LnNpemUoKSAhPSAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgRGlmZlRhYmxl
OjppdGVyYXRvciBvaXQgPSBvbGRUYWJsZS5maW5kKG5pdC0+Zmlyc3QpOworICAgICAgICBpZiAo
b2l0ID09IG9sZFRhYmxlLmVuZCgpIHx8IG9pdC0+c2Vjb25kLnNpemUoKSAhPSAxKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKG5ld0xpc3Rbbml0LT5zZWNv
bmRbMF1dLmdldCgpLCBvaXQtPnNlY29uZFswXSk7CisgICAgICAgIG5ld01hcFtuaXQtPnNlY29u
ZFswXV0gPSBzdGQ6Om1ha2VfcGFpcihuZXdMaXN0W25pdC0+c2Vjb25kWzBdXS5nZXQoKSwgb2l0
LT5zZWNvbmRbMF0pOworICAgICAgICBvbGRNYXBbb2l0LT5zZWNvbmRbMF1dID0gc3RkOjptYWtl
X3BhaXIob2xkTGlzdFtvaXQtPnNlY29uZFswXV0uZ2V0KCksIG5pdC0+c2Vjb25kWzBdKTsKKyAg
ICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgbmV3TGlzdC5zaXplKCkgPiAwICYmIGkgPCBu
ZXdMaXN0LnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBpZiAoIW5ld01hcFtpXS5maXJzdCB8
fCBuZXdNYXBbaSArIDFdLmZpcnN0KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
c2l6ZV90IGogPSBuZXdNYXBbaV0uc2Vjb25kICsgMTsKKyAgICAgICAgaWYgKGogPCBvbGRNYXAu
c2l6ZSgpICYmICFvbGRNYXBbal0uZmlyc3QgJiYgbmV3TGlzdFtpICsgMV0tPm1fZGlnZXN0ID09
IG9sZExpc3Rbal0tPm1fZGlnZXN0KSB7CisgICAgICAgICAgICBuZXdNYXBbaSArIDFdID0gc3Rk
OjptYWtlX3BhaXIobmV3TGlzdFtpICsgMV0uZ2V0KCksIGopOworICAgICAgICAgICAgb2xkTWFw
W2pdID0gc3RkOjptYWtlX3BhaXIob2xkTGlzdFtqXS5nZXQoKSwgaSArIDEpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IG5ld0xpc3Quc2l6ZSgpIC0gMTsgbmV3TGlz
dC5zaXplKCkgPiAwICYmIGkgPiAwOyAtLWkpIHsKKyAgICAgICAgaWYgKCFuZXdNYXBbaV0uZmly
c3QgfHwgbmV3TWFwW2kgLSAxXS5maXJzdCB8fCBuZXdNYXBbaV0uc2Vjb25kIDw9IDApCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaXplX3QgaiA9IG5ld01hcFtpXS5zZWNvbmQg
LSAxOworICAgICAgICBpZiAoIW9sZE1hcFtqXS5maXJzdCAmJiBuZXdMaXN0W2kgLSAxXS0+bV9k
aWdlc3QgPT0gb2xkTGlzdFtqXS0+bV9kaWdlc3QpIHsKKyAgICAgICAgICAgIG5ld01hcFtpIC0g
MV0gPSBzdGQ6Om1ha2VfcGFpcihuZXdMaXN0W2kgLSAxXS5nZXQoKSwgaik7CisgICAgICAgICAg
ICBvbGRNYXBbal0gPSBzdGQ6Om1ha2VfcGFpcihvbGRMaXN0W2pdLmdldCgpLCBpIC0gMSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBIYXNoU2V0PE5vZGVEaWdlc3QqPiBtZXJnZXM7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBvbGRMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChvbGRNYXBbaV0uZmlyc3QpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBD
aGVjayBpZiB0aGlzIGNoYW5nZSBpcyBiZXR3ZWVuIHN0YWJsZSBub2Rlcy4gSWYgaXQgaXMsIGNv
bnNpZGVyIGl0IGFzICJtb2RpZmllZCIuCisgICAgICAgIGlmICgoIWkgfHwgb2xkTWFwW2kgLSAx
XS5maXJzdCkgJiYgKGkgPT0gb2xkTWFwLnNpemUoKSAtIDEgfHwgb2xkTWFwW2kgKyAxXS5maXJz
dCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBhbmNob3JCZWZvcmUgPSBpID8gb2xkTWFwW2kgLSAx
XS5zZWNvbmQgOiAtMTsKKyAgICAgICAgICAgIHNpemVfdCBhbmNob3JBZnRlciA9IGkgPT0gb2xk
TWFwLnNpemUoKSAtIDEgPyBhbmNob3JCZWZvcmUgKyAyIDogb2xkTWFwW2kgKyAxXS5zZWNvbmQ7
CisgICAgICAgICAgICBpZiAoYW5jaG9yQWZ0ZXIgLSBhbmNob3JCZWZvcmUgPT0gMiAmJiBhbmNo
b3JCZWZvcmUgKyAxIDwgbmV3TGlzdC5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXBh
dGNoTm9kZShvbGRMaXN0W2ldLmdldCgpLCBuZXdMaXN0W2FuY2hvckJlZm9yZSArIDFdLmdldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
bWVyZ2VzLmFkZChuZXdMaXN0W2FuY2hvckJlZm9yZSArIDFdLmdldCgpKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIG9sZExpc3RbaV0tPm1fbm9kZS0+cGFyZW50Tm9kZSgp
LT5yZW1vdmVDaGlsZChvbGRMaXN0W2ldLT5tX25vZGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSA9IHN0YXRpY19jYXN0PENvbnRhaW5l
ck5vZGUqPihvbGRMaXN0W2ldLT5tX25vZGUtPnBhcmVudE5vZGUoKSk7CisgICAgICAgICAgICBw
YXJlbnROb2RlLT5yZW1vdmVDaGlsZChvbGRMaXN0W2ldLT5tX25vZGUpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdNYXAuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKG5ld01hcFtpXS5maXJzdCB8fCBtZXJnZXMuY29udGFpbnMobmV3TGlzdFtp
XS5nZXQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOb2RlKiBub2RlID0g
bmV3TGlzdFtpXS0+bV9ub2RlOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgUmVmUHRyPE5vZGU+IGFkb3B0ZWROb2RlID0gb2xkUGFyZW50LT5vd25lckRvY3VtZW50KCkt
PmFkb3B0Tm9kZShub2RlLCBlYyk7CisgICAgICAgIGlmICghZWMpCisgICAgICAgICAgICBvbGRQ
YXJlbnQtPmluc2VydEJlZm9yZShhZG9wdGVkTm9kZSwgb2xkUGFyZW50LT5jaGlsZE5vZGUoaSAr
IG9mZnNldCksIGVjKTsKKyAgICAgICAgcmV0dXJuICFlYzsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIENTdHJpbmcgY1N0cmluZyA9IHN0cmluZy51dGY4KCk7
CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjU3Ry
aW5nLmRhdGEoKSksIGNTdHJpbmcubGVuZ3RoKCkpOworfQorCitQYXNzT3duUHRyPERPTUVkaXRv
cjo6Tm9kZURpZ2VzdD4gRE9NRWRpdG9yOjpjcmVhdGVOb2RlRGlnZXN0KE5vZGUqIG5vZGUpCit7
CisgICAgTm9kZURpZ2VzdCogbm9kZURpZ2VzdCA9IG5ldyBOb2RlRGlnZXN0KG5vZGUpOworCisg
ICAgU0hBMSBzaGExOworCisgICAgTm9kZTo6Tm9kZVR5cGUgbm9kZVR5cGUgPSBub2RlLT5ub2Rl
VHlwZSgpOworICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oJm5vZGVUeXBlKSwgc2l6ZW9mKG5vZGVUeXBlKSk7CisgICAgYWRkU3RyaW5nVG9TSEExKHNo
YTEsIG5vZGUtPm5vZGVOYW1lKCkpOworICAgIGFkZFN0cmluZ1RvU0hBMShzaGExLCBub2RlLT5u
b2RlVmFsdWUoKSk7CisKKyAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5U
X05PREUpIHsKKyAgICAgICAgTm9kZSogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7CisgICAg
ICAgIHdoaWxlIChjaGlsZCkgeworICAgICAgICAgICAgT3duUHRyPE5vZGVEaWdlc3Q+IGNoaWxk
SW5mbyA9IGNyZWF0ZU5vZGVEaWdlc3QoY2hpbGQpOworICAgICAgICAgICAgYWRkU3RyaW5nVG9T
SEExKHNoYTEsIGNoaWxkSW5mby0+bV9kaWdlc3QpOworICAgICAgICAgICAgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIG5vZGVEaWdlc3QtPm1fY2hpbGRyZW4uYXBw
ZW5kKGNoaWxkSW5mby5yZWxlYXNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKKyAgICAgICAgY29uc3QgTmFt
ZWROb2RlTWFwKiBhdHRyTWFwID0gZWxlbWVudC0+YXR0cmlidXRlcyh0cnVlKTsKKyAgICAgICAg
aWYgKGF0dHJNYXAgJiYgYXR0ck1hcC0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IG51bUF0dHJzID0gYXR0ck1hcC0+bGVuZ3RoKCk7CisgICAgICAgICAgICBTSEExIGF0dHJzU0hB
MTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1BdHRyczsgKytpKSB7
CisgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyTWFwLT5h
dHRyaWJ1dGVJdGVtKGkpOworICAgICAgICAgICAgICAgIGFkZFN0cmluZ1RvU0hBMShhdHRyc1NI
QTEsIGF0dHJpYnV0ZS0+bmFtZSgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGFkZFN0
cmluZ1RvU0hBMShhdHRyc1NIQTEsIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBWZWN0b3I8dWludDhfdCwgMjA+IGF0dHJzSGFzaDsKKyAgICAgICAgICAg
IGF0dHJzU0hBMS5jb21wdXRlSGFzaChhdHRyc0hhc2gpOworICAgICAgICAgICAgbm9kZURpZ2Vz
dC0+bV9hdHRyc0RpZ2VzdCA9IGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihhdHRyc0hhc2guZGF0YSgpKSwgMTApOworICAgICAgICAgICAgYWRkU3RyaW5nVG9TSEEx
KHNoYTEsIG5vZGVEaWdlc3QtPm1fYXR0cnNEaWdlc3QpOworICAgICAgICB9CisgICAgfQorCisg
ICAgVmVjdG9yPHVpbnQ4X3QsIDIwPiBoYXNoOworICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7
CisgICAgbm9kZURpZ2VzdC0+bV9kaWdlc3QgPSBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oaGFzaC5kYXRhKCkpLCAxMCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5v
ZGVEaWdlc3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVk
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM1NDY0NmJhYzQyYTkxMGE5NDlkYjk0NDI4OTk0NGNmMWU4NTJjODUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmgKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRE9NRWRpdG9yX2gKKyNkZWZpbmUgRE9NRWRpdG9yX2gKKworI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBF
bGVtZW50OworY2xhc3MgTm9kZTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKK2NsYXNzIERP
TUVkaXRvciB7CitwdWJsaWM6CisgICAgRE9NRWRpdG9yKERvY3VtZW50Kik7CisgICAgdmlydHVh
bCB+RE9NRWRpdG9yKCk7CisKKyAgICB2b2lkIHBhdGNoKGNvbnN0IFN0cmluZyYgbWFya3VwKTsK
KworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgTm9kZURpZ2VzdCB7CisgICAgICAgIE5vZGVEaWdlc3Qo
Tm9kZSopOworICAgICAgICBTdHJpbmcgbV9kaWdlc3Q7CisgICAgICAgIFN0cmluZyBtX2F0dHJz
RGlnZXN0OworICAgICAgICBOb2RlKiBtX25vZGU7CisgICAgICAgIFZlY3RvcjxPd25QdHI8Tm9k
ZURpZ2VzdD4gPiBtX2NoaWxkcmVuOworICAgIH07CisKKyAgICBib29sIHBhdGNoRWxlbWVudChF
bGVtZW50KiBvbGRFbGVtZW50LCBFbGVtZW50KiBuZXdFbGVtZW50KTsKKyAgICBib29sIHBhdGNo
Tm9kZShOb2RlRGlnZXN0KiBvbGROb2RlLCBOb2RlRGlnZXN0KiBuZXdOb2RlKTsKKyAgICBib29s
IHBhdGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50LCBWZWN0b3I8T3duUHRyPE5v
ZGVEaWdlc3Q+ID4mIG9sZENoaWxkcmVuLCBWZWN0b3I8T3duUHRyPE5vZGVEaWdlc3Q+ID4mIG5l
d0NoaWxkcmVuKTsKKyAgICBQYXNzT3duUHRyPE5vZGVEaWdlc3Q+IGNyZWF0ZU5vZGVEaWdlc3Qo
Tm9kZSopOworCisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cit9OworCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRl
ZmluZWQoRE9NRWRpdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCAyZjk1YzIzMjc4YTk1MjliYjQ2NWJiYmY1YWJkYWQxYWYxMDM3
ODA0Li5kNGQxMTUzZjY0YjQyN2Q3YjE1M2U3NTBlNWU0NjIyYTdjNmUwMjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTQ3LDYgKzQ3
LDcgQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAj
aW5jbHVkZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiRE9NRWRpdG9yLmgiCiAjaW5jbHVkZSAi
RE9NTm9kZUhpZ2hsaWdodGVyLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKQEAgLTYzMiwxMyArNjMzLDIyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFdURjo6
CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MLCBpbnQqIG5ld0lk
KQogeworICAgIGlmICghbm9kZUlkKSB7CisgICAgICAgIERPTUVkaXRvciBkb21FZGl0b3IobV9k
b2N1bWVudC5nZXQoKSk7CisgICAgICAgIGRvbUVkaXRvci5wYXRjaChvdXRlckhUTUwpOworICAg
ICAgICAqbmV3SWQgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTm9kZSogbm9k
ZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gbm9kZS0+cGFyZW50
RWxlbWVudCgpOwotICAgIGlmICghcGFyZW50RWxlbWVudCkKKyAgICBOb2RlKiBwYXJlbnROb2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIGlmICghcGFyZW50Tm9kZSkgeworICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiRWRpdGluZyBkZXRhY2hlZCBub2RlcyBpcyBub3Qgc3VwcG9ydGVkIjsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5vZGUt
Pm93bmVyRG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7
CkBAIC02NDksMTAgKzY1OSwxMCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhU
TUwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgIE5vZGUq
IHByZXZpb3VzU2libGluZyA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOyAvLyBSZW1lbWJlciBw
cmV2aW91cyBzaWJsaW5nIGJlZm9yZSByZXBsYWNpbmcgbm9kZS4KIAogICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7Ci0gICAgZnJhZ21lbnQtPnBhcnNlSFRNTChvdXRlckhUTUwsIHBhcmVudEVsZW1lbnQpOwor
ICAgIGZyYWdtZW50LT5wYXJzZUhUTUwob3V0ZXJIVE1MLCBwYXJlbnROb2RlLT5ub2RlVHlwZSgp
ID09IE5vZGU6OkVMRU1FTlRfTk9ERSA/IHN0YXRpY19jYXN0PEVsZW1lbnQqPihwYXJlbnROb2Rl
KSA6IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBwYXJlbnRFbGVtZW50LT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQucmVsZWFzZSgp
LCBub2RlLCBlYyk7CisgICAgcGFyZW50Tm9kZS0+cmVwbGFjZUNoaWxkKGZyYWdtZW50LnJlbGVh
c2UoKSwgbm9kZSwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
RmFpbGVkIHRvIHJlcGxhY2UgTm9kZSB3aXRoIG5ldyBjb250ZW50cyI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY3MCw3ICs2ODAsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhU
TUwoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgTm9kZSogbmV3Tm9kZSA9IHByZXZpb3VzU2libGluZyA/IHBy
ZXZpb3VzU2libGluZy0+bmV4dFNpYmxpbmcoKSA6IHBhcmVudEVsZW1lbnQtPmZpcnN0Q2hpbGQo
KTsKKyAgICBOb2RlKiBuZXdOb2RlID0gcHJldmlvdXNTaWJsaW5nID8gcHJldmlvdXNTaWJsaW5n
LT5uZXh0U2libGluZygpIDogcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOwogICAgIGlmICghbmV3
Tm9kZSkgewogICAgICAgICAvLyBUaGUgb25seSBjaGlsZCBub2RlIGhhcyBiZWVuIGRlbGV0ZWQu
CiAgICAgICAgICpuZXdJZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01BZ2VudC5qcwppbmRleCA2ZWU5NDIzMTY1NzFkMTk2ZjkzOTM4MDQ1Mjc3M2I2NGY3
MGI3OTkwLi5kZmQ0ODZjYTczNzVmZDM5OTY1MTIyZjExZDViOGFmZTQ2NWFmNmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTUyOSw2
ICs1MjksOCBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQgPSBmdW5jdGlvbigpIHsKICAgICB0aGlz
Ll9kb2N1bWVudCA9IG51bGw7CiAgICAgdGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHMgPSB7fTsK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRE9NRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVj
dG9yLkRPTURpc3BhdGNoZXIodGhpcykpOworICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJpbWVu
dHNTZXR0aW5ncy5mcmVlRmxvd0RPTUVkaXRpbmcuaXNFbmFibGVkKCkpCisgICAgICAgIG5ldyBX
ZWJJbnNwZWN0b3IuRE9NTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5ET01BZ2VudC5FdmVudHMgPSB7CkBAIC0xMDc0LDMgKzEwNzYsMjcgQEAgV2ViSW5zcGVj
dG9yLkRPTURpc3BhdGNoZXIucHJvdG90eXBlID0gewogICogQHR5cGUgez9XZWJJbnNwZWN0b3Iu
RE9NQWdlbnR9CiAgKi8KIFdlYkluc3BlY3Rvci5kb21BZ2VudCA9IG51bGw7CisKKy8qKgorICog
QGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlJlc291cmNlRG9tYWlu
TW9kZWxCaW5kaW5nfQorICovCitXZWJJbnNwZWN0b3IuRE9NTW9kZWxSZXNvdXJjZUJpbmRpbmcg
PSBmdW5jdGlvbihkb21BZ2VudCkKK3sKKyAgICB0aGlzLl9kb21BZ2VudCA9IGRvbUFnZW50Owor
ICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5yZWdpc3RlckRvbWFpbk1vZGVsQmluZGluZyhXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwgdGhpcyk7Cit9CisKK1dlYkluc3BlY3Rv
ci5ET01Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CisgICAgc2V0Q29udGVudDog
ZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCisg
ICAgeworICAgICAgICBET01BZ2VudC5zZXRPdXRlckhUTUwoMCwgY29udGVudCwgdXNlckNhbGxi
YWNrKTsKKyAgICB9LAorCisgICAgY2FuU2V0Q29udGVudDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRE9NTW9kZWxSZXNv
dXJjZUJpbmRpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZURv
bWFpbk1vZGVsQmluZGluZy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCAxOTBlNTQzZGE1ZWI0MDVjMTA1ZjkzZDMzNTJm
M2ExZGQ4MmU0OTI2Li44MTgwNTE4MWY3YzIzMjZmZTU0MWExMzVlNDUwZTY4MTg3OTQxMGFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAg
LTE2OSw2ICsxNjksNyBAQCBXZWJJbnNwZWN0b3IuRXhwZXJpbWVudHNTZXR0aW5ncyA9IGZ1bmN0
aW9uKCkKICAgICAvLyBGSVhNRTogTW92ZSBvdXQgZnJvbSBleHBlcmltZW50cyBvbmNlIG5hdmln
YXRvciBpcyBwcm9kdWN0aW9uLXJlYWR5LgogICAgIHRoaXMudXNlU2NyaXB0c05hdmlnYXRvciA9
IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInVzZVNjcmlwdHNOYXZpZ2F0b3IiLCAiVXNlIGZpbGUg
bmF2aWdhdG9yIGFuZCB0YWJiZWQgZWRpdG9yIGNvbnRhaW5lciBpbiBzY3JpcHRzIHBhbmVsIik7
CiAgICAgdGhpcy5zb3VyY2VGcmFtZUFsd2F5c0VkaXRhYmxlID0gdGhpcy5fY3JlYXRlRXhwZXJp
bWVudCgic291cmNlRnJhbWVBbHdheXNFZGl0YWJsZSIsICJNYWtlIHJlc291cmNlcyBhbHdheXMg
ZWRpdGFibGUiKTsKKyAgICB0aGlzLmZyZWVGbG93RE9NRWRpdGluZyA9IHRoaXMuX2NyZWF0ZUV4
cGVyaW1lbnQoImZyZWVGbG93RE9NRWRpdGluZyIsICJFbmFibGUgZnJlZSBmbG93IERPTSBlZGl0
aW5nIik7CiAKICAgICB0aGlzLl9jbGVhblVwU2V0dGluZygpOwogfQo=
</data>
<flag name="review"
          id="122457"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>