<?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>33016</bug_id>
          
          <creation_ts>2009-12-29 05:10:34 -0800</creation_ts>
          <short_desc>[V8] Use script state of the current isolated world when creating ScriptCallStack</short_desc>
          <delta_ts>2009-12-30 04:40: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 (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>
          
          <blocked>32554</blocked>
    
    <blocked>33047</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>pfeldman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175507</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 05:10:34 -0800</bug_when>
    <thetext>Currently ScriptCallStack is created based on current Frame&apos;s main world context. This is wrong since current context maybe one from isolated world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175516</commentid>
    <comment_count>1</comment_count>
      <attachid>45594</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 05:34:58 -0800</bug_when>
    <thetext>Created attachment 45594
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175518</commentid>
    <comment_count>2</comment_count>
      <attachid>45595</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 05:39:02 -0800</bug_when>
    <thetext>Created attachment 45595
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175519</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 05:45:20 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45595 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175581</commentid>
    <comment_count>4</comment_count>
      <attachid>45595</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-29 09:04:01 -0800</bug_when>
    <thetext>Comment on attachment 45595
patch

I like the premise of the patch. I don&apos;t like that we&apos;re adding extra methods to already humongous V8Proxy and V8IsolatedWorld. ScriptState is supposed to be a thin wrapper, and I certainly don&apos;t want us to carry it around in either of these instances. 

Can you rework it perhaps to just add static create methods to ScriptState, and put world-aware logic there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175592</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 09:21:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 45595 [details])
&gt; I like the premise of the patch. I don&apos;t like that we&apos;re adding extra methods
&gt; to already humongous V8Proxy and V8IsolatedWorld. ScriptState is supposed to be
&gt; a thin wrapper, and I certainly don&apos;t want us to carry it around in either of
&gt; these instances. 
&gt; 
&gt; Can you rework it perhaps to just add static create methods to ScriptState, and
&gt; put world-aware logic there?
ScriptState unlike other Script* objetcs is not a value type. I don&apos;t want to manage ScriptState life time and my point was to cache pointer to ScriptState on the objects that can be casted to ScriptState* This way the ScriptState instance would live as long as the original object stays alive. Otherwise if one needed to store a pointer to ScriptState from the call stack he would have to make a copy of the ScriptCallStack.state() since the original ScriptState object would be destroyed along with stack allocated ScriptCallStack object. I guess original ScriptState design assumes that clients should be able to keep pointer to ScriptState instance while original context exists. Please correct me if I&apos;m wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175661</commentid>
    <comment_count>6</comment_count>
      <attachid>45617</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 11:42:52 -0800</bug_when>
    <thetext>Created attachment 45617
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175663</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-29 11:44:00 -0800</bug_when>
    <thetext>Does this change have an observable change in behavior?  If so, we&apos;ll need a
test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175664</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 11:45:18 -0800</bug_when>
    <thetext>Attachment 45617 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/ScriptCallStack.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175666</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 11:47:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Does this change have an observable change in behavior?  If so, we&apos;ll need a
&gt; test.

With current implementation of InspectorController the change should not affect observable behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175671</commentid>
    <comment_count>10</comment_count>
      <attachid>45618</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-29 11:49:53 -0800</bug_when>
    <thetext>Created attachment 45618
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175672</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-29 11:50:55 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45618 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175680</commentid>
    <comment_count>12</comment_count>
      <attachid>45618</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-29 12:12:03 -0800</bug_when>
    <thetext>Comment on attachment 45618
patch

r=me.

Please file a bug regarding the new role of ScriptState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175865</commentid>
    <comment_count>13</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-30 03:35:09 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Please file a bug regarding the new role of ScriptState.

Done: https://bugs.webkit.org/show_bug.cgi?id=33047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175875</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-12-30 04:40:49 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/bindings/v8/ScriptCallStack.cpp
	M	WebCore/bindings/v8/ScriptCallStack.h
	M	WebCore/bindings/v8/ScriptController.cpp
	M	WebCore/bindings/v8/ScriptController.h
	M	WebCore/bindings/v8/V8IsolatedWorld.cpp
	M	WebCore/bindings/v8/V8IsolatedWorld.h
Committed r52653</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45594</attachid>
            <date>2009-12-29 05:34:58 -0800</date>
            <delta_ts>2009-12-29 05:39:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scriptcallstack-state.patch</filename>
            <type>text/plain</type>
            <size>38547</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDI1OGJiMS4uM2VhNDA5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMi0yOSAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbdjhdIFVzZSBjdXJyZW50IGlzb2xhdGVkIHdvcmxkJ3MgY29u
dGV4dCBmb3IgU2NyaXB0Q2FsbFN0YWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAxNgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0
Q2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6bWFpbldvcmxkU2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOElzb2xhdGVkV29ybGQ6OnNj
cmlwdFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJv
eHk6OmN1cnJlbnRTY3JpcHRTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5o
OgorCiAyMDA5LTEyLTI4ICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5jcHAKaW5kZXggZDliMmZjZi4uNDI1MjNjOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNyBAQCBTY3JpcHRDYWxsU3RhY2sq
IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywg
dW5zaWduZQogCiBTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJpbmcgc291
cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpCiAgICAgOiBtX2xhc3RDYWxsZXIoU3RyaW5n
KCksIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50
Q291bnQpCi0gICAgLCBtX3NjcmlwdFN0YXRlKG5ldyBTY3JpcHRTdGF0ZShWOFByb3h5OjpyZXRy
aWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQoKSkpCisgICAgLCBtX3NjcmlwdFN0YXRlKFY4UHJv
eHk6OmN1cnJlbnRTY3JpcHRTdGF0ZSgpKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
YWxsU3RhY2suaAppbmRleCBmNmE3ZTM5Li5hYTA0MzYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgdjggewogICAgIGNsYXNzIEFy
Z3VtZW50czsKQEAgLTUyLDEzICs1MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgcmV0cmlldmluZyBhbmQgc3RvcmluZyBjYWxsIHN0YWNrIHRy
YWNlCiAgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiAxOyB9CiAKLSAgICAg
ICAgU2NyaXB0U3RhdGUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZS5nZXQo
KTsgfQorICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dFN0YXRlOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBTY3JpcHRDYWxsU3RhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCwgU3Ry
aW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyKTsKICAgICAKICAgICAgICAgU2Ny
aXB0Q2FsbEZyYW1lIG1fbGFzdENhbGxlcjsKLSAgICAgICAgT3duUHRyPFNjcmlwdFN0YXRlPiBt
X3NjcmlwdFN0YXRlOworICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBkYTIwOTM5Li4yYzgzYWVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM2NCw4ICszNjQsMTAgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpnZXRBbGxXb3JsZHMoVmVjdG9yPERPTVdyYXBwZXJXb3JsZCo+JiB3b3JsZHMpCiAK
IFNjcmlwdFN0YXRlKiBTY3JpcHRDb250cm9sbGVyOjptYWluV29ybGRTY3JpcHRTdGF0ZSgpCiB7
Ci0gICAgaWYgKCFtX21haW5Xb3JsZFNjcmlwdFN0YXRlKQorICAgIGlmICghbV9tYWluV29ybGRT
Y3JpcHRTdGF0ZSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAg
ICAgIG1fbWFpbldvcmxkU2NyaXB0U3RhdGUuc2V0KG5ldyBTY3JpcHRTdGF0ZShtX2ZyYW1lLCBW
OFByb3h5OjptYWluV29ybGRDb250ZXh0KG1fZnJhbWUpKSk7CisgICAgfQogICAgIHJldHVybiBt
X21haW5Xb3JsZFNjcmlwdFN0YXRlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmpl
Y3QuaAppbmRleCA2MzBkM2I5Li5hNjBmMmE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdE9iamVjdC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0T2JqZWN0
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IH5TY3JpcHRPYmplY3QoKSB7fQogCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB2OE9i
amVjdCgpIGNvbnN0OworICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAKICAgICAgICAgYm9vbCBzZXQoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFZhbHVlLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFZhbHVlLmgKaW5kZXgg
YzBiYThkNS4uNmE3MGJkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRW
YWx1ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0VmFsdWUuaApAQCAtNDQsMTEg
KzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRWYWx1ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFNjcmlwdFZhbHVlIHF1YXJhbnRpbmVWYWx1ZShTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdFZhbHVlJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB2YWx1ZTsKLSAgICB9Ci0KICAgICBTY3JpcHRWYWx1ZSgpIHt9CiAKICAgICBTY3JpcHRW
YWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElz
b2xhdGVkV29ybGQuY3BwCmluZGV4IGNiNjUwOTcuLmRlMTI5MmQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SXNvbGF0ZWRXb3JsZC5jcHAKQEAgLTkxLDQgKzkxLDE0IEBAIFY4SXNvbGF0ZWRXb3Js
ZDo6flY4SXNvbGF0ZWRXb3JsZCgpCiAgICAgbV9jb250ZXh0LT5kaXNwb3NlSGFuZGxlKCk7CiB9
CiAKK1NjcmlwdFN0YXRlKiBWOElzb2xhdGVkV29ybGQ6OnNjcmlwdFN0YXRlKCkKK3sKKyAgICBp
ZiAoIW1fc2NyaXB0U3RhdGUpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gbV9jb250ZXh0LmdldCgpLT5n
ZXQoKTsKKyAgICAgICAgbV9zY3JpcHRTdGF0ZS5zZXQobmV3IFNjcmlwdFN0YXRlKFY4UHJveHk6
OnJldHJpZXZlRnJhbWUoY29udGV4dCksIGNvbnRleHQpKTsKKyAgICB9CisgICAgcmV0dXJuIG1f
c2NyaXB0U3RhdGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmggYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SXNvbGF0ZWRXb3JsZC5oCmluZGV4IDYzMTNkYTguLmIwNzVhMWIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuaApAQCAtOTUsNiArOTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgRE9NRGF0YVN0b3JlKiBnZXRET01EYXRhU3RvcmUoKSBjb25z
dCB7IHJldHVybiBtX2RvbURhdGFTdG9yZS5nZXRTdG9yZSgpOyB9CiAKKyAgICAgICAgU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRHbG9iYWxPYmplY3Qodjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY29udGV4dCkKICAgICAgICAgewpAQCAtMTE0LDYgKzExNiw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gbWFuYWdlIHRoZWlyIGxpZmV0aW1lLgogICAgICAgICBET01EYXRh
U3RvcmVIYW5kbGUgbV9kb21EYXRhU3RvcmU7CiAKKyAgICAgICAgT3duUHRyPFNjcmlwdFN0YXRl
PiBtX3NjcmlwdFN0YXRlOworCiAgICAgICAgIHN0YXRpYyBpbnQgaXNvbGF0ZWRXb3JsZENvdW50
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IGM3OTM0NjkuLmU3NTQxMGQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtMTEyNiw2ICsxMTI2LDE1IEBAIHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dCgpCiAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQpOwogfQogCitTY3JpcHRTdGF0ZSog
VjhQcm94eTo6Y3VycmVudFNjcmlwdFN0YXRlKCkKK3sKKyAgICBpZiAoVjhJc29sYXRlZFdvcmxk
KiB3b3JsZCA9IFY4SXNvbGF0ZWRXb3JsZDo6Z2V0RW50ZXJlZCgpKQorICAgICAgICByZXR1cm4g
d29ybGQtPnNjcmlwdFN0YXRlKCk7CisgICAgRnJhbWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZUZv
ckN1cnJlbnRDb250ZXh0KCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICByZXR1cm4gZnJhbWUt
PnNjcmlwdCgpLT5tYWluV29ybGRTY3JpcHRTdGF0ZSgpOworfQorCiB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoRnJhbWUqIGZyYW1lKQogewogICAgIFY4
UHJveHkqIHByb3h5ID0gcmV0cmlldmUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCBk
ZDE1N2ZhLi45Njc4MWIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
aAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtNTYsNiArNTYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTVkdFbGVtZW50
OwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgY2xhc3MgU2NyaXB0U3Rh
dGU7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFY4RXZlbnRMaXN0ZW5lcjsKICAgICBj
bGFzcyBWOElzb2xhdGVkV29ybGQ7CkBAIC0zMDMsNiArMzA0LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBtYWluV29ybGRDb250
ZXh0KEZyYW1lKik7CiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGN1cnJl
bnRDb250ZXh0KCk7CiAKKyAgICAgICAgLy8gUmV0dXJucyBTY3JpcHRTdGF0ZSBmb3IgY3VycmVu
dCBjb250ZXh0LgorICAgICAgICBzdGF0aWMgU2NyaXB0U3RhdGUqIGN1cnJlbnRTY3JpcHRTdGF0
ZSgpOworCiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbnRleHQgY2F1c2VzIG91dCBvZiBt
ZW1vcnksIEphdmFTY3JpcHQgc2V0dGluZwogICAgICAgICAvLyBpcyBkaXNhYmxlZCBhbmQgaXQg
cmV0dXJucyB0cnVlLgogICAgICAgICBzdGF0aWMgYm9vbCBoYW5kbGVPdXRPZk1lbW9yeSgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCmluZGV4IDM2YzMyYzguLjg4MGE0YjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAKQEAgLTM5LDI5ICszOSw5NiBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCisKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbUJp
bmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRXaW5k
b3dDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygi
SW5qZWN0ZWRTY3JpcHRIb3N0Lmluc3BlY3RlZFdpbmRvdygpIik7CituYW1lc3BhY2UgewogCi0g
ICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9OYXRp
dmVPYmplY3Q8SW5qZWN0ZWRTY3JpcHRIb3N0PihWOENsYXNzSW5kZXg6OklOSkVDVEVEU0NSSVBU
SE9TVCwgYXJncy5Ib2xkZXIoKSk7Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBob3N0
LT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWYgKCFpYykKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVj
dDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBpYy0+aW5zcGVjdGVkUGFnZSgp
LT5tYWluRnJhbWUoKS0+ZG9tV2luZG93KCkpOwordGVtcGxhdGUgPGNsYXNzIFQ+Cit2b2lkIFdl
YWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IG9iamVjdCwgdm9p
ZCogcGFyYW1ldGVyKSB7CisgIFQqIG5hdGl2ZU9iamVjdCA9IHN0YXRpY19jYXN0PFQqPihwYXJh
bWV0ZXIpOworICBuYXRpdmVPYmplY3QtPmRlcmVmKCk7CisgIG9iamVjdC5EaXNwb3NlKCk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6d3JhcENhbGxi
YWNrQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKKy8vIHN0YXRpYwordjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGNyZWF0ZUluamVjdGVkU2NyaXB0SG9zdFY4V3JhcHBlcihJbmplY3Rl
ZFNjcmlwdEhvc3QqIGhvc3QpIHsKKyAgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIGRlc2Ny
aXB0b3JUeXBlID0gVjhDbGFzc0luZGV4OjpJTkpFQ1RFRFNDUklQVEhPU1Q7CisgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IFY4RE9NV3JhcHBlcjo6Z2V0VGVtcGxhdGUoZGVz
Y3JpcHRvclR5cGUpLT5HZXRGdW5jdGlvbigpOworICBpZiAoZnVuY3Rpb24uSXNFbXB0eSgpKSB7
CisgICAgICAvLyBSZXR1cm4gaWYgYWxsb2NhdGlvbiBmYWlsZWQuCisgICAgICByZXR1cm4gdjg6
OkxvY2FsPHY4OjpPYmplY3Q+KCk7CisgIH0KKyAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3Rh
bmNlID0gU2FmZUFsbG9jYXRpb246Om5ld0luc3RhbmNlKGZ1bmN0aW9uKTsKKyAgaWYgKGluc3Rh
bmNlLklzRW1wdHkoKSkgeworICAgICAgLy8gQXZvaWQgc2V0dGluZyB0aGUgd3JhcHBlciBpZiBh
bGxvY2F0aW9uIGZhaWxlZC4KKyAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
KyAgfQorICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoaW5zdGFuY2UsIFY4Q2xhc3NJbmRl
eDo6VG9JbnQoZGVzY3JpcHRvclR5cGUpLCBob3N0KTsKKyAgLy8gQ3JlYXRlIGEgd2VhayByZWZl
cmVuY2UgdG8gdGhlIHY4IHdyYXBwZXIgb2YgSW5zcGVjdG9yQmFja2VuZCB0byBkZXJlZgorICAv
LyBJbnNwZWN0b3JCYWNrZW5kIHdoZW4gdGhlIHdyYXBwZXIgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQu
CisgIGhvc3QtPnJlZigpOworICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3ZWFrSGFuZGxl
ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhpbnN0YW5jZSk7CisgIHdlYWtIYW5k
bGUuTWFrZVdlYWsoaG9zdCwgJldlYWtSZWZlcmVuY2VDYWxsYmFjazxJbmplY3RlZFNjcmlwdEhv
c3Q+KTsKKyAgcmV0dXJuIGluc3RhbmNlOworfQorCisvLyBzdGF0aWMKK1NjcmlwdE9iamVjdCBj
cmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgSW5qZWN0ZWRT
Y3JpcHRIb3N0KiBpbmplY3RlZFNjcmlwdEhvc3QsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
bG9uZyBpZCkKIHsKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC53cmFwQ2FsbGJh
Y2soKSIpOwotICAgIHJldHVybiBhcmdzWzBdOworICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
KworICAgIC8vIENyZWF0ZSB1dGlsaXR5IGNvbnRleHQuIEF0IHRoZSBtb21lbnQgd2UgaW5qZWN0
IHRoZSBzY3JpcHQgZGlyZWN0bHkgaW50byB0aGUgaW5zcGVjdGVkIGNvbnRleHQuCisgICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gdXRpbGl0eUNvbnRleHQgPSBzY3JpcHRTdGF0ZS0+Y29udGV4
dCgpOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodXRpbGl0eUNvbnRleHQp
OworCisgICAgLy8gQ2FsbCBjdXN0b20gY29kZSB0byBjcmVhdGUgaW5zcGVjdG9yIGJhY2tlbmQg
d3JhcHBlciBpbiB0aGUgdXRpbGl0eSBjb250ZXh0CisgICAgLy8gaW5zdGVhZCBvZiBjYWxsaW5n
IFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QgdGhhdCB3b3VsZCBjcmVhdGUgdGhlCisg
ICAgLy8gd3JhcHBlciBpbiB0aGUgUGFnZSBtYWluIGZyYW1lIGNvbnRleHQuCisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBzY3JpcHRIb3N0V3JhcHBlciA9IGNyZWF0ZUluamVjdGVkU2NyaXB0
SG9zdFY4V3JhcHBlcihpbmplY3RlZFNjcmlwdEhvc3QpOworICAgIGlmIChzY3JpcHRIb3N0V3Jh
cHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKworICAgIC8v
IEdpdmUgdGhlIGNvZGUgcnVubmluZyBpbiB0aGUgdXRpbGl0eSBjb250ZXh0IGFjY2VzcyB0byB0
aGUgaW5zcGVjdGVkIHdpbmRvdy4KKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd0ds
b2JhbCA9IHV0aWxpdHlDb250ZXh0LT5HbG9iYWwoKTsKKworICAgIC8vIEluamVjdCBqYXZhc2Ny
aXB0IGludG8gdGhlIGNvbnRleHQuCisgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgIHY4
OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmlu
ZyhzY3JpcHRTb3VyY2UpKTsKKyAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpIHsKKyAgICAg
ICAgU3RyaW5nIGV4Y2VwdGlvbiA9IFdlYkNvcmU6OnRvV2ViQ29yZVN0cmluZyh0cnlDYXRjaC5N
ZXNzYWdlKCktPkdldCgpKTsKKyAgICAgICAgaW50IGwgPSBleGNlcHRpb24ubGVuZ3RoKCk7Cisg
ICAgICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKKyAgICB9CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHYgPSBzY3JpcHQtPlJ1bigpOworICAgIGlmICh0cnlDYXRjaC5IYXNDYXVnaHQoKSkg
eworICAgICAgICBTdHJpbmcgZXhjZXB0aW9uID0gV2ViQ29yZTo6dG9XZWJDb3JlU3RyaW5nKHRy
eUNhdGNoLk1lc3NhZ2UoKS0+R2V0KCkpOworICAgICAgICBpbnQgbCA9IGV4Y2VwdGlvbi5sZW5n
dGgoKTsKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOworICAgIH0KKyAgICBpZiAodi5J
c0VtcHR5KCkgfHwgIXYtPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVj
dCgpOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3NbXSA9IHsKKyAgICAgIHNjcmlw
dEhvc3RXcmFwcGVyLAorICAgICAgd2luZG93R2xvYmFsLAorICAgICAgdjg6Ok51bWJlcjo6TmV3
KGlkKQorICAgIH07CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGluamVjdGVkU2NyaXB0VmFs
dWUgPSB2ODo6RnVuY3Rpb246OkNhc3QoKnYpLT5DYWxsKHdpbmRvd0dsb2JhbCwgMywgYXJncyk7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluamVjdGVkU2NyaXB0KHY4OjpPYmplY3Q6OkNh
c3QoKmluamVjdGVkU2NyaXB0VmFsdWUpKTsKKyAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlw
dFN0YXRlLCBpbmplY3RlZFNjcmlwdCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlCisKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0
SG9zdC5ub2RlRm9ySWQoKSIpOwpAQCAtODEsMjYgKzE0OCw2IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUZvcklkQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50CiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFz
c0luZGV4OjpOT0RFLCBub2RlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0
ZWRTY3JpcHRIb3N0Ojp3cmFwT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKLXsKLSAgICBJTkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC53cmFwT2JqZWN0KCkiKTsK
LSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Ci0KLSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxJbmplY3RlZFNjcmlwdEhvc3Q+KFY4Q2xhc3NJbmRleDo6SU5KRUNU
RURTQ1JJUFRIT1NULCBhcmdzLkhvbGRlcigpKTsKLSAgICByZXR1cm4gaG9zdC0+d3JhcE9iamVj
dChTY3JpcHRWYWx1ZShhcmdzWzBdKSwgdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhhcmdz
WzFdKSkudjhWYWx1ZSgpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNj
cmlwdEhvc3Q6OnVud3JhcE9iamVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Ci17Ci0gICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QudW53cmFwT2JqZWN0KCkiKTsK
LSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7Ci0KLSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOERPTVdyYXBwZXI6OmNvbnZl
cnRUb05hdGl2ZU9iamVjdDxJbmplY3RlZFNjcmlwdEhvc3Q+KFY4Q2xhc3NJbmRleDo6SU5KRUNU
RURTQ1JJUFRIT1NULCBhcmdzLkhvbGRlcigpKTsKLSAgICByZXR1cm4gaG9zdC0+dW53cmFwT2Jq
ZWN0KHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2soYXJnc1swXSkpLnY4VmFsdWUoKTsKLX0K
LQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpwdXNoTm9kZVBh
dGhUb0Zyb250ZW5kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJ
TkNfU1RBVFMoIkluamVjdGVkU2NyaXB0SG9zdC5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKCkiKTsK
QEAgLTE2Miw0ICsyMDksMjkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpzZWxlY3RET01TdG9yYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkEKIH0KICNlbmRpZgog
CitTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbmplY3RlZFNjcmlwdEZvcihTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBzY3JpcHRTdGF0ZS0+Y29u
dGV4dCgpOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7CisK
KyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwor
ICAgIC8vIFNraXAgcHJveHkgb2JqZWN0LiBUaGUgcHJveHkgb2JqZWN0IHdpbGwgc3Vydml2ZSBw
YWdlIG5hdmlnYXRpb24gd2hpbGUgd2UgbmVlZAorICAgIC8vIGFuIG9iamVjdCB3aG9zZSBsaWZl
dGltZSBjb25zaWRlcyB3aXRoIHRoYXQgb2YgdGhlIGluc3BlY3RlZCBjb250ZXh0LgorICAgIGds
b2JhbCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwtPkdldFByb3RvdHlwZSgp
KTsKKyAgICAKKyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGtleSA9IHY4OjpTdHJpbmc6Ok5l
dygiRGV2dG9vbHNfSW5qZWN0ZWRTY3JpcHQiKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWwgPSBnbG9iYWwtPkdldEhpZGRlblZhbHVlKGtleSk7CisgICAgaWYgKCF2YWwuSXNFbXB0eSgp
ICYmIHZhbC0+SXNPYmplY3QoKSkgeworICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KHNjcmlw
dFN0YXRlLCB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QodmFsKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgQVNTRVJUKCFtX2luamVjdGVkU2NyaXB0U291cmNlLmlzRW1wdHkoKSk7CisgICAg
ICAgIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGNyZWF0ZUluamVjdGVkU2Ny
aXB0KG1faW5qZWN0ZWRTY3JpcHRTb3VyY2UsIHRoaXMsIHNjcmlwdFN0YXRlLCBtX25leHRJbmpl
Y3RlZFNjcmlwdElkKTsKKyAgICAgICAgbV9pZFRvSW5qZWN0ZWRTY3JpcHQuc2V0KG1fbmV4dElu
amVjdGVkU2NyaXB0SWQsIGluamVjdGVkU2NyaXB0T2JqZWN0KTsKKyAgICAgICAgKyttX25leHRJ
bmplY3RlZFNjcmlwdElkOworICAgICAgICBnbG9iYWwtPlNldEhpZGRlblZhbHVlKGtleSwgaW5q
ZWN0ZWRTY3JpcHRPYmplY3QudjhPYmplY3QoKSk7CisgICAgICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdE9iamVjdDsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcAppbmRleCBmZTMyZGE3Li4zMmI4NjZjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC01NSw2ICs1NSw3IEBAIENvbnNvbGVNZXNzYWdl
OjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VM
ZXZlbCBsLCBTCiAgICAgLCBtX2xldmVsKGwpCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAs
IG1fd3JhcHBlZEFyZ3VtZW50cyhjYWxsU3RhY2stPmF0KDApLmFyZ3VtZW50Q291bnQoKSkKKyAg
ICAsIG1fc2NyaXB0U3RhdGUoY2FsbFN0YWNrLT5zdGF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX2Zy
YW1lcyhzdG9yZVRyYWNlID8gY2FsbFN0YWNrLT5zaXplKCkgOiAwKQogICAgICwgbV9ncm91cExl
dmVsKGcpCkBAIC03NCw3ICs3NSw3IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBTCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsYXN0Q2FsbGVy
LmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAgICBtX3dyYXBwZWRBcmd1bWVudHNbaV0gPSBT
Y3JpcHRPYmplY3Q6OnF1YXJhbnRpbmVWYWx1ZShjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxs
ZXIuYXJndW1lbnRBdChpKSk7CisgICAgICAgIG1fd3JhcHBlZEFyZ3VtZW50c1tpXSA9IGxhc3RD
YWxsZXIuYXJndW1lbnRBdChpKTsKICNlbmRpZgogfQogCkBAIC04OSw3ICs5MCw3IEBAIHZvaWQg
Q29uc29sZU1lc3NhZ2U6OmFkZFRvQ29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
CiAgICAganNvbk9iai5zZXQoInVybCIsIG1fdXJsKTsKICAgICBqc29uT2JqLnNldCgiZ3JvdXBM
ZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNvbk9iai5zZXQo
InJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7Ci0gICAgZnJv
bnRlbmQtPmFkZENvbnNvbGVNZXNzYWdlKGpzb25PYmosIG1fZnJhbWVzLCBtX3dyYXBwZWRBcmd1
bWVudHMsICBtX21lc3NhZ2UpOworICAgIGZyb250ZW5kLT5hZGRDb25zb2xlTWVzc2FnZShqc29u
T2JqLCBtX2ZyYW1lcywgbV9zY3JpcHRTdGF0ZSwgbV93cmFwcGVkQXJndW1lbnRzLCAgbV9tZXNz
YWdlKTsKIH0KIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNv
bGUoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmgKaW5kZXggMDczNTliYi4uNDI5ZmU2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29uc29sZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5o
CkBAIC02NCw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1f
bWVzc2FnZTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBWZWN0b3I8U2NyaXB0VmFs
dWU+IG1fd3JhcHBlZEFyZ3VtZW50czsKKyAgICAgICAgU2NyaXB0U3RhdGUqIG1fc2NyaXB0U3Rh
dGU7CiAjZW5kaWYKICAgICAgICAgVmVjdG9yPFNjcmlwdFN0cmluZz4gbV9mcmFtZXM7CiAgICAg
ICAgIHVuc2lnbmVkIG1fbGluZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwCmluZGV4IDQ3YjI5MTYuLmY1M2NiMTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcApAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElu
amVjdGVkU2NyaXB0SG9zdDo6SW5qZWN0ZWRTY3JpcHRIb3N0KEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIpCiAgICAgOiBtX2luc3BlY3RvckNvbnRyb2xsZXIoaW5zcGVj
dG9yQ29udHJvbGxlcikKKyAgICAsIG1fbmV4dEluamVjdGVkU2NyaXB0SWQoMSkKIHsKIH0KIApA
QCAtMTgwLDYgKzE4MSwyOCBAQCB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6cmVwb3J0RGlkRGlz
cGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcgY2FsbElkLCBjb25zdCBTdAogICAgICAgICBmcm9u
dGVuZC0+ZGlkRGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgcmVzdWx0LCBpc0V4Y2Vw
dGlvbik7CiB9CiAKK1NjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdEhvc3Q6OmluamVjdGVkU2Ny
aXB0Rm9ySWQobG9uZyBpZCkKK3sKKyAgICByZXR1cm4gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZ2V0
KGlkKTsKK30KKwordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2NhcmRJbmplY3RlZFNjcmlw
dHMoKQoreworICAgIG1faWRUb0luamVjdGVkU2NyaXB0LmNsZWFyKCk7Cit9CisKK3ZvaWQgSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGxvbmcgaW5qZWN0ZWRT
Y3JpcHRJZCwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkKK3sKKyAgICBpZiAoaW5qZWN0ZWRT
Y3JpcHRJZCkgeworICAgICAgICAgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0ID0gbV9pZFRv
SW5qZWN0ZWRTY3JpcHQuZ2V0KGluamVjdGVkU2NyaXB0SWQpOworICAgICAgICAgcmVsZWFzZVdy
YXBwZXJPYmplY3RHcm91cChpbmplY3RlZFNjcmlwdCwgb2JqZWN0R3JvdXApOworICAgIH0gZWxz
ZSB7CisgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIGluamVjdGVkIHNjcmlwdHMgaWYgaW5q
ZWN0ZWRTY3JpcHRJZCBpcyBub3Qgc3BlY2lmaWVkLgorICAgICAgICAgZm9yIChJZFRvSW5qZWN0
ZWRTY3JpcHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuYmVnaW4oKTsg
aXQgIT0gbV9pZFRvSW5qZWN0ZWRTY3JpcHQuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgIHJl
bGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoaXQtPnNlY29uZCwgb2JqZWN0R3JvdXApOworICAgIH0K
K30KKwogSW5zcGVjdG9yRE9NQWdlbnQqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdG9yRE9N
QWdlbnQoKQogewogICAgIGlmICghbV9pbnNwZWN0b3JDb250cm9sbGVyKQpAQCAtMTk0LDYgKzIx
NywxMyBAQCBJbnNwZWN0b3JGcm9udGVuZCogSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0b3JG
cm9udGVuZCgpCiAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9mcm9udGVuZC5n
ZXQoKTsKIH0KIAordm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OnJlbGVhc2VXcmFwcGVyT2JqZWN0
R3JvdXAoY29uc3QgU2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCksIGluamVjdGVkU2NyaXB0LCAicmVsZWFzZVdyYXBw
ZXJPYmplY3RHcm91cCIpOworICAgIHJlbGVhc2VGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmpl
Y3RHcm91cCk7CisgICAgcmVsZWFzZUZ1bmN0aW9uLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5kZXggZTkwMjE3Zi4uMDJkYTY2NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTMzLDcgKzMzLDkgQEAKICNpbmNsdWRlICJD
b25zb2xlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIAorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTUsNiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICB+SW5qZWN0ZWRTY3JpcHRI
b3N0KCk7CiAKKyAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYg
c291cmNlKSB7IG1faW5qZWN0ZWRTY3JpcHRTb3VyY2UgPSBzb3VyY2U7IH0KKwogICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3BlY3Rv
ckNvbnRyb2xsZXI7IH0KICAgICB2b2lkIGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBtX2luc3Bl
Y3RvckNvbnRyb2xsZXIgPSAwOyB9CiAKQEAgLTgwLDEzICs4NCwyNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2UqIHN0b3JhZ2UpOwogI2VuZGlmCiAgICAgdm9p
ZCByZXBvcnREaWREaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQobG9uZyBjYWxsSWQsIGNvbnN0IFN0
cmluZyYgcmVzdWx0LCBib29sIGlzRXhjZXB0aW9uKTsKKyAgICAKKyAgICBTY3JpcHRPYmplY3Qg
aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqKTsKKyAgICBTY3JpcHRPYmplY3QgaW5qZWN0
ZWRTY3JpcHRGb3JJZChsb25nKTsKKyAgICB2b2lkIGRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsK
KyAgICB2b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAobG9uZyBpbmplY3RlZFNjcmlwdElk
LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNj
cmlwdEhvc3QoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcik7CiAgICAg
SW5zcGVjdG9yRE9NQWdlbnQqIGluc3BlY3RvckRPTUFnZW50KCk7CiAgICAgSW5zcGVjdG9yRnJv
bnRlbmQqIGluc3BlY3RvckZyb250ZW5kKCk7CiAKKyAgICB2b2lkIHJlbGVhc2VXcmFwcGVyT2Jq
ZWN0R3JvdXAoY29uc3QgU2NyaXB0T2JqZWN0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5n
JiBvYmplY3RHcm91cCk7CisKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2luc3BlY3RvckNv
bnRyb2xsZXI7CisgICAgU3RyaW5nIG1faW5qZWN0ZWRTY3JpcHRTb3VyY2U7CisgICAgbG9uZyBt
X25leHRJbmplY3RlZFNjcmlwdElkOworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRP
YmplY3Q+IElkVG9JbmplY3RlZFNjcmlwdE1hcDsKKyAgICBJZFRvSW5qZWN0ZWRTY3JpcHRNYXAg
bV9pZFRvSW5qZWN0ZWRTY3JpcHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IDAyNWNhODcuLjY2NmUwM2EgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkhU
TUxGcmFtZU93bmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgpAQCAtMjU2LDEzICsyNTcsMzAg
QEAgSmF2YVNjcmlwdENhbGxGcmFtZSogSW5zcGVjdG9yQmFja2VuZDo6Y3VycmVudENhbGxGcmFt
ZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpkaXNwYXRjaE9u
SW5qZWN0ZWRTY3JpcHQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgY29u
c3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgYXN5bmMpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6
OnNldEluamVjdGVkU2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlKQoreworICAgIGlm
IChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+
aW5qZWN0ZWRTY3JpcHRIb3N0KCktPnNldEluamVjdGVkU2NyaXB0U291cmNlKHNvdXJjZSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcg
Y2FsbElkLCBsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwg
Y29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgYXN5bmMpCiB7CiAgICAgSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kID0gaW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICBpZiAoIWZyb250ZW5k
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9p
bnNwZWN0b3JDb250cm9sbGVyLT5tX3NjcmlwdFN0YXRlLCBtX2luc3BlY3RvckNvbnRyb2xsZXIt
Pm1faW5qZWN0ZWRTY3JpcHRPYmosICJkaXNwYXRjaCIpOworICAgIGJvb2wgaW5qZWN0ZWRTY3Jp
cHRJZElzTm9kZUlkID0gaW5qZWN0ZWRTY3JpcHRJZCA+PSAwOworICAgIAorICAgIFNjcmlwdE9i
amVjdCBpbmplY3RlZFNjcmlwdDsKKyAgICBpZiAoaW5qZWN0ZWRTY3JpcHRJZElzTm9kZUlkKQor
ICAgICAgICBpbmplY3RlZFNjcmlwdCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRT
Y3JpcHRGb3JOb2RlSWQoaW5qZWN0ZWRTY3JpcHRJZCk7CisgICAgZWxzZQorICAgICAgICBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCkt
PmluamVjdGVkU2NyaXB0Rm9ySWQoLWluamVjdGVkU2NyaXB0SWQpOworCisgICAgaWYgKGluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LnNjcmlwdFN0YXRlKCksIGluamVjdGVk
U2NyaXB0LCAiZGlzcGF0Y2giKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXRob2RO
YW1lKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChhcmd1bWVudHMpOwogICAgIGlmIChh
c3luYykKQEAgLTI3NCw3ICsyOTIsNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRpc3BhdGNo
T25JbmplY3RlZFNjcmlwdChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBtZXRobwogICAgIGlm
IChoYWRFeGNlcHRpb24pCiAgICAgICAgIGZyb250ZW5kLT5kaWREaXNwYXRjaE9uSW5qZWN0ZWRT
Y3JpcHQoY2FsbElkLCAiIiwgdHJ1ZSk7CiAgICAgZWxzZQotICAgICAgICBmcm9udGVuZC0+ZGlk
RGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGNhbGxJZCwgcmVzdWx0LnRvU3RyaW5nKG1faW5zcGVj
dG9yQ29udHJvbGxlci0+bV9zY3JpcHRTdGF0ZSksIGZhbHNlKTsKKyAgICAgICAgZnJvbnRlbmQt
PmRpZERpc3BhdGNoT25JbmplY3RlZFNjcmlwdChjYWxsSWQsIHJlc3VsdC50b1N0cmluZyhpbmpl
Y3RlZFNjcmlwdC5zY3JpcHRTdGF0ZSgpKSwgZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckJh
Y2tlbmQ6OmdldENoaWxkTm9kZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKQpAQCAtMzcxLDEw
ICszODksMTEgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpkZWxldGVDb29raWUoY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGRvbWEKICAgICBtX2luc3BlY3RvckNvbnRy
b2xsZXItPmRlbGV0ZUNvb2tpZShjb29raWVOYW1lLCBkb21haW4pOwogfQogCi12b2lkIEluc3Bl
Y3RvckJhY2tlbmQ6OnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAoY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCkKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6cmVsZWFzZVdyYXBwZXJPYmplY3RHcm91
cChsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7Ci0g
ICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9s
bGVyLT5yZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKG9iamVjdEdyb3VwKTsKKyAgICBpZiAoIW1f
aW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPnJlbGVhc2VXcmFwcGVyT2JqZWN0R3JvdXAo
aW5qZWN0ZWRTY3JpcHRJZCwgb2JqZWN0R3JvdXApOwogfQogCiB2b2lkIEluc3BlY3RvckJhY2tl
bmQ6OmRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmlu
ZyYganNvblJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCAwNWI1
Nzk5Li5mNDZkY2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xMDQs
NyArMTA0LDggQEAgcHVibGljOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1cnJlbnRDYWxs
RnJhbWUoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBkaXNwYXRjaE9uSW5qZWN0ZWRTY3Jp
cHQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudHMsIGJvb2wgYXN5bmMpOworICAgIHZvaWQgc2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2Uo
Y29uc3QgU3RyaW5nJiBzb3VyY2UpOworICAgIHZvaWQgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0
KGxvbmcgY2FsbElkLCBsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9k
TmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudHMsIGJvb2wgYXN5bmMpOwogICAgIHZvaWQgZ2V0
Q2hpbGROb2Rlcyhsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQpOwogICAgIHZvaWQgc2V0QXR0cmli
dXRlKGxvbmcgY2FsbElkLCBsb25nIGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlKTsKICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShsb25nIGNhbGxJZCwg
bG9uZyBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBAIC0xMTksNyArMTIwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwg
Y29uc3QgU3RyaW5nJiBkb21haW4pOwogCiAgICAgLy8gR2VuZXJpYyBjb2RlIGNhbGxlZCBmcm9t
IGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMuCi0gICAgdm9pZCByZWxlYXNlV3JhcHBlck9iamVjdEdy
b3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOworICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJP
YmplY3RHcm91cChsb25nIGluamVjdGVkU2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApOwogICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggNDBkMTAwNi4uZTJjMWU5NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTc1LDcgKzc1LDggQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKGluIGxvbmcgY2FsbElk
KTsKICAgICAgICAgdm9pZCBnZXRQcm9maWxlKGluIGxvbmcgY2FsbElkLCBpbiB1bnNpZ25lZCBs
b25nIHVpZCk7CiAjZW5kaWYKLSAgICAgICAgdm9pZCBkaXNwYXRjaE9uSW5qZWN0ZWRTY3JpcHQo
aW4gbG9uZyBjYWxsSWQsIGluIERPTVN0cmluZyBtZXRob2ROYW1lLCBpbiBET01TdHJpbmcgYXJn
dW1lbnRzLCBpbiBib29sZWFuIGFzeW5jKTsKKyAgICAgICAgdm9pZCBzZXRJbmplY3RlZFNjcmlw
dFNvdXJjZShpbiBET01TdHJpbmcgc2NyaXB0U291cmNlKTsKKyAgICAgICAgdm9pZCBkaXNwYXRj
aE9uSW5qZWN0ZWRTY3JpcHQoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgaW5qZWN0ZWRTY3JpcHRJ
ZCwgaW4gRE9NU3RyaW5nIG1ldGhvZE5hbWUsIGluIERPTVN0cmluZyBhcmd1bWVudHMsIGluIGJv
b2xlYW4gYXN5bmMpOwogICAgICAgICB2b2lkIGdldENoaWxkTm9kZXMoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoaW4gbG9uZyBjYWxs
SWQsIGluIGxvbmcgZWxlbWVudElkLCBpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZh
bHVlKTsKICAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gbG9uZyBjYWxsSWQsIGluIGxv
bmcgZWxlbWVudElkLCBpbiBET01TdHJpbmcgbmFtZSk7CkBAIC04OSw3ICs5MCw3IEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgdm9pZCBnZXRDb29raWVzKGluIGxvbmcgY2FsbElkKTsKICAgICAg
ICAgdm9pZCBkZWxldGVDb29raWUoaW4gRE9NU3RyaW5nIGNvb2tpZU5hbWUsIGluIERPTVN0cmlu
ZyBkb21haW4pOwogCi0gICAgICAgIHZvaWQgcmVsZWFzZVdyYXBwZXJPYmplY3RHcm91cChpbiBE
T01TdHJpbmcgb2JqZWN0R3JvdXApOworICAgICAgICB2b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0
R3JvdXAoaW4gbG9uZyBpbmplY3RlZFNjcmlwdElkLCBpbiBET01TdHJpbmcgb2JqZWN0R3JvdXAp
OwogICAgICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoaW4gbG9uZyBjYWxs
SWQsIGluIERPTVN0cmluZyBqc29uUmVzdWx0KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0RBVEFC
QVNFKSAmJiBFTkFCTEVfREFUQUJBU0UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggNTAxOGRkMS4uNmJlNWEzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE0Myw3ICsxNDMsNiBAQCBJbnNwZWN0b3JDb250cm9s
bGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50KQogICAgICwgbV9pbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckJhY2tlbmQ6OmNyZWF0ZSh0
aGlzKSkKICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRIb3N0KEluc3BlY3RvckZyb250ZW5kSG9z
dDo6Y3JlYXRlKHRoaXMsIGNsaWVudCkpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0SG9zdChJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fbGFzdEJvdW5kT2JqZWN0SWQo
MSkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAsIG1fZGVidWdnZXJFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9hdHRhY2hEZWJ1Z2dlcldoZW5TaG93bihmYWxzZSkKQEAgLTM3
NSw3ICszNzQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyQ29uc29sZU1lc3Nh
Z2VzKCkKICAgICBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50ID0gMDsKICAgICBtX3ByZXZp
b3VzTWVzc2FnZSA9IDA7CiAgICAgbV9ncm91cExldmVsID0gMDsKLSAgICByZWxlYXNlV3JhcHBl
ck9iamVjdEdyb3VwKCJjb25zb2xlIik7CisgICAgbV9pbmplY3RlZFNjcmlwdEhvc3QtPnJlbGVh
c2VXcmFwcGVyT2JqZWN0R3JvdXAoMCAvKiByZWxlYXNlIHRoZSBncm91cCBpbiBhbGwgc2NyaXB0
cyAqLywgImNvbnNvbGUiKTsKICAgICBpZiAobV9kb21BZ2VudCkKICAgICAgICAgbV9kb21BZ2Vu
dC0+cmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKICAgICBpZiAobV9mcm9udGVuZCkKQEAgLTUwMCw3
ICs0OTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1Njcmlw
dE9iamVjdENsZWFyZWQoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZW5hYmxlZCgpIHx8ICFt
X2Zyb250ZW5kIHx8IGZyYW1lICE9IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICByZXNldEluamVjdGVkU2NyaXB0KCk7CisgICAgbV9pbmplY3RlZFNj
cmlwdEhvc3QtPmRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoKQpAQCAtNTEzLDcgKzUxMiw2
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxl
KCkKICAgICBtX3NjcmlwdFN0YXRlID0gc2NyaXB0U3RhdGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxk
KCksIG1fcGFnZSk7CiAgICAgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQobV9zY3JpcHRTdGF0ZSwg
Ikluc3BlY3RvckJhY2tlbmQiLCBtX2luc3BlY3RvckJhY2tlbmQuZ2V0KCkpOwogICAgIFNjcmlw
dEdsb2JhbE9iamVjdDo6c2V0KG1fc2NyaXB0U3RhdGUsICJJbnNwZWN0b3JGcm9udGVuZEhvc3Qi
LCBtX2luc3BlY3RvckZyb250ZW5kSG9zdC5nZXQoKSk7Ci0gICAgU2NyaXB0R2xvYmFsT2JqZWN0
OjpzZXQobV9zY3JpcHRTdGF0ZSwgIkluamVjdGVkU2NyaXB0SG9zdCIsIG1faW5qZWN0ZWRTY3Jp
cHRIb3N0LmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRPYmpl
Y3RSZWFkeSgpCkBAIC01MjYsOCArNTI0LDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
Y3JpcHRPYmplY3RSZWFkeSgpCiAgICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChtX3Nj
cmlwdFN0YXRlLCAiV2ViSW5zcGVjdG9yIiwgd2ViSW5zcGVjdG9yT2JqKSkKICAgICAgICAgcmV0
dXJuOwogICAgIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iajsKLSAgICBpZiAoIVNjcmlw
dEdsb2JhbE9iamVjdDo6Z2V0KG1fc2NyaXB0U3RhdGUsICJJbmplY3RlZFNjcmlwdCIsIGluamVj
dGVkU2NyaXB0T2JqKSkKLSAgICAgICAgcmV0dXJuOwogICAgIHNldEZyb250ZW5kUHJveHlPYmpl
Y3QobV9zY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yT2JqLCBpbmplY3RlZFNjcmlwdE9iaik7CiAK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKQEAgLTU0NSwxMCArNTQxLDkgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRPYmplY3RSZWFkeSgpCiAgICAgbV9jbGllbnQt
Pmluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzZXRGcm9udGVuZFByb3h5T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
U2NyaXB0T2JqZWN0IHdlYkluc3BlY3Rvck9iaiwgU2NyaXB0T2JqZWN0IGluamVjdGVkU2NyaXB0
T2JqKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFByb3h5T2JqZWN0KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0IHdlYkluc3BlY3Rvck9iaiwgU2Ny
aXB0T2JqZWN0KQogewogICAgIG1fc2NyaXB0U3RhdGUgPSBzY3JpcHRTdGF0ZTsKLSAgICBtX2lu
amVjdGVkU2NyaXB0T2JqID0gaW5qZWN0ZWRTY3JpcHRPYmo7CiAgICAgbV9mcm9udGVuZC5zZXQo
bmV3IEluc3BlY3RvckZyb250ZW5kKHRoaXMsIHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3JPYmop
KTsKICAgICByZWxlYXNlRE9NQWdlbnQoKTsKICAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9N
QWdlbnQ6OmNyZWF0ZShtX2Zyb250ZW5kLmdldCgpKTsKQEAgLTYwNiw3ICs2MDEsNiBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmNsb3NlKCkKICNlbmRpZgogICAgIGNsb3NlV2luZG93KCk7
CiAKLSAgICBtX2luamVjdGVkU2NyaXB0T2JqID0gU2NyaXB0T2JqZWN0KCk7CiAgICAgcmVsZWFz
ZURPTUFnZW50KCk7CiAgICAgbV9mcm9udGVuZC5zZXQoMCk7CiAgICAgbV90aW1lbGluZUFnZW50
ID0gMDsKQEAgLTcxNSw4ICs3MDksNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0
U2NyaXB0T2JqZWN0cygpCiAKICAgICBtX2Zyb250ZW5kLT5yZXNldCgpOwogICAgIG1fZG9tQWdl
bnQtPnJlc2V0KCk7Ci0gICAgbV9vYmplY3RHcm91cHMuY2xlYXIoKTsKLSAgICBtX2lkVG9XcmFw
cGVkT2JqZWN0LmNsZWFyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJ1bmVS
ZXNvdXJjZXMoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
clRvS2VlcCkKQEAgLTE1OTEsOCArMTU4MywxNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmZhaWxlZFRvUGFyc2VTb3VyY2UoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYgc291cgog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFBhdXNlKCkKIHsKLSAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV9pbmplY3RlZFNjcmlwdE9iaiwgImdl
dENhbGxGcmFtZXMiKTsKLSAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVzID0gZnVuY3Rpb24uY2Fs
bCgpOworICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IG1faW5qZWN0ZWRTY3Jp
cHRIb3N0LT5jdXJyZW50Q2FsbEZyYW1lKCk7CisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
ID0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOyAK
KyAgICBBU1NFUlQoc2NyaXB0U3RhdGUpOworICAgIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlw
dE9iaiA9IG1faW5qZWN0ZWRTY3JpcHRIb3N0LT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0
ZSk7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCBpbmplY3Rl
ZFNjcmlwdE9iaiwgImdldENhbGxGcmFtZXMiKTsKKyAgICBTY3JpcHRWYWx1ZSBjYWxsRnJhbWVz
VmFsdWUgPSBmdW5jdGlvbi5jYWxsKCk7CisgICAgU3RyaW5nIGNhbGxGcmFtZXMgPSBjYWxsRnJh
bWVzVmFsdWUudG9TdHJpbmcoc2NyaXB0U3RhdGUpOworCiAgICAgbV9mcm9udGVuZC0+cGF1c2Vk
U2NyaXB0KGNhbGxGcmFtZXMpOwogfQogCkBAIC0xODIwLDUwICsxODE4LDYgQEAgSW5zcGVjdG9y
Q29udHJvbGxlcjo6U3BlY2lhbFBhbmVscyBJbnNwZWN0b3JDb250cm9sbGVyOjpzcGVjaWFsUGFu
ZWxGb3JKU05hbWUoY28KICAgICAgICAgcmV0dXJuIEVsZW1lbnRzUGFuZWw7CiB9CiAKLVNjcmlw
dFZhbHVlIEluc3BlY3RvckNvbnRyb2xsZXI6OndyYXBPYmplY3QoY29uc3QgU2NyaXB0VmFsdWUm
IHF1YXJhbnRpbmVkT2JqZWN0LCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQotewotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX2luamVjdGVkU2NyaXB0
T2JqLCAiY3JlYXRlUHJveHlPYmplY3QiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChx
dWFyYW50aW5lZE9iamVjdCk7Ci0gICAgaWYgKHF1YXJhbnRpbmVkT2JqZWN0LmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgbG9uZyBpZCA9IG1fbGFzdEJvdW5kT2JqZWN0SWQrKzsKLSAgICAgICAgU3Ry
aW5nIG9iamVjdElkID0gU3RyaW5nOjpmb3JtYXQoIm9iamVjdCMlbGQiLCBpZCk7Ci0gICAgICAg
IG1faWRUb1dyYXBwZWRPYmplY3Quc2V0KG9iamVjdElkLCBxdWFyYW50aW5lZE9iamVjdCk7Ci0g
ICAgICAgIE9iamVjdEdyb3Vwc01hcDo6aXRlcmF0b3IgaXQgPSBtX29iamVjdEdyb3Vwcy5maW5k
KG9iamVjdEdyb3VwKTsKLSAgICAgICAgaWYgKGl0ID09IG1fb2JqZWN0R3JvdXBzLmVuZCgpKQot
ICAgICAgICAgICAgaXQgPSBtX29iamVjdEdyb3Vwcy5zZXQob2JqZWN0R3JvdXAsIFZlY3RvcjxT
dHJpbmc+KCkpLmZpcnN0OwotICAgICAgICBpdC0+c2Vjb25kLmFwcGVuZChvYmplY3RJZCk7Ci0g
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKLSAgICB9Ci0gICAgU2Ny
aXB0VmFsdWUgd3JhcHBlciA9IGZ1bmN0aW9uLmNhbGwoKTsKLSAgICByZXR1cm4gd3JhcHBlcjsK
LX0KLQotU2NyaXB0VmFsdWUgSW5zcGVjdG9yQ29udHJvbGxlcjo6dW53cmFwT2JqZWN0KGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQpCi17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFNjcmlwdFZhbHVlPjo6
aXRlcmF0b3IgaXQgPSBtX2lkVG9XcmFwcGVkT2JqZWN0LmZpbmQob2JqZWN0SWQpOwotICAgIGlm
IChpdCAhPSBtX2lkVG9XcmFwcGVkT2JqZWN0LmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNl
Y29uZDsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpyZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApCi17Ci0gICAgT2JqZWN0R3JvdXBzTWFwOjppdGVyYXRvciBncm91cEl0ID0gbV9vYmplY3RH
cm91cHMuZmluZChvYmplY3RHcm91cCk7Ci0gICAgaWYgKGdyb3VwSXQgPT0gbV9vYmplY3RHcm91
cHMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxTdHJpbmc+JiBncm91cElk
cyA9IGdyb3VwSXQtPnNlY29uZDsKLSAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBp
dCA9IGdyb3VwSWRzLmJlZ2luKCk7IGl0ICE9IGdyb3VwSWRzLmVuZCgpOyArK2l0KQotICAgICAg
ICBtX2lkVG9XcmFwcGVkT2JqZWN0LnJlbW92ZSgqaXQpOwotICAgIG1fb2JqZWN0R3JvdXBzLnJl
bW92ZShncm91cEl0KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXNldEluamVj
dGVkU2NyaXB0KCkKLXsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRT
dGF0ZSwgbV9pbmplY3RlZFNjcmlwdE9iaiwgInJlc2V0Iik7Ci0gICAgZnVuY3Rpb24uY2FsbCgp
OwotfQotCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRlbGV0ZUNvb2tpZShjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKQogewogICAgIFJlc291cmNlc01h
cDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CkBAIC0xODc0LDYg
KzE4MjgsMjkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkZWxldGVDb29raWUoY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIGQKICAgICB9CiB9CiAKLX0gIC8vIG5h
bWVzcGFjZSBXZWJDb3JlCitTY3JpcHRPYmplY3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5qZWN0
ZWRTY3JpcHRGb3JOb2RlSWQobG9uZyBpZCkKK3sKKworICAgIEZyYW1lKiBmcmFtZSA9IDA7Cisg
ICAgaWYgKGlkKSB7CisgICAgICAgIEFTU0VSVChtX2RvbUFnZW50KTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IG1fZG9tQWdlbnQtPm5vZGVGb3JJZChpZCk7CisgICAgICAgIGlmIChub2RlKSB7Cisg
ICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBub2RlLT5vd25lckRvY3VtZW50KCk7Cisg
ICAgICAgICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgZnJhbWUgPSBkb2N1bWVu
dC0+ZnJhbWUoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lID0gbV9p
bnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGZyYW1lKQor
ICAgICAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdEhvc3QtPmluamVjdGVkU2NyaXB0Rm9yKGZy
YW1lLT5zY3JpcHQoKS0+bWFpbldvcmxkU2NyaXB0U3RhdGUoKSk7CisKKyAgICBBU1NFUlQoZmFs
c2UpOworICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMThhMTkxZC4uMmM0YTZkOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtOTksNyArOTksNiBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxGcmFtZT4sIFJlc291cmNlc01hcCo+IEZyYW1lUmVz
b3VyY2VzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlPiA+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxpbnQsIFJlZlB0cjxJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U+ID4gRE9NU3RvcmFnZVJl
c291cmNlc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiA+
IE9iamVjdEdyb3Vwc01hcDsKIAogICAgIHR5cGVkZWYgZW51bSB7CiAgICAgICAgIEN1cnJlbnRQ
YW5lbCwKQEAgLTI0NCw2ICsyNDMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGV2YWx1YXRlRm9y
VGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAorICAg
IFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdEZvck5vZGVJZChsb25nIGlkKTsKKwogcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgRnJvbnRlbmRTZXR0aW5nc1NldHRpbmdO
YW1lOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwpAQCAtMjU5LDE2ICsyNjAs
NiBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCgpIHsgcmV0dXJu
IG1fZG9tQWdlbnQuZ2V0KCk7IH0KICAgICB2b2lkIHJlbGVhc2VET01BZ2VudCgpOwogCi0gICAg
ZnJpZW5kIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwotICAgIC8vIEZvbGxvd2luZyBhcmUgdXNl
ZCBmcm9tIEluc3BlY3RvckZyb250ZW5kIG9ubHkuIFdlIGRvbid0IHdhbnQgdG8gZXhwb3NlIHRo
ZW0gdG8gdGhlCi0gICAgLy8gcmVzdCBvZiB0aGUgSW5zcGVjdG9yQ29udHJvbGxlciBjbGllbnRz
LgotICAgIC8vIFRPRE86IGV4dHJhY3QgdGhlc2UgaW50byBhIHNlcGFyYXRlIGludGVyZmFjZS4K
LSAgICBTY3JpcHRWYWx1ZSB3cmFwT2JqZWN0KGNvbnN0IFNjcmlwdFZhbHVlJiBvYmplY3QsIGNv
bnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOwotICAgIFNjcmlwdFZhbHVlIHVud3JhcE9iamVjdChj
b25zdCBTdHJpbmcmIG9iamVjdElkKTsKLSAgICB2b2lkIHJlbGVhc2VXcmFwcGVyT2JqZWN0R3Jv
dXAoY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCk7Ci0gICAgCi0gICAgdm9pZCByZXNldEluamVj
dGVkU2NyaXB0KCk7Ci0KICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQpAQCAtMzE2LDcgKzMwNyw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEluc3BlY3Rv
ckZyb250ZW5kPiBtX2Zyb250ZW5kOwogICAgIFJlZlB0cjxJbnNwZWN0b3JET01BZ2VudD4gbV9k
b21BZ2VudDsKICAgICBPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gbV90aW1lbGluZUFn
ZW50OwotICAgIFNjcmlwdE9iamVjdCBtX2luamVjdGVkU2NyaXB0T2JqOwogICAgIFBhZ2UqIG1f
cGFnZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwpAQCAtMzQ1LDkgKzMzNSw2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEluc3BlY3RvckJhY2tlbmQ+IG1faW5zcGVjdG9yQmFja2VuZDsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2luc3BlY3RvckZyb250ZW5kSG9zdDsKICAg
ICBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiBtX2luamVjdGVkU2NyaXB0SG9zdDsKLSAgICBI
YXNoTWFwPFN0cmluZywgU2NyaXB0VmFsdWU+IG1faWRUb1dyYXBwZWRPYmplY3Q7Ci0gICAgT2Jq
ZWN0R3JvdXBzTWFwIG1fb2JqZWN0R3JvdXBzOwotICAgIGxvbmcgbV9sYXN0Qm91bmRPYmplY3RJ
ZDsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU2V0dGluZ3M7CiAgICAg
bXV0YWJsZSBTZXR0aW5ncyBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwCmluZGV4IDRkYTY5ZjQuLmU3ZTQwZmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNvbnNvbGVN
ZXNzYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhv
c3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgpAQCAtOTMsNyArOTQsNyBAQCB2b2lk
IEluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCh1bnNp
Z25lZCBjb3VudCkKICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwg
Y29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZh
bHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIEluc3Bl
Y3RvckZyb250ZW5kOjphZGRDb25zb2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3Nh
Z2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSwgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsgCiAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoImFkZENvbnNvbGVNZXNzYWdlIik7CkBAIC0xMDIsOCArMTAzLDE3
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlw
dE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZyYW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGZyYW1lc1tpXSk7CiAgICAgfSBlbHNlIGlmICghd3JhcHBlZEFyZ3VtZW50cy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdyYXBwZWRBcmd1bWVudHMu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPndyYXBPYmplY3Qod3JhcHBlZEFyZ3VtZW50c1tpXSwgImNvbnNvbGUi
KSk7CisgICAgICAgIFNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdCA9IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0
YXRlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdyYXBwZWRBcmd1bWVudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rp
b24oc2NyaXB0U3RhdGUsIGluamVjdGVkU2NyaXB0LCAid3JhcEFuZFN0cmluZ2lmeU9iamVjdCIp
OyAKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh3cmFwcGVkQXJndW1l
bnRzW2ldKTsKKyAgICAgICAgICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgiY29uc29s
ZSIpOworICAgICAgICAgICAgU2NyaXB0VmFsdWUgciA9IHdyYXBGdW5jdGlvbi5jYWxsKCk7Cisg
ICAgICAgICAgICBpZiAoci5oYXNOb1ZhbHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgU3RyaW5nIHMgPSByLnRvU3RyaW5nKHNjcmlwdFN0YXRlKTsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHMpOworICAgICAgICB9CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2UpOwogICAgIGZ1bmN0aW9uLmNh
bGwoKTsKQEAgLTMxMiw3ICszMjIsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRQ
cm9maWxlKGludCBjYWxsSWQsIGNvbnN0IFNjcmlwdFZhbHVlJiBwcm9maWxlKQogICAgIGZ1bmN0
aW9uLmNhbGwoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cGF1c2VkU2NyaXB0KGNv
bnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzKQordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cGF1
c2VkU2NyaXB0KGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lcykKIHsKICAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIp
OyAKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgicGF1c2VkU2NyaXB0Iik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCBjMWM0ZGI1Li5hYjQ4YTJiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyhjb25zdCBT
dHJpbmcmIHNldHRpbmdzKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhw
aXJlZENvdW50KHVuc2lnbmVkIGNvdW50KTsKLSAgICAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJp
bmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShj
b25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+
JiBmcmFtZXMsIFNjcmlwdFN0YXRlKiwgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVk
QXJndW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIHVwZGF0ZUNv
bnNvbGVNZXNzYWdlUmVwZWF0Q291bnQodW5zaWduZWQgY291bnQpOwogICAgICAgICB2b2lkIGNs
ZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAKQEAgLTk1LDcgKzk1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldFJlY29yZGluZ1Byb2ZpbGUoYm9vbCBpc1Byb2ZpbGluZyk7
CiAgICAgICAgIHZvaWQgZGlkR2V0UHJvZmlsZUhlYWRlcnMoaW50IGNhbGxJZCwgY29uc3QgU2Ny
aXB0QXJyYXkmIGhlYWRlcnMpOwogICAgICAgICB2b2lkIGRpZEdldFByb2ZpbGUoaW50IGNhbGxJ
ZCwgY29uc3QgU2NyaXB0VmFsdWUmIHByb2ZpbGUpOwotICAgICAgICB2b2lkIHBhdXNlZFNjcmlw
dChjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcyk7CisgICAgICAgIHZvaWQgcGF1c2VkU2Ny
aXB0KGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lcyk7CiAgICAgICAgIHZvaWQgcmVzdW1lZFNjcmlw
dCgpOwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45595</attachid>
            <date>2009-12-29 05:39:02 -0800</date>
            <delta_ts>2009-12-29 11:42:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scriptcallstack-state1.patch</filename>
            <type>text/plain</type>
            <size>6154</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDI1OGJiMS4uM2VhNDA5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMi0yOSAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbdjhdIFVzZSBjdXJyZW50IGlzb2xhdGVkIHdvcmxkJ3MgY29u
dGV4dCBmb3IgU2NyaXB0Q2FsbFN0YWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAxNgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0
Q2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6bWFpbldvcmxkU2NyaXB0U3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRXb3JsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOElzb2xhdGVkV29ybGQ6OnNj
cmlwdFN0YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJv
eHk6OmN1cnJlbnRTY3JpcHRTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5o
OgorCiAyMDA5LTEyLTI4ICBBbmRyZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5jcHAKaW5kZXggZDliMmZjZi4uNDI1MjNjOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2NyaXB0Q2FsbFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNyBAQCBTY3JpcHRDYWxsU3RhY2sq
IFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywg
dW5zaWduZQogCiBTY3JpcHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJpbmcgc291
cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1iZXIpCiAgICAgOiBtX2xhc3RDYWxsZXIoU3RyaW5n
KCksIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50
Q291bnQpCi0gICAgLCBtX3NjcmlwdFN0YXRlKG5ldyBTY3JpcHRTdGF0ZShWOFByb3h5OjpyZXRy
aWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQoKSkpCisgICAgLCBtX3NjcmlwdFN0YXRlKFY4UHJv
eHk6OmN1cnJlbnRTY3JpcHRTdGF0ZSgpKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
YWxsU3RhY2suaAppbmRleCBmNmE3ZTM5Li5hYTA0MzYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q2FsbFN0YWNrLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgdjggewogICAgIGNsYXNzIEFy
Z3VtZW50czsKQEAgLTUyLDEzICs1MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgcmV0cmlldmluZyBhbmQgc3RvcmluZyBjYWxsIHN0YWNrIHRy
YWNlCiAgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiAxOyB9CiAKLSAgICAg
ICAgU2NyaXB0U3RhdGUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZS5nZXQo
KTsgfQorICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Njcmlw
dFN0YXRlOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBTY3JpcHRDYWxsU3RhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCwgU3Ry
aW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyKTsKICAgICAKICAgICAgICAgU2Ny
aXB0Q2FsbEZyYW1lIG1fbGFzdENhbGxlcjsKLSAgICAgICAgT3duUHRyPFNjcmlwdFN0YXRlPiBt
X3NjcmlwdFN0YXRlOworICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBkYTIwOTM5Li4yYzgzYWVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTM2NCw4ICszNjQsMTAgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpnZXRBbGxXb3JsZHMoVmVjdG9yPERPTVdyYXBwZXJXb3JsZCo+JiB3b3JsZHMpCiAK
IFNjcmlwdFN0YXRlKiBTY3JpcHRDb250cm9sbGVyOjptYWluV29ybGRTY3JpcHRTdGF0ZSgpCiB7
Ci0gICAgaWYgKCFtX21haW5Xb3JsZFNjcmlwdFN0YXRlKQorICAgIGlmICghbV9tYWluV29ybGRT
Y3JpcHRTdGF0ZSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAg
ICAgIG1fbWFpbldvcmxkU2NyaXB0U3RhdGUuc2V0KG5ldyBTY3JpcHRTdGF0ZShtX2ZyYW1lLCBW
OFByb3h5OjptYWluV29ybGRDb250ZXh0KG1fZnJhbWUpKSk7CisgICAgfQogICAgIHJldHVybiBt
X21haW5Xb3JsZFNjcmlwdFN0YXRlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SXNvbGF0ZWRXb3JsZC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNv
bGF0ZWRXb3JsZC5jcHAKaW5kZXggY2I2NTA5Ny4uZGUxMjkyZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhJc29sYXRlZFdvcmxkLmNwcApAQCAtOTEsNCArOTEsMTQgQEAgVjhJc29sYXRlZFdvcmxk
Ojp+VjhJc29sYXRlZFdvcmxkKCkKICAgICBtX2NvbnRleHQtPmRpc3Bvc2VIYW5kbGUoKTsKIH0K
IAorU2NyaXB0U3RhdGUqIFY4SXNvbGF0ZWRXb3JsZDo6c2NyaXB0U3RhdGUoKQoreworICAgIGlm
ICghbV9zY3JpcHRTdGF0ZSkgeworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBtX2NvbnRleHQuZ2V0KCktPmdl
dCgpOworICAgICAgICBtX3NjcmlwdFN0YXRlLnNldChuZXcgU2NyaXB0U3RhdGUoVjhQcm94eTo6
cmV0cmlldmVGcmFtZShjb250ZXh0KSwgY29udGV4dCkpOworICAgIH0KKyAgICByZXR1cm4gbV9z
Y3JpcHRTdGF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJc29sYXRlZFdvcmxkLmgKaW5kZXggNjMxM2RhOC4uYjA3NWExYiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuaAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SXNvbGF0ZWRXb3JsZC5oCkBAIC05NSw2ICs5NSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBET01EYXRhU3RvcmUqIGdldERPTURhdGFTdG9yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZG9tRGF0YVN0b3JlLmdldFN0b3JlKCk7IH0KIAorICAgICAgICBTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGdldEdsb2JhbE9iamVjdCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjb250ZXh0KQogICAgICAgICB7CkBAIC0xMTQsNiArMTE2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBtYW5hZ2UgdGhlaXIgbGlmZXRpbWUuCiAgICAgICAgIERPTURhdGFT
dG9yZUhhbmRsZSBtX2RvbURhdGFTdG9yZTsKIAorICAgICAgICBPd25QdHI8U2NyaXB0U3RhdGU+
IG1fc2NyaXB0U3RhdGU7CisKICAgICAgICAgc3RhdGljIGludCBpc29sYXRlZFdvcmxkQ291bnQ7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggYzc5MzQ2OS4uZTc1NDEwZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC0xMTI2LDYgKzExMjYsMTUgQEAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KCkKICAgICByZXR1cm4gdjg6
OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dCk7CiB9CiAKK1NjcmlwdFN0YXRlKiBW
OFByb3h5OjpjdXJyZW50U2NyaXB0U3RhdGUoKQoreworICAgIGlmIChWOElzb2xhdGVkV29ybGQq
IHdvcmxkID0gVjhJc29sYXRlZFdvcmxkOjpnZXRFbnRlcmVkKCkpCisgICAgICAgIHJldHVybiB3
b3JsZC0+c2NyaXB0U3RhdGUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZyYW1lRm9y
Q3VycmVudENvbnRleHQoKTsKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIHJldHVybiBmcmFtZS0+
c2NyaXB0KCktPm1haW5Xb3JsZFNjcmlwdFN0YXRlKCk7Cit9CisKIHY4OjpMb2NhbDx2ODo6Q29u
dGV4dD4gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChGcmFtZSogZnJhbWUpCiB7CiAgICAgVjhQ
cm94eSogcHJveHkgPSByZXRyaWV2ZShmcmFtZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCmluZGV4IGRk
MTU3ZmEuLjk2NzgxYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC01Niw2ICs1Niw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7
CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBTY3JpcHRTdGF0
ZTsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgVjhFdmVudExpc3RlbmVyOwogICAgIGNs
YXNzIFY4SXNvbGF0ZWRXb3JsZDsKQEAgLTMwMyw2ICszMDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IG1haW5Xb3JsZENvbnRl
eHQoRnJhbWUqKTsKICAgICAgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY3VycmVu
dENvbnRleHQoKTsKIAorICAgICAgICAvLyBSZXR1cm5zIFNjcmlwdFN0YXRlIGZvciBjdXJyZW50
IGNvbnRleHQuCisgICAgICAgIHN0YXRpYyBTY3JpcHRTdGF0ZSogY3VycmVudFNjcmlwdFN0YXRl
KCk7CisKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY29udGV4dCBjYXVzZXMgb3V0IG9mIG1l
bW9yeSwgSmF2YVNjcmlwdCBzZXR0aW5nCiAgICAgICAgIC8vIGlzIGRpc2FibGVkIGFuZCBpdCBy
ZXR1cm5zIHRydWUuCiAgICAgICAgIHN0YXRpYyBib29sIGhhbmRsZU91dE9mTWVtb3J5KCk7Cg==
</data>
<flag name="review"
          id="27668"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45617</attachid>
            <date>2009-12-29 11:42:52 -0800</date>
            <delta_ts>2009-12-29 11:49:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scriptcallstack-state2.patch</filename>
            <type>text/plain</type>
            <size>6381</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDI1OGJiMS4uMDkyNDYyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMi0yOSAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbdjhdIFVzZSBjdXJyZW50IGlzb2xhdGVkIHdvcmxkJ3MgY29u
dGV4dCBmb3IgU2NyaXB0Q2FsbFN0YWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAxNgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0
Q2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6bWFpbldvcmxkU2NyaXB0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6Y3VycmVudFNjcmlwdFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJc29sYXRlZFdvcmxkOjpzY3JpcHRTdGF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmg6CisKIDIwMDktMTItMjggIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERtaXRyeSBUaXRvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRl
eCBkOWIyZmNmLi45ZWI4ZTM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2su
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlIDx2OC5oPgogCisjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJv
eHkuaCIKIApAQCAtNTMsNyArNTQsNyBAQCBTY3JpcHRDYWxsU3RhY2sqIFNjcmlwdENhbGxTdGFj
azo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZQogCiBTY3Jp
cHRDYWxsU3RhY2s6OlNjcmlwdENhbGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVu
dHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNv
dXJjZUxpbmVOdW1iZXIpCiAgICAgOiBtX2xhc3RDYWxsZXIoU3RyaW5nKCksIHNvdXJjZU5hbWUs
IHNvdXJjZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQpCi0gICAgLCBt
X3NjcmlwdFN0YXRlKG5ldyBTY3JpcHRTdGF0ZShWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ3Vy
cmVudENvbnRleHQoKSkpCisgICAgLCBtX3NjcmlwdFN0YXRlKFNjcmlwdENvbnRyb2xsZXI6OmN1
cnJlbnRTY3JpcHRTdGF0ZSgpKQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3Rh
Y2suaAppbmRleCBmNmE3ZTM5Li5hYTA0MzYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgdjggewogICAgIGNsYXNzIEFyZ3VtZW50
czsKQEAgLTUyLDEzICs1MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgcmV0cmlldmluZyBhbmQgc3RvcmluZyBjYWxsIHN0YWNrIHRyYWNlCiAg
ICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiAxOyB9CiAKLSAgICAgICAgU2Ny
aXB0U3RhdGUqIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZS5nZXQoKTsgfQor
ICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRl
OyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBTY3JpcHRDYWxsU3RhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCwgU3RyaW5nIHNv
dXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyKTsKICAgICAKICAgICAgICAgU2NyaXB0Q2Fs
bEZyYW1lIG1fbGFzdENhbGxlcjsKLSAgICAgICAgT3duUHRyPFNjcmlwdFN0YXRlPiBtX3Njcmlw
dFN0YXRlOworICAgICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCBkYTIwOTM5Li5mOWUyNjhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCisjaW5j
bHVkZSAiVjhJc29sYXRlZFdvcmxkLmgiCiAjaW5jbHVkZSAiVjhOUE9iamVjdC5oIgogI2luY2x1
ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTM2NCwxMSArMzY1LDIyIEBA
IHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2V0QWxsV29ybGRzKFZlY3RvcjxET01XcmFwcGVyV29y
bGQqPiYgd29ybGRzKQogCiBTY3JpcHRTdGF0ZSogU2NyaXB0Q29udHJvbGxlcjo6bWFpbldvcmxk
U2NyaXB0U3RhdGUoKQogewotICAgIGlmICghbV9tYWluV29ybGRTY3JpcHRTdGF0ZSkKKyAgICBp
ZiAoIW1fbWFpbldvcmxkU2NyaXB0U3RhdGUpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgICAgICBtX21haW5Xb3JsZFNjcmlwdFN0YXRlLnNldChuZXcgU2NyaXB0
U3RhdGUobV9mcmFtZSwgVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChtX2ZyYW1lKSkpOworICAg
IH0KICAgICByZXR1cm4gbV9tYWluV29ybGRTY3JpcHRTdGF0ZS5nZXQoKTsKIH0KIAorU2NyaXB0
U3RhdGUqIFNjcmlwdENvbnRyb2xsZXI6OmN1cnJlbnRTY3JpcHRTdGF0ZSgpCit7CisgICAgaWYg
KFY4SXNvbGF0ZWRXb3JsZCogd29ybGQgPSBWOElzb2xhdGVkV29ybGQ6OmdldEVudGVyZWQoKSkK
KyAgICAgICAgcmV0dXJuIHdvcmxkLT5zY3JpcHRTdGF0ZSgpOworICAgIEZyYW1lKiBmcmFtZSA9
IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpOworICAgIEFTU0VSVChm
cmFtZSk7CisgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+bWFpbldvcmxkU2NyaXB0U3RhdGUo
KTsKK30KKwogc3RhdGljIE5QT2JqZWN0KiBjcmVhdGVOb1NjcmlwdE9iamVjdCgpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTQzMSw2ICs0NDMsOCBAQCBOUE9iamVjdCogU2NyaXB0Q29u
dHJvbGxlcjo6Y3JlYXRlU2NyaXB0T2JqZWN0Rm9yUGx1Z2luRWxlbWVudChIVE1MUGx1Z0luRWxl
bWVudAogCiB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwoKQogeworICAg
IG1fbWFpbldvcmxkU2NyaXB0U3RhdGUuY2xlYXIoKTsKKwogICAgIC8vIFY4IGJpbmRpbmcgZXhw
ZWN0cyBTY3JpcHRDb250cm9sbGVyOjpjbGVhcldpbmRvd1NoZWxsIG9ubHkgYmUgY2FsbGVkCiAg
ICAgLy8gd2hlbiBhIGZyYW1lIGlzIGxvYWRpbmcgYSBuZXcgcGFnZS4gVjhQcm94eTo6Y2xlYXJG
b3JOYXZpZ2F0aW9uCiAgICAgLy8gY3JlYXRlcyBhIG5ldyBjb250ZXh0IGZvciB0aGUgbmV3IHBh
Z2UuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDI5OGZmZTAuLjU4
ZjE5YmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xNzUsNiAr
MTc1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBTY3JpcHQgc3RhdGUgZm9y
IHRoZSBtYWluIHdvcmxkIGNvbnRleHQuCiAgICAgICAgIFNjcmlwdFN0YXRlKiBtYWluV29ybGRT
Y3JpcHRTdGF0ZSgpOwogCisgICAgICAgIC8vIFJldHVybnMgU2NyaXB0U3RhdGUgZm9yIGN1cnJl
bnQgY29udGV4dC4KKyAgICAgICAgc3RhdGljIFNjcmlwdFN0YXRlKiBjdXJyZW50U2NyaXB0U3Rh
dGUoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBj
b25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOElzb2xhdGVkV29ybGQuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29y
bGQuY3BwCmluZGV4IGNiNjUwOTcuLmRlMTI5MmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhJc29sYXRlZFdvcmxkLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNv
bGF0ZWRXb3JsZC5jcHAKQEAgLTkxLDQgKzkxLDE0IEBAIFY4SXNvbGF0ZWRXb3JsZDo6flY4SXNv
bGF0ZWRXb3JsZCgpCiAgICAgbV9jb250ZXh0LT5kaXNwb3NlSGFuZGxlKCk7CiB9CiAKK1Njcmlw
dFN0YXRlKiBWOElzb2xhdGVkV29ybGQ6OnNjcmlwdFN0YXRlKCkKK3sKKyAgICBpZiAoIW1fc2Ny
aXB0U3RhdGUpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAgICB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gbV9jb250ZXh0LmdldCgpLT5nZXQoKTsKKyAg
ICAgICAgbV9zY3JpcHRTdGF0ZS5zZXQobmV3IFNjcmlwdFN0YXRlKFY4UHJveHk6OnJldHJpZXZl
RnJhbWUoY29udGV4dCksIGNvbnRleHQpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fc2NyaXB0U3Rh
dGUuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SXNvbGF0ZWRXb3JsZC5oCmluZGV4IDYzMTNkYTguLmMzYzE4ZmUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOElzb2xhdGVkV29ybGQuaApAQCAtOTUsNiArOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgRE9NRGF0YVN0b3JlKiBnZXRET01EYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX2RvbURhdGFTdG9yZS5nZXRTdG9yZSgpOyB9CiAKKyAgICAgICAgU2NyaXB0U3RhdGUqIHNj
cmlwdFN0YXRlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnZXRHbG9iYWxPYmplY3Qodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCkKICAgICAgICAgewpAQCAtMTE0LDYgKzExNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gbWFuYWdlIHRoZWlyIGxpZmV0aW1lLgogICAgICAgICBET01EYXRhU3RvcmVIYW5k
bGUgbV9kb21EYXRhU3RvcmU7CiAKKyAgICAgICAgLy8gRklYTUU6IGdldCByaWQgb2YgcmVkdW5k
YW50IG1fY29udGV4dCBmaWVsZC4gVGhlIGNvbnRleHQgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRo
ZSBTY3JpcHRTdGF0ZS4KKyAgICAgICAgT3duUHRyPFNjcmlwdFN0YXRlPiBtX3NjcmlwdFN0YXRl
OworCiAgICAgICAgIHN0YXRpYyBpbnQgaXNvbGF0ZWRXb3JsZENvdW50OwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45618</attachid>
            <date>2009-12-29 11:49:53 -0800</date>
            <delta_ts>2009-12-29 12:12:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scriptcallstack-state3.patch</filename>
            <type>text/plain</type>
            <size>6410</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDI1OGJiMS4uMDkyNDYyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0xMi0yOSAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbdjhdIFVzZSBjdXJyZW50IGlzb2xhdGVkIHdvcmxkJ3MgY29u
dGV4dCBmb3IgU2NyaXB0Q2FsbFN0YWNrLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzAxNgorCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6U2NyaXB0
Q2FsbFN0YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdENhbGxTdGFjazo6c3RhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6bWFpbldvcmxkU2NyaXB0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
Q29udHJvbGxlcjo6Y3VycmVudFNjcmlwdFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmNsZWFyV2luZG93U2hlbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJc29sYXRlZFdvcmxkOjpzY3JpcHRTdGF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmg6CisKIDIwMDktMTItMjggIEFu
ZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERtaXRyeSBUaXRvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2Fs
bFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRl
eCBkOWIyZmNmLi5hMGVlY2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2su
Y3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q2FsbFN0YWNrLmgiCiAKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisKICNpbmNs
dWRlIDx2OC5oPgogCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCkBAIC01Myw3ICs1NSw3IEBAIFNj
cmlwdENhbGxTdGFjayogU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJndW1lbnRzLCB1bnNpZ25lCiAKIFNjcmlwdENhbGxTdGFjazo6U2NyaXB0Q2FsbFN0YWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291
bnQsIFN0cmluZyBzb3VyY2VOYW1lLCBpbnQgc291cmNlTGluZU51bWJlcikKICAgICA6IG1fbGFz
dENhbGxlcihTdHJpbmcoKSwgc291cmNlTmFtZSwgc291cmNlTGluZU51bWJlciwgYXJndW1lbnRz
LCBza2lwQXJndW1lbnRDb3VudCkKLSAgICAsIG1fc2NyaXB0U3RhdGUobmV3IFNjcmlwdFN0YXRl
KFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpKSkKKyAgICAsIG1fc2Ny
aXB0U3RhdGUoU2NyaXB0Q29udHJvbGxlcjo6Y3VycmVudFNjcmlwdFN0YXRlKCkpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmggYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oCmluZGV4IGY2YTdlMzkuLmFhMDQzNjIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaApAQCAtMzUsNyArMzUsNiBAQAog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSB2OCB7CiAgICAgY2xhc3MgQXJndW1lbnRzOwpAQCAtNTIsMTMgKzUxLDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCByZXRyaWV2aW5nIGFu
ZCBzdG9yaW5nIGNhbGwgc3RhY2sgdHJhY2UKICAgICAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIDE7IH0KIAotICAgICAgICBTY3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3NjcmlwdFN0YXRlLmdldCgpOyB9CisgICAgICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFNjcmlwdENhbGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVuc2lnbmVk
IHNraXBBcmd1bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxpbmVOdW1i
ZXIpOwogICAgIAogICAgICAgICBTY3JpcHRDYWxsRnJhbWUgbV9sYXN0Q2FsbGVyOwotICAgICAg
ICBPd25QdHI8U2NyaXB0U3RhdGU+IG1fc2NyaXB0U3RhdGU7CisgICAgICAgIFNjcmlwdFN0YXRl
KiBtX3NjcmlwdFN0YXRlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGRhMjA5MzkuLmY5ZTI2OGYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTEsNiArNTEs
NyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKKyNpbmNsdWRlICJWOElzb2xhdGVkV29ybGQuaCIKICNp
bmNsdWRlICJWOE5QT2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgpAQCAtMzY0LDExICszNjUsMjIgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpnZXRB
bGxXb3JsZHMoVmVjdG9yPERPTVdyYXBwZXJXb3JsZCo+JiB3b3JsZHMpCiAKIFNjcmlwdFN0YXRl
KiBTY3JpcHRDb250cm9sbGVyOjptYWluV29ybGRTY3JpcHRTdGF0ZSgpCiB7Ci0gICAgaWYgKCFt
X21haW5Xb3JsZFNjcmlwdFN0YXRlKQorICAgIGlmICghbV9tYWluV29ybGRTY3JpcHRTdGF0ZSkg
eworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgICAgIG1fbWFpbldv
cmxkU2NyaXB0U3RhdGUuc2V0KG5ldyBTY3JpcHRTdGF0ZShtX2ZyYW1lLCBWOFByb3h5OjptYWlu
V29ybGRDb250ZXh0KG1fZnJhbWUpKSk7CisgICAgfQogICAgIHJldHVybiBtX21haW5Xb3JsZFNj
cmlwdFN0YXRlLmdldCgpOwogfQogCitTY3JpcHRTdGF0ZSogU2NyaXB0Q29udHJvbGxlcjo6Y3Vy
cmVudFNjcmlwdFN0YXRlKCkKK3sKKyAgICBpZiAoVjhJc29sYXRlZFdvcmxkKiB3b3JsZCA9IFY4
SXNvbGF0ZWRXb3JsZDo6Z2V0RW50ZXJlZCgpKQorICAgICAgICByZXR1cm4gd29ybGQtPnNjcmlw
dFN0YXRlKCk7CisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckN1
cnJlbnRDb250ZXh0KCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKyAgICByZXR1cm4gZnJhbWUtPnNj
cmlwdCgpLT5tYWluV29ybGRTY3JpcHRTdGF0ZSgpOworfQorCiBzdGF0aWMgTlBPYmplY3QqIGNy
ZWF0ZU5vU2NyaXB0T2JqZWN0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNDMxLDYg
KzQ0Myw4IEBAIE5QT2JqZWN0KiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVTY3JpcHRPYmplY3RG
b3JQbHVnaW5FbGVtZW50KEhUTUxQbHVnSW5FbGVtZW50CiAKIHZvaWQgU2NyaXB0Q29udHJvbGxl
cjo6Y2xlYXJXaW5kb3dTaGVsbCgpCiB7CisgICAgbV9tYWluV29ybGRTY3JpcHRTdGF0ZS5jbGVh
cigpOworCiAgICAgLy8gVjggYmluZGluZyBleHBlY3RzIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFy
V2luZG93U2hlbGwgb25seSBiZSBjYWxsZWQKICAgICAvLyB3aGVuIGEgZnJhbWUgaXMgbG9hZGlu
ZyBhIG5ldyBwYWdlLiBWOFByb3h5OjpjbGVhckZvck5hdmlnYXRpb24KICAgICAvLyBjcmVhdGVz
IGEgbmV3IGNvbnRleHQgZm9yIHRoZSBuZXcgcGFnZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRD
b250cm9sbGVyLmgKaW5kZXggMjk4ZmZlMC4uNThmMTliYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmgKQEAgLTE3NSw2ICsxNzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIFNjcmlwdCBzdGF0ZSBmb3IgdGhlIG1haW4gd29ybGQgY29udGV4dC4KICAg
ICAgICAgU2NyaXB0U3RhdGUqIG1haW5Xb3JsZFNjcmlwdFN0YXRlKCk7CiAKKyAgICAgICAgLy8g
UmV0dXJucyBTY3JpcHRTdGF0ZSBmb3IgY3VycmVudCBjb250ZXh0LgorICAgICAgICBzdGF0aWMg
U2NyaXB0U3RhdGUqIGN1cnJlbnRTY3JpcHRTdGF0ZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRXb3JsZC5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRXb3JsZC5jcHAKaW5kZXggY2I2NTA5Ny4uZGUxMjky
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29ybGQuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmNwcApAQCAtOTEsNCArOTEs
MTQgQEAgVjhJc29sYXRlZFdvcmxkOjp+VjhJc29sYXRlZFdvcmxkKCkKICAgICBtX2NvbnRleHQt
PmRpc3Bvc2VIYW5kbGUoKTsKIH0KIAorU2NyaXB0U3RhdGUqIFY4SXNvbGF0ZWRXb3JsZDo6c2Ny
aXB0U3RhdGUoKQoreworICAgIGlmICghbV9zY3JpcHRTdGF0ZSkgeworICAgICAgICB2ODo6SGFu
ZGxlU2NvcGUgc2NvcGU7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQg
PSBtX2NvbnRleHQuZ2V0KCktPmdldCgpOworICAgICAgICBtX3NjcmlwdFN0YXRlLnNldChuZXcg
U2NyaXB0U3RhdGUoVjhQcm94eTo6cmV0cmlldmVGcmFtZShjb250ZXh0KSwgY29udGV4dCkpOwor
ICAgIH0KKyAgICByZXR1cm4gbV9zY3JpcHRTdGF0ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29y
bGQuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29sYXRlZFdvcmxkLmgKaW5kZXggNjMxM2Rh
OC4uYzNjMThmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkV29y
bGQuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRXb3JsZC5oCkBAIC05NSw2
ICs5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBET01EYXRhU3RvcmUqIGdl
dERPTURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tRGF0YVN0b3JlLmdldFN0b3JlKCk7
IH0KIAorICAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUoKTsKKwogICAgIHByaXZhdGU6
CiAgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldEdsb2JhbE9iamVjdCh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgICAgICB7CkBAIC0xMTQsNiArMTE2
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBtYW5hZ2UgdGhlaXIgbGlmZXRp
bWUuCiAgICAgICAgIERPTURhdGFTdG9yZUhhbmRsZSBtX2RvbURhdGFTdG9yZTsKIAorICAgICAg
ICAvLyBGSVhNRTogZ2V0IHJpZCBvZiByZWR1bmRhbnQgbV9jb250ZXh0IGZpZWxkLiBUaGUgY29u
dGV4dCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIFNjcmlwdFN0YXRlLgorICAgICAgICBPd25Q
dHI8U2NyaXB0U3RhdGU+IG1fc2NyaXB0U3RhdGU7CisKICAgICAgICAgc3RhdGljIGludCBpc29s
YXRlZFdvcmxkQ291bnQ7CiAgICAgfTsKIAo=
</data>
<flag name="review"
          id="27698"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>