<?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>174738</bug_id>
          
          <creation_ts>2017-07-21 18:24:36 -0700</creation_ts>
          <short_desc>Web Inspector: Refactoring: extract async stack trace logic from InspectorInstrumentation</short_desc>
          <delta_ts>2017-07-25 14:46:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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>174742</blocked>
    
    <blocked>167084</blocked>
    
    <blocked>174739</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1331232</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-07-21 18:24:36 -0700</bug_when>
    <thetext>Notifying the debugger agent of events in the lifecycle of an asynchronous operation should be done by the relevant agent. Currently this is the job of InspectorInstrumenation, which handles timers and rAF. When support is added for XHR.send, postMessage, addEventListener, etc, the layering violation will get worse.

Move the AsynchronousCallType enum to its own file, and other code specific to async stacks to the relevant agent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331239</commentid>
    <comment_count>1</comment_count>
      <attachid>316157</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-07-21 18:46:23 -0700</bug_when>
    <thetext>Created attachment 316157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331661</commentid>
    <comment_count>2</comment_count>
      <attachid>316157</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-24 10:21:54 -0700</bug_when>
    <thetext>Comment on attachment 316157
Patch

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

r- unless everyone else disagrees on the enum vs int signature issue. I wasn&apos;t paying attention when this code originally landed.

&gt; Source/WebCore/inspector/InspectorAsynchronousCallType.h:28
&gt; +namespace WebCore {

Please, use namespace Inspector unless it&apos;s really not possible.

&gt; Source/WebCore/inspector/InspectorAsynchronousCallType.h:31
&gt; +    AnimationFrame = 1,

Nit: RequestAnimationFrame

&gt; Source/WebCore/inspector/InspectorAsynchronousCallType.h:32
&gt; +    Timer,

Nit: can we call this DOMTimer to be consistent with the relevant C++ class?

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:349
&gt; +        debuggerAgent-&gt;didCancelAsyncCall(static_cast&lt;int&gt;(AsynchronousCallType::Timer), timerId);

Nooo stop it :(

EDIT: I see that we did this to avoid mentioning Web-specific concepts in JSC / Debugger.json. I have no such aversion. This code should be in Inspector namespace anyway. Passing around ints is worse than some optional enum values having no meaning in JavaScriptCore proper.

&gt; Source/WebCore/inspector/PageDebuggerAgent.cpp:160
&gt; +    JSC::ExecState* scriptState = document-&gt;execState();

The dereference of document needs a null check, or passed to here by reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331692</commentid>
    <comment_count>3</comment_count>
      <attachid>316157</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-24 11:48:02 -0700</bug_when>
    <thetext>Comment on attachment 316157
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Web Inspector: Refactoring: remove async stack trace logic from InspectorInstrumentation

I&apos;d prefer &quot;extract&quot; over &quot;remove&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331831</commentid>
    <comment_count>4</comment_count>
      <attachid>316338</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-07-24 18:55:37 -0700</bug_when>
    <thetext>Created attachment 316338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332080</commentid>
    <comment_count>5</comment_count>
      <attachid>316338</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-25 14:01:30 -0700</bug_when>
    <thetext>Comment on attachment 316338
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Move AsyncCallType enum to InspectoprDebuggerAgent, which manages async

Nit: InspectorDebuggerAgent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332083</commentid>
    <comment_count>6</comment_count>
      <attachid>316389</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-07-25 14:05:32 -0700</bug_when>
    <thetext>Created attachment 316389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332105</commentid>
    <comment_count>7</comment_count>
      <attachid>316389</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-25 14:46:45 -0700</bug_when>
    <thetext>Comment on attachment 316389
Patch

Clearing flags on attachment: 316389

Committed r219889: &lt;http://trac.webkit.org/changeset/219889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332106</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-25 14:46:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316157</attachid>
            <date>2017-07-21 18:46:23 -0700</date>
            <delta_ts>2017-07-24 18:55:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174738-20170721184621.patch</filename>
            <type>text/plain</type>
            <size>15641</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDYzMGE5OTJiYmZkOGU5
YWU5ODAxNTIzMDA2ODk0NDI2NWIxODIxNy4uNmYwNTU0NzkyYjUyYzY0MzM2N2VhNjU5M2FmM2I2
NGQ0MjI2ZTA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA3LTIxICBNYXR0
IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
ZWZhY3RvcmluZzogcmVtb3ZlIGFzeW5jIHN0YWNrIHRyYWNlIGxvZ2ljIGZyb20gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQ3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBMb2dpYyBmb3Igbm90aWZ5aW5nIHRoZSBkZWJ1Z2dlciBhYm91dCBldmVudHMgaW4g
dGhlIGxpZmUgY3ljbGUgb2YgYW4KKyAgICAgICAgYXN5bmNocm9ub3VzIG9wZXJhdGlvbiBiZWxv
bmdzIGluIHRoZSBhZ2VudCBhc3NvY2lhdGVkIHdpdGggdGhhdCBvcGVyYXRpb24uCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFzeW5jaHJvbm91c0NhbGxUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1l
ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkU2NoZWR1bGVBc3luY0NhbGwpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRDYW5jZWxBbmltYXRpb25G
cmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTct
MDctMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIG1h
a2VfZG9tX2V4Y2VwdGlvbnMucGwgc2NyaXB0IHRoYXQgd2Ugb25seSBoYXZlIERPTUV4Y2VwdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDYyZmNkNGQ5Y2UyNjI5YjExYzVlZmUyMzVmZGQxZjI2ZmVjZTExZDguLjgwZWFkZTIx
Y2MyOTIyMjJmMWVjMzNlNzQyOWY2OWQ1YmQ5MDMxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4NjcsNiArMjg2Nyw3IEBA
CiAJCTY1RkVBODY5MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAv
KiBQYWdlLmNwcCAqLzsgfTsKIAkJNjlBNkNCQUMxQzZCRTQyQzAwQjgzNkU5IC8qIEFjY2Vzc2li
aWxpdHlTVkdFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY5NzEwMTA3MUM2QkUxNTUwMDE4QzdGMSAvKiBBY2Nlc3NpYmlsaXR5U1ZHRWxl
bWVudC5jcHAgKi87IH07CiAJCTY5QTZDQkFEMUM2QkU0MkMwMEI4MzZFOSAvKiBBY2Nlc3NpYmls
aXR5U1ZHRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjk3MTAxMDgxQzZCRTE1NTAwMThDN0YxIC8qIEFjY2Vzc2liaWxpdHlTVkdFbGVtZW50
LmggKi87IH07CisJCTZBRjI3NEUwMUVBQUFBQzEwMEE5RkEyRCAvKiBJbnNwZWN0b3JBc3luY2hy
b25vdXNDYWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkFGMjc0REYxRUFBQUFBRTAwQTlGQTJEIC8qIEluc3BlY3RvckFzeW5jaHJvbm91c0Nh
bGxUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNkEyMkU4NzAxRjEwNDE4NjAwRjU0NkMzIC8qIEluc3BlY3RvckNhbnZhcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkEyMkU4NkYxRjEwNDE4NjAw
RjU0NkMzIC8qIEluc3BlY3RvckNhbnZhcy5oICovOyB9OwogCQk2QTIyRTg3MzFGMTA0MkM0MDBG
NTQ2QzMgLyogSW5zcGVjdG9yQ2FudmFzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZBMjJFODcyMUYxMDQyQzQwMEY1NDZDMyAvKiBJbnNwZWN0b3JD
YW52YXMuY3BwICovOyB9OwogCQk2QTMyRDdDRTFBMTZEOEMwMDA0MTJGMEIgLyogSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkE0QjZENjYxOUQyMjVEODAwNkYxMUQzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmNw
cCAqLzsgfTsKQEAgLTEwNjYwLDYgKzEwNjYxLDcgQEAKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2OTcxMDEwNzFDNkJFMTU1MDAx
OEM3RjEgLyogQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2OTcxMDEwODFDNkJFMTU1MDAxOEM3RjEgLyogQWNjZXNzaWJp
bGl0eVNWR0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVNWR0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkFGMjc0
REYxRUFBQUFBRTAwQTlGQTJEIC8qIEluc3BlY3RvckFzeW5jaHJvbm91c0NhbGxUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluc3BlY3RvckFzeW5jaHJvbm91c0NhbGxUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZBMjJFODZGMUYxMDQxODYwMEY1NDZDMyAvKiBJbnNwZWN0b3JD
YW52YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZBMjJFODcyMUYxMDQyQzQwMEY1NDZDMyAvKiBJbnNwZWN0b3JDYW52
YXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkE0QjZENjQxOUQyMjUxOTAwNkYxMUQzIC8qIEluc3BlY3Rv
ckNhbnZhc0FnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3Rv
ckNhbnZhc0FnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEyNCw2ICsx
NzEyNiw3IEBACiAJCQkJN0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3VwcG9y
dC5oICovLAogCQkJCUI4ODVFOEQyMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwICovLAogCQkJCUI4ODVFOEQzMTFFMDZERDIwMDlGRkJGNCAvKiBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCAqLywKKwkJCQk2QUYyNzRERjFFQUFBQUFF
MDBBOUZBMkQgLyogSW5zcGVjdG9yQXN5bmNocm9ub3VzQ2FsbFR5cGUuaCAqLywKIAkJCQk2QTIy
RTg3MjFGMTA0MkM0MDBGNTQ2QzMgLyogSW5zcGVjdG9yQ2FudmFzLmNwcCAqLywKIAkJCQk2QTIy
RTg2RjFGMTA0MTg2MDBGNTQ2QzMgLyogSW5zcGVjdG9yQ2FudmFzLmggKi8sCiAJCQkJNkE0QjZE
NjYxOUQyMjVEODAwNkYxMUQzIC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmNwcCAqLywKQEAgLTI3
NTk2LDYgKzI3NTk5LDcgQEAKIAkJCQk5MzMwOURGMDA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERjIw
OTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydFRleHRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCODg1RThENTExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QUYyNzRFMDFFQUFBQUMxMDBBOUZBMkQgLyogSW5z
cGVjdG9yQXN5bmNocm9ub3VzQ2FsbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZBMjJFODcw
MUYxMDQxODYwMEY1NDZDMyAvKiBJbnNwZWN0b3JDYW52YXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZBNEI2RDY1MTlEMjI1MTkwMDZGMTFEMyAvKiBJbnNwZWN0b3JDYW52YXNBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQXN5bmNocm9ub3VzQ2FsbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBc3luY2hyb25vdXNDYWxsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExN2Y4ZTRhOGEw
MGQyYjFlZmM2ZDhlZGRiNzY4ZTNmMzc3ZjA1YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXN5bmNocm9ub3VzQ2FsbFR5cGUuaApAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBBc3luY2hyb25vdXNDYWxsVHlwZSB7CisgICAgQW5pbWF0aW9uRnJh
bWUgPSAxLAorICAgIFRpbWVyLAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCBhMWYzMjdiZTMzOTgxM2NmOTU0MmM5YWU0MTBkZDkyOTE2MzE3M2JjLi4zMGVmNjVl
MmRlZDk5ZWJmNmM3NmZjNWFkY2U4NTY4ZDI5NWQwOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yQXN5bmNocm9ub3VzQ2FsbFR5cGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NQWdlbnQuaCIKQEAgLTgyLDExICs4Myw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCBzZXRUaW1lckV2ZW50TmFtZSA9ICJzZXRUaW1lciI7CiBzdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgY2xlYXJUaW1lckV2ZW50TmFtZSA9ICJjbGVhclRpbWVyIjsKIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB0aW1lckZpcmVkRXZlbnROYW1lID0gInRpbWVyRmlyZWQiOwogCi1lbnVtIEFz
eW5jQ2FsbFR5cGUgewotICAgIEFzeW5jQ2FsbFR5cGVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsCi0g
ICAgQXN5bmNDYWxsVHlwZVRpbWVyLAotfTsKLQogbmFtZXNwYWNlIHsKIHN0YXRpYyBIYXNoU2V0
PEluc3RydW1lbnRpbmdBZ2VudHMqPiogc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0ID0gbnVsbHB0
cjsKIH0KQEAgLTEwMywxNyArOTksNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
bGFzdEZyb250ZW5kRGVsZXRlZCgpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoZmFsc2Up
OwogfQogCi1zdGF0aWMgdm9pZCBkaWRTY2hlZHVsZUFzeW5jQ2FsbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBBc3luY0NhbGxUeXBlIHR5cGUsIGludCBjYWxsYmFj
a0lkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBib29sIHNpbmdsZVNob3QpCi17
Ci0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkgewotICAgICAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBjb250ZXh0LmV4ZWNTdGF0ZSgpOwotICAgICAgICBpZiAo
IXNjcmlwdFN0YXRlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGRlYnVnZ2VyQWdl
bnQtPmRpZFNjaGVkdWxlQXN5bmNDYWxsKHNjcmlwdFN0YXRlLCB0eXBlLCBjYWxsYmFja0lkLCBz
aW5nbGVTaG90KTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKQEAgLTM0OCw3ICszMzMsOSBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaQogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcklt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQs
IFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogewogICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRp
bmdBZ2VudHMsIGZhbHNlLCBzZXRUaW1lckV2ZW50TmFtZSwgdHJ1ZSk7Ci0gICAgZGlkU2NoZWR1
bGVBc3luY0NhbGwoaW5zdHJ1bWVudGluZ0FnZW50cywgQXN5bmNDYWxsVHlwZVRpbWVyLCB0aW1l
cklkLCBjb250ZXh0LCBzaW5nbGVTaG90KTsKKworICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KCkpCisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZFNjaGVkdWxlQXN5bmNDYWxsKGNv
bnRleHQuZXhlY1N0YXRlKCksIHN0YXRpY19jYXN0PGludD4oQXN5bmNocm9ub3VzQ2FsbFR5cGU6
OlRpbWVyKSwgdGltZXJJZCwgc2luZ2xlU2hvdCk7CiAKICAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRJbnN0YWxsVGltZXIodGlt
ZXJJZCwgdGltZW91dCwgc2luZ2xlU2hvdCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpKTsKQEAgLTM1OSw3ICszNDYsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbgog
ICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNl
LCBjbGVhclRpbWVyRXZlbnROYW1lLCB0cnVlKTsKIAogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KCkpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENhbmNlbEFzeW5jQ2FsbChB
c3luY0NhbGxUeXBlVGltZXIsIHRpbWVySWQpOworICAgICAgICBkZWJ1Z2dlckFnZW50LT5kaWRD
YW5jZWxBc3luY0NhbGwoc3RhdGljX2Nhc3Q8aW50PihBc3luY2hyb25vdXNDYWxsVHlwZTo6VGlt
ZXIpLCB0aW1lcklkKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW1vdmVUaW1lcih0aW1lcklkLCBmcmFtZUZvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQpAQCAtNDQyLDcgKzQyOSw3IEBAIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxG
aXJlVGltZXJJbXBsKEluc3RyCiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1
bWVudGluZ0FnZW50cywgZmFsc2UsIHRpbWVyRmlyZWRFdmVudE5hbWUsIGZhbHNlKTsKIAogICAg
IGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQt
PndpbGxEaXNwYXRjaEFzeW5jQ2FsbChBc3luY0NhbGxUeXBlVGltZXIsIHRpbWVySWQpOworICAg
ICAgICBkZWJ1Z2dlckFnZW50LT53aWxsRGlzcGF0Y2hBc3luY0NhbGwoc3RhdGljX2Nhc3Q8aW50
PihBc3luY2hyb25vdXNDYWxsVHlwZTo6VGltZXIpLCB0aW1lcklkKTsKIAogICAgIGludCB0aW1l
bGluZUFnZW50SWQgPSAwOwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsK
QEAgLTEwMzYsOCArMTAyMyw5IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwYXVz
ZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChJbnN0cnVtZW50aW5nQWdlbnRzJiBpCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUq
IGZyYW1lKQogewogICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdB
Z2VudHMsIGZhbHNlLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudE5hbWUsIHRydWUpOwotICAg
IGRpZFNjaGVkdWxlQXN5bmNDYWxsKGluc3RydW1lbnRpbmdBZ2VudHMsIEFzeW5jQ2FsbFR5cGVS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQsICpmcmFtZS0+ZG9jdW1lbnQoKSwgdHJ1
ZSk7CiAKKyAgICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRGVidWdn
ZXJBZ2VudC0+ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGZyYW1lLT5kb2N1
bWVudCgpKTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZnJhbWUp
OwogfQpAQCAtMTA0Niw4ICsxMDM0LDggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogewogICAg
IHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCBj
YW5jZWxBbmltYXRpb25GcmFtZUV2ZW50TmFtZSwgdHJ1ZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBkZWJ1Z2dlckFnZW50LT5kaWRDYW5jZWxBc3lu
Y0NhbGwoQXN5bmNDYWxsVHlwZVJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FsbGJhY2tJZCk7Cisg
ICAgaWYgKFBhZ2VEZWJ1Z2dlckFnZW50KiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQt
PmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQpOwogICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENhbmNlbEFuaW1h
dGlvbkZyYW1lKGNhbGxiYWNrSWQsIGZyYW1lKTsKIH0KQEAgLTEwNTYsOCArMTA0NCw4IEBAIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxGaXJlQW5pbWF0aW9uRnJhbWVJCiB7CiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQo
aW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIGFuaW1hdGlvbkZyYW1lRmlyZWRFdmVudE5hbWUs
IGZhbHNlKTsKIAotICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCi0gICAgICAg
IGRlYnVnZ2VyQWdlbnQtPndpbGxEaXNwYXRjaEFzeW5jQ2FsbChBc3luY0NhbGxUeXBlUmVxdWVz
dEFuaW1hdGlvbkZyYW1lLCBjYWxsYmFja0lkKTsKKyAgICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQq
IHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2Vu
dCgpKQorICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShj
YWxsYmFja0lkKTsKIAogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwogICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGQ3MTM3MzZkOWE5YjQxMzdmNTU5ZDEyNmM5ZjEw
YTk0NjVmMzJlYTMuLjA0ZDcyZTg1MjBiMDRkYTlhNDVkZjQxNjg4MzhjMmFlOTJmN2VjZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yQXN5bmNocm9ub3VzQ2FsbFR5cGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgpAQCAtMTUwLDQgKzE1MiwyNiBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50
OjptYWluRnJhbWVOYXZpZ2F0ZWQoKQogICAgIHNldFN1cHByZXNzQWxsUGF1c2VzKGZhbHNlKTsK
IH0KIAordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGlu
dCBjYWxsYmFja0lkLCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaWYgKCFicmVha3BvaW50
c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0
U3RhdGUgPSBkb2N1bWVudC0+ZXhlY1N0YXRlKCk7CisgICAgaWYgKCFzY3JpcHRTdGF0ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZGlkU2NoZWR1bGVBc3luY0NhbGwoc2NyaXB0U3RhdGUsIHN0
YXRpY19jYXN0PGludD4oQXN5bmNocm9ub3VzQ2FsbFR5cGU6OkFuaW1hdGlvbkZyYW1lKSwgY2Fs
bGJhY2tJZCwgdHJ1ZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlQW5p
bWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQpCit7CisgICAgd2lsbERpc3BhdGNoQXN5bmNDYWxs
KHN0YXRpY19jYXN0PGludD4oQXN5bmNocm9ub3VzQ2FsbFR5cGU6OkFuaW1hdGlvbkZyYW1lKSwg
Y2FsbGJhY2tJZCk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpZENhbmNlbEFuaW1h
dGlvbkZyYW1lKGludCBjYWxsYmFja0lkKQoreworICAgIGRpZENhbmNlbEFzeW5jQ2FsbChzdGF0
aWNfY2FzdDxpbnQ+KEFzeW5jaHJvbm91c0NhbGxUeXBlOjpBbmltYXRpb25GcmFtZSksIGNhbGxi
YWNrSWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCmluZGV4IDUyMjAwNTRhOTdjYzJkYTNkMjY2MWFl
ODU3NTkwMjE4NmEyMzYyZjkuLjhhMTZlOWFhY2M0ZDY4OWU0ZmEzMDcxZTFmYmY1Mzk3ZjBmNDcz
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBA
IC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xh
c3MgUGFnZTsKQEAgLTUyLDYgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIG1haW5GcmFtZVN0
b3BwZWRMb2FkaW5nKCk7CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoKTsKIAorICAgIHZv
aWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkLCBEb2N1bWVudCopOwor
ICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCk7CisgICAgdm9p
ZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCk7CisKIHByb3RlY3RlZDoK
ICAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShib29sIGlzQmVp
bmdEZXN0cm95ZWQpIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316338</attachid>
            <date>2017-07-24 18:55:37 -0700</date>
            <delta_ts>2017-07-25 14:05:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174738-20170724185535.patch</filename>
            <type>text/plain</type>
            <size>23070</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODgzNDI3NzliMTc5N2FlNWY5NmQ2ZDhmNWRlY2VhYmVmMGIzYjQzLi40ZjhhYjQ2N2Q4NzAzZjBl
Y2U1NmE4ODJhNDg5NWQxMzdkZmY3MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0wNy0yNCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3Jpbmc6IGV4dHJhY3QgYXN5bmMgc3Rh
Y2sgdHJhY2UgbG9naWMgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDczOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgQXN5bmNDYWxsVHlwZSBl
bnVtIHRvIEluc3BlY3RvcHJEZWJ1Z2dlckFnZW50LCB3aGljaCBtYW5hZ2VzIGFzeW5jCisgICAg
ICAgIHN0YWNrIHRyYWNlcy4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGNhbGwgdHlwZSBpbiBKU0MsIG1h
a2VzIHRoZSByYW5nZSBvZgorICAgICAgICBwb3NzaWJsZSBjYWxsIHR5cGVzIGV4cGxpY2l0LCBh
bmQgaXMgc2FmZXIgdGhhbiBwYXNzaW5nIGludHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojphc3luY0NhbGxJZGVudGlmaWVyKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkU2NoZWR1bGVBc3luY0NhbGwpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDYW5jZWxBc3luY0Nh
bGwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGlz
cGF0Y2hBc3luY0NhbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oOgorCiAyMDE3LTA3LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGVkIEMgTG9vcCBidWlsZCBhZnRlciByMjE5Nzkw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDQzZjA2ZTYwNzE3MjdkN2JiMDM4MjlhZTcxMTYzNzg1OTQ1Nzk4ZjIu
LmRkZjAyMjZjMzk1N2QyZmI5MzU3Mjc1ZDM5NjBhN2YyNDY1MjkzOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MiBAQAorMjAxNy0wNy0yNCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3Jpbmc6IGV4dHJhY3QgYXN5bmMg
c3RhY2sgdHJhY2UgbG9naWMgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbG9jYXRlIEFzeW5jQ2Fs
bFR5cGUgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gdG8gdGhlIGRlYnVnZ2VyCisgICAg
ICAgIGFnZW50LiBQbHVtYmluZyBmb3IgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAgbm90aWZpY2F0
aW9ucyBoYXMgYmVlbiBhZGRlZAorICAgICAgICB0byBQYWdlRGVidWdnZXJBZ2VudCwgd2hpY2gg
aXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGFzeW5jIHN0YWNrIHRyYWNlcy4gCisKKyAgICAg
ICAgKiBkb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2Vydmlj
ZVNjcmlwdGVkQW5pbWF0aW9ucyk6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1l
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bmNlbEFuaW1hdGlvbkZyYW1lSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkaWRTY2hlZHVsZUFzeW5jQ2FsbCk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlcXVlc3RBbmltYXRp
b25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENhbmNlbEFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZSk6CisgICAgICAgIFJlcGxhY2VkIEZy
YW1lIGFuZCBEb2N1bWVudCBwb2ludGVycyB3aXRoIHJlZmVyZW5jZXMgYW5kIG1vdmVkCisgICAg
ICAgIHBvaW50ZXIgdmFsaWRhdGlvbiB1cHN0cmVhbS4KKworICAgICAgICAqIGluc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2Vu
dDo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1
Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VEZWJ1Z2dlckFnZW50OjpkaWRDYW5jZWxBbmltYXRpb25GcmFtZSk6CisgICAgICAgICogaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisKIDIwMTctMDctMjQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEV4Y2VwdGlvbkNvZGUgYSBwcm9wZXIg
ZW51bWVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMDY5OTQw
YWE4NTQ0MWIxMmQ1NzkwODA0MWZiZmI0MzE3NmRmMDg1OC4uODBlYjRmM2U1NjY4N2ZjNTdhZjE3
OTViYzk2MmRhODE5M2M3YjM3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
QEAgLTIyMyw3ICsyMjMsMTIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVD
b25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgYnJlYWtQcm9ncmFt
KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwgYnVpbGRBc3NlcnRQ
YXVzZVJlYXNvbihtZXNzYWdlKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkU2NoZWR1bGVBc3luY0NhbGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGludCBhc3luY0NhbGxU
eXBlLCBpbnQgY2FsbGJhY2tJZGVudGlmaWVyLCBib29sIHNpbmdsZVNob3QpCitJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxJZGVudGlmaWVyIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmFzeW5jQ2FsbElkZW50aWZpZXIoQXN5bmNDYWxsVHlwZSBhc3luY0NhbGxUeXBlLCBpbnQgY2Fs
bGJhY2tJZCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGFzeW5jQ2FsbFR5cGUpLCBjYWxsYmFja0lkKTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRTY2hlZHVsZUFzeW5jQ2FsbChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgQXN5
bmNDYWxsVHlwZSBhc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJhY2tJZCwgYm9vbCBzaW5nbGVTaG90
KQogewogICAgIGlmICghbV9hc3luY1N0YWNrVHJhY2VEZXB0aCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjQzLDE4ICsyNDgsMTggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTY2hl
ZHVsZUFzeW5jQ2FsbChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgaW50IGFzeW4KICAgICAgICAgcGFy
ZW50U3RhY2tUcmFjZSA9IGl0LT52YWx1ZTsKICAgICB9CiAKLSAgICBhdXRvIGlkZW50aWZpZXIg
PSBzdGQ6Om1ha2VfcGFpcihhc3luY0NhbGxUeXBlLCBjYWxsYmFja0lkZW50aWZpZXIpOworICAg
IGF1dG8gaWRlbnRpZmllciA9IGFzeW5jQ2FsbElkZW50aWZpZXIoYXN5bmNDYWxsVHlwZSwgY2Fs
bGJhY2tJZCk7CiAgICAgYXV0byBhc3luY1N0YWNrVHJhY2UgPSBBc3luY1N0YWNrVHJhY2U6OmNy
ZWF0ZShXVEZNb3ZlKGNhbGxTdGFjayksIHNpbmdsZVNob3QsIFdURk1vdmUocGFyZW50U3RhY2tU
cmFjZSkpOwogCiAgICAgbV9wZW5kaW5nQXN5bmNDYWxscy5zZXQoaWRlbnRpZmllciwgV1RGTW92
ZShhc3luY1N0YWNrVHJhY2UpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRDYW5jZWxBc3luY0NhbGwoaW50IGFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkZW50aWZp
ZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENhbmNlbEFzeW5jQ2FsbChBc3lu
Y0NhbGxUeXBlIGFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkKQogewogICAgIGlmICghbV9h
c3luY1N0YWNrVHJhY2VEZXB0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpZGVudGlm
aWVyID0gc3RkOjptYWtlX3BhaXIoYXN5bmNDYWxsVHlwZSwgY2FsbGJhY2tJZGVudGlmaWVyKTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBhc3luY0NhbGxJZGVudGlmaWVyKGFzeW5jQ2FsbFR5cGUs
IGNhbGxiYWNrSWQpOwogICAgIGF1dG8gaXQgPSBtX3BlbmRpbmdBc3luY0NhbGxzLmZpbmQoaWRl
bnRpZmllcik7CiAgICAgaWYgKGl0ID09IG1fcGVuZGluZ0FzeW5jQ2FsbHMuZW5kKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI2OCw3ICsyNzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZENhbmNlbEFzeW5jQ2FsbChpbnQgYXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSQog
ICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEaXNwYXRjaEFzeW5jQ2FsbChpbnQgYXN5bmNDYWxs
VHlwZSwgaW50IGNhbGxiYWNrSWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6d2lsbERpc3BhdGNoQXN5bmNDYWxsKEFzeW5jQ2FsbFR5cGUgYXN5bmNDYWxsVHlwZSwgaW50
IGNhbGxiYWNrSWQpCiB7CiAgICAgaWYgKCFtX2FzeW5jU3RhY2tUcmFjZURlcHRoKQogICAgICAg
ICByZXR1cm47CkBAIC0yNzgsNyArMjgzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
Ojp3aWxsRGlzcGF0Y2hBc3luY0NhbGwoaW50IGFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmEKIAog
ICAgIC8vIEEgY2FsbCBjYW4gYmUgc2NoZWR1bGVkIGJlZm9yZSB0aGUgSW5zcGVjdG9yIGlzIG9w
ZW5lZCwgb3Igd2hpbGUgYXN5bmMgc3RhY2sKICAgICAvLyB0cmFjZXMgYXJlIGRpc2FibGVkLiBJ
ZiBubyBjYWxsIGRhdGEgZXhpc3RzLCBkbyBub3RoaW5nLgotICAgIGF1dG8gaWRlbnRpZmllciA9
IHN0ZDo6bWFrZV9wYWlyKGFzeW5jQ2FsbFR5cGUsIGNhbGxiYWNrSWRlbnRpZmllcik7CisgICAg
YXV0byBpZGVudGlmaWVyID0gYXN5bmNDYWxsSWRlbnRpZmllcihhc3luY0NhbGxUeXBlLCBjYWxs
YmFja0lkKTsKICAgICBhdXRvIGl0ID0gbV9wZW5kaW5nQXN5bmNDYWxscy5maW5kKGlkZW50aWZp
ZXIpOwogICAgIGlmIChpdCA9PSBtX3BlbmRpbmdBc3luY0NhbGxzLmVuZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMTQ1NmRiY2QwNDllN2Jk
MDJlZDdhMjgyOGQ2MDM0ODY1NzUzYzE1OC4uNTFlYjM4ZWQyODhlNTY2MThjMDIwNTA4YzZmN2Ri
ZjBlNTY4YmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtOTEsOSArOTEs
MTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBoYW5kbGVDb25zb2xlQXNzZXJ0KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAKLSAgICB2b2lkIGRpZFNjaGVkdWxlQXN5bmNDYWxsKEpTQzo6RXhlY1N0
YXRlKiwgaW50IGFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkZW50aWZpZXIsIGJvb2wgc2lu
Z2xlU2hvdCk7Ci0gICAgdm9pZCBkaWRDYW5jZWxBc3luY0NhbGwoaW50IGFzeW5jQ2FsbFR5cGUs
IGludCBjYWxsYmFja0lkZW50aWZpZXIpOwotICAgIHZvaWQgd2lsbERpc3BhdGNoQXN5bmNDYWxs
KGludCBhc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJhY2tJZGVudGlmaWVyKTsKKyAgICBlbnVtIGNs
YXNzIEFzeW5jQ2FsbFR5cGUgeworICAgICAgICBET01UaW1lciwKKyAgICAgICAgUmVxdWVzdEFu
aW1hdGlvbkZyYW1lLAorICAgIH07CisKKyAgICB2b2lkIGRpZFNjaGVkdWxlQXN5bmNDYWxsKEpT
Qzo6RXhlY1N0YXRlKiwgQXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQsIGJvb2wgc2luZ2xl
U2hvdCk7CisgICAgdm9pZCBkaWRDYW5jZWxBc3luY0NhbGwoQXN5bmNDYWxsVHlwZSwgaW50IGNh
bGxiYWNrSWQpOworICAgIHZvaWQgd2lsbERpc3BhdGNoQXN5bmNDYWxsKEFzeW5jQ2FsbFR5cGUs
IGludCBjYWxsYmFja0lkKTsKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKICAg
ICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbiBicmVha1JlYXNvbiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRh
KTsKQEAgLTE2MSw3ICsxNjYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBicmVha3BvaW50QWN0
aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFj
dGlvbnMsIEJyZWFrcG9pbnRBY3Rpb25zKiByZXN1bHQpOwogCi0gICAgdHlwZWRlZiBzdGQ6OnBh
aXI8aW50LCBpbnQ+IEFzeW5jQ2FsbElkZW50aWZpZXI7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
dW5zaWduZWQsIGludD4gQXN5bmNDYWxsSWRlbnRpZmllcjsKKyAgICBzdGF0aWMgQXN5bmNDYWxs
SWRlbnRpZmllciBhc3luY0NhbGxJZGVudGlmaWVyKEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFj
a0lkKTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6OlNvdXJjZUlELCBTY3JpcHQ+IFNjcmlw
dHNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEpTQzo6QnJlYWtwb2lu
dElEPj4gQnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEc01hcDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKaW5kZXggN2RlMjYzOWQ4NDNjMDMyNTU5YzlhNjAxYWMzNzU5MzM4YTA0ZGZjMC4uMzljZGQ1
NzI1N2M2NGVhYjcwMzA2ZDQ3YzE4NDQ4OGFhZWQwODlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE3NCw3ICsxNzQs
OCBAQCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OkNhbGxiYWNrSWQgU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyOjpyZWdpc3RlckNhbAogICAgIGNhbGxiYWNrLT5tX2lkID0gaWQ7CiAg
ICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKG1fZG9jdW1lbnQsIGlk
KTsKKyAgICBpZiAobV9kb2N1bWVudCkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKm1fZG9jdW1lbnQsIGlkKTsKIAogICAgIGlmICgh
bV9zdXNwZW5kQ291bnQpCiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CkBAIC0xODYsNyAr
MTg3LDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbENhbGxiYWNr
KENhbGxiYWNrSWQgaWQpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhbGxiYWNrcy5z
aXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9jYWxsYmFja3NbaV0tPm1faWQgPT0gaWQpIHsK
ICAgICAgICAgICAgIG1fY2FsbGJhY2tzW2ldLT5tX2ZpcmVkT3JDYW5jZWxsZWQgPSB0cnVlOwot
ICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYW5jZWxBbmltYXRpb25G
cmFtZShtX2RvY3VtZW50LCBpZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKCptX2RvY3VtZW50LCBpZCk7CiAgICAgICAgICAg
ICBtX2NhbGxiYWNrcy5yZW1vdmUoaSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTIxNCw3ICsyMTUsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2Vy
dmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3VibGUgdGltZXN0YW1wKQogICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBjYWxsYmFja3MpIHsKICAgICAgICAgaWYgKCFjYWxsYmFjay0+bV9maXJlZE9y
Q2FuY2VsbGVkKSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+bV9maXJlZE9yQ2FuY2VsbGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUg
PSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWUobV9kb2N1
bWVudCwgY2FsbGJhY2stPm1faWQpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmlt
YXRpb25GcmFtZSgqbV9kb2N1bWVudCwgY2FsbGJhY2stPm1faWQpOwogICAgICAgICAgICAgaWYg
KGNhbGxiYWNrLT5tX3VzZUxlZ2FjeVRpbWVCYXNlKQogICAgICAgICAgICAgICAgIGNhbGxiYWNr
LT5oYW5kbGVFdmVudChsZWdhY3lIaWdoUmVzTm93TXMpOwogICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCBhMWYzMjdiZTMzOTgxM2NmOTU0MmM5YWU0MTBkZDkyOTE2MzE3M2JjLi4wMTM3
NGE3Y2FiZWZiYmVhMzFlNjU1MGE2ZjFmYjY4ZDI4MmJmNzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODIs
MTEgKzgyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNldFRpbWVyRXZlbnROYW1lID0g
InNldFRpbWVyIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjbGVhclRpbWVyRXZlbnROYW1l
ID0gImNsZWFyVGltZXIiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHRpbWVyRmlyZWRFdmVu
dE5hbWUgPSAidGltZXJGaXJlZCI7CiAKLWVudW0gQXN5bmNDYWxsVHlwZSB7Ci0gICAgQXN5bmND
YWxsVHlwZVJlcXVlc3RBbmltYXRpb25GcmFtZSwKLSAgICBBc3luY0NhbGxUeXBlVGltZXIsCi19
OwotCiBuYW1lc3BhY2Ugewogc3RhdGljIEhhc2hTZXQ8SW5zdHJ1bWVudGluZ0FnZW50cyo+KiBz
X2luc3RydW1lbnRpbmdBZ2VudHNTZXQgPSBudWxscHRyOwogfQpAQCAtMTAzLDE3ICs5OCw2IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXN0RnJvbnRlbmREZWxldGVkKCkKICAg
ICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+c2V0Q2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZChmYWxzZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZFNj
aGVkdWxlQXN5bmNDYWxsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IEFzeW5jQ2FsbFR5cGUgdHlwZSwgaW50IGNhbGxiYWNrSWQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGJvb2wgc2luZ2xlU2hvdCkKLXsKLSAgICBpZiAoSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCgpKSB7Ci0gICAgICAgIEpTQzo6RXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9IGNv
bnRleHQuZXhlY1N0YXRlKCk7Ci0gICAgICAgIGlmICghc2NyaXB0U3RhdGUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgZGVidWdnZXJBZ2VudC0+ZGlkU2NoZWR1bGVBc3luY0NhbGwo
c2NyaXB0U3RhdGUsIHR5cGUsIGNhbGxiYWNrSWQsIHNpbmdsZVNob3QpOwotICAgIH0KLX0KLQog
c3RhdGljIEZyYW1lKiBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBudWxscHRyOwpAQCAt
MzQ4LDcgKzMzMiw5IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhN
TEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNp
bmdsZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcGF1c2VP
bk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIHNldFRpbWVy
RXZlbnROYW1lLCB0cnVlKTsKLSAgICBkaWRTY2hlZHVsZUFzeW5jQ2FsbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBBc3luY0NhbGxUeXBlVGltZXIsIHRpbWVySWQsIGNvbnRleHQsIHNpbmdsZVNob3Qp
OworCisgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgZGVidWdn
ZXJBZ2VudC0+ZGlkU2NoZWR1bGVBc3luY0NhbGwoY29udGV4dC5leGVjU3RhdGUoKSwgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6RE9NVGltZXIsIHRpbWVySWQsIHNpbmds
ZVNob3QpOwogCiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkSW5zdGFsbFRpbWVyKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNo
b3QsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CkBAIC0zNTksNyAr
MzQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVySW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW4KICAgICBwYXVzZU9uTmF0aXZlRXZlbnRJ
Zk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxzZSwgY2xlYXJUaW1lckV2ZW50TmFtZSwg
dHJ1ZSk7CiAKICAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBk
ZWJ1Z2dlckFnZW50LT5kaWRDYW5jZWxBc3luY0NhbGwoQXN5bmNDYWxsVHlwZVRpbWVyLCB0aW1l
cklkKTsKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+ZGlkQ2FuY2VsQXN5bmNDYWxsKEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkKTsKICAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRSZW1vdmVUaW1lcih0aW1lcklkLCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29u
dGV4dCkpOwogfQpAQCAtNDQyLDcgKzQyOCw3IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBsKEluc3RyCiAg
ICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2Us
IHRpbWVyRmlyZWRFdmVudE5hbWUsIGZhbHNlKTsKIAogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KCkpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPndpbGxEaXNwYXRjaEFzeW5jQ2Fs
bChBc3luY0NhbGxUeXBlVGltZXIsIHRpbWVySWQpOworICAgICAgICBkZWJ1Z2dlckFnZW50LT53
aWxsRGlzcGF0Y2hBc3luY0NhbGwoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlw
ZTo6RE9NVGltZXIsIHRpbWVySWQpOwogCiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CiAg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewpAQCAtMTAzMywzNSArMTAxOSwz
NiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZO
ZWVkZWQoSW5zdHJ1bWVudGluZ0FnZW50cyYgaQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5w
YXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpc0RPTUV2ZW50LCBldmVudE5hbWUsIHN5bmNocm9u
b3VzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlcXVlc3RBbmlt
YXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
aW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
CiAgICAgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFs
c2UsIHJlcXVlc3RBbmltYXRpb25GcmFtZUV2ZW50TmFtZSwgdHJ1ZSk7Ci0gICAgZGlkU2NoZWR1
bGVBc3luY0NhbGwoaW5zdHJ1bWVudGluZ0FnZW50cywgQXN5bmNDYWxsVHlwZVJlcXVlc3RBbmlt
YXRpb25GcmFtZSwgY2FsbGJhY2tJZCwgKmZyYW1lLT5kb2N1bWVudCgpLCB0cnVlKTsKIAorICAg
IGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5k
aWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQpOwogICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJl
cXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFja0lkLCBmcmFtZSk7CisgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFja0lkLCBkb2N1bWVudC5mcmFt
ZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1h
dGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBp
bnQgY2FsbGJhY2tJZCwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNl
LCBjYW5jZWxBbmltYXRpb25GcmFtZUV2ZW50TmFtZSwgdHJ1ZSk7CiAKLSAgICBpZiAoSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBkZWJ1Z2dlckFnZW50LT5kaWRDYW5jZWxB
c3luY0NhbGwoQXN5bmNDYWxsVHlwZVJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FsbGJhY2tJZCk7
CisgICAgaWYgKFBhZ2VEZWJ1Z2dlckFnZW50KiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgcGFnZURlYnVnZ2VyQWdl
bnQtPmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQpOwogICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENhbmNlbEFu
aW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGZyYW1lKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQuZnJhbWUoKSk7CiB9
CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBGcmFtZSogZnJhbWUpCitJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFu
aW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHBhdXNlT25OYXRp
dmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCBhbmltYXRpb25GcmFt
ZUZpcmVkRXZlbnROYW1lLCBmYWxzZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJB
Z2VudCgpKQotICAgICAgICBkZWJ1Z2dlckFnZW50LT53aWxsRGlzcGF0Y2hBc3luY0NhbGwoQXN5
bmNDYWxsVHlwZVJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FsbGJhY2tJZCk7CisgICAgaWYgKFBh
Z2VEZWJ1Z2dlckFnZW50KiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
cGFnZURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgcGFnZURlYnVnZ2VyQWdlbnQtPndpbGxGaXJl
QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCk7CiAKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0g
MDsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7Ci0gICAgICAgIHRpbWVs
aW5lQWdlbnQtPndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZnJhbWUpOworICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGRv
Y3VtZW50LmZyYW1lKCkpOwogICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50
LT5pZCgpOwogICAgIH0KICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzAxYzEz
YmRkZjEzZjhmZDUxZTNhNzNkOGMxZWI3NzIyYmIwMjUwNS4uZDU0YjJlYWMxYmI2ZDdkZjI2MTZj
NDg4Nzk5ZmE4ZTgwMGZkZjRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTkzLDkgKzE5Myw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBzdGFydFByb2ZpbGluZyhQYWdlJiwgSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdG9wUHJvZmlsaW5nKFBhZ2Um
LCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCi0gICAgc3RhdGljIHZv
aWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKERvY3VtZW50KiwgaW50IGNhbGxiYWNrSWQpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKERvY3VtZW50KiwgaW50IGNh
bGxiYWNrSWQpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVudCosIGludCBjYWxsYmFja0lkKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmLCBpbnQgY2FsbGJhY2tJ
ZCk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmLCBp
bnQgY2FsbGJhY2tJZCk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiwgaW50IGNhbGxiYWNrSWQpOwogICAg
IHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZShjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmKTsKIAogICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5EYXRhYmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUmVmUHRyPERhdGFiYXNlPiYmLCBjb25zdCBTdHJpbmcmIGRv
bWFpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwpAQCAtMzQ0
LDkgKzM0NCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RvcENvbnNvbGVUaW1pbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBSZWY8SW5zcGVj
dG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYpOwogICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVUaW1lU3Rh
bXBJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIFJlZjxJbnNwZWN0b3I6OlNjcmlw
dEFyZ3VtZW50cz4mJik7CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGludCBjYWxsYmFja0lkLCBGcmFtZSopOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
cXVlc3RBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFj
a0lkLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyB2b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IGNhbGxiYWNrSWQsIERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZUFuaW1hdGlv
bkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IGNhbGxiYWNrSWQsIERvY3VtZW50
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIAogICAgIHN0YXRpYyB2b2lkIHN0YXJ0UHJv
ZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsKQEAgLTExNjUsMjIgKzExNjUsMjIgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKFBhZ2UmIHBhZ2UsIEpTQzo6RXhlY1N0
YXRlKgogICAgIHN0b3BQcm9maWxpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBh
Z2UpLCBleGVjLCB0aXRsZSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKERvY3VtZW50KiBkb2N1bWVudCwgaW50IGNh
bGxiYWNrSWQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlcXVl
c3RBbmltYXRpb25GcmFtZShEb2N1bWVudCYgZG9jdW1lbnQsIGludCBjYWxsYmFja0lkKQogewog
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVxdWVzdEFu
aW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJZCwgZG9jdW1l
bnQtPmZyYW1lKCkpOworICAgICAgICBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVudCk7CiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1l
bnQqIGRvY3VtZW50LCBpbnQgY2FsbGJhY2tJZCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmIGRvY3VtZW50LCBp
bnQgY2FsbGJhY2tJZCkKIHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0g
ICAgICAgIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
Y2FsbGJhY2tJZCwgZG9jdW1lbnQtPmZyYW1lKCkpOworICAgICAgICBkaWRDYW5jZWxBbmltYXRp
b25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRvY3VtZW50KTsK
IH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQqIGRvY3VtZW50LCBp
bnQgY2FsbGJhY2tJZCkKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiBk
b2N1bWVudCwgaW50IGNhbGxiYWNrSWQpCiB7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQotICAgICAgICByZXR1cm4gd2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBj
YWxsYmFja0lkLCBkb2N1bWVudCk7CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBkNzEzNzM2ZDlhOWI0MTM3ZjU1OWQxMjZjOWYxMGE5NDY1ZjMyZWEz
Li4zNmYwNmY1OTgyMGJkZThlNmQwNWI0MWM0MTBlMGJhNDBhN2Y0YjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXJBZ2VudC5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2UuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJs
YXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCkBAIC0xNTAsNCArMTUxLDI2IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdl
bnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCiAgICAgc2V0U3VwcHJlc3NBbGxQYXVzZXMoZmFsc2Up
OwogfQogCit2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
aW50IGNhbGxiYWNrSWQsIERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoIWJyZWFrcG9p
bnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTQzo6RXhlY1N0YXRlKiBzY3Jp
cHRTdGF0ZSA9IGRvY3VtZW50LmV4ZWNTdGF0ZSgpOworICAgIGlmICghc2NyaXB0U3RhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGRpZFNjaGVkdWxlQXN5bmNDYWxsKHNjcmlwdFN0YXRlLCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUsIGNhbGxiYWNrSWQsIHRydWUpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojp3aWxs
RmlyZUFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkKQoreworICAgIHdpbGxEaXNwYXRjaEFz
eW5jQ2FsbChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpSZXF1ZXN0QW5p
bWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQpOworfQorCit2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50Ojpk
aWRDYW5jZWxBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCkKK3sKKyAgICBkaWRDYW5jZWxB
c3luY0NhbGwoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6UmVxdWVzdEFu
aW1hdGlvbkZyYW1lLCBjYWxsYmFja0lkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCA1MjIw
MDU0YTk3Y2MyZGEzZDI2NjFhZTg1NzU5MDIxODZhMjM2MmY5Li4xZDdlYzY4M2QxMTA4NjQyNWJm
MDEwNGQwODYzNGFiMzRiYWU4OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuaApAQCAtMzUsNiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIERvY3VtZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIEluc3Bl
Y3RvclBhZ2VBZ2VudDsKIGNsYXNzIFBhZ2U7CkBAIC01Miw2ICs1MywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtYWluRnJhbWVTdG9wcGVkTG9hZGluZygpOwogICAgIHZvaWQgbWFpbkZyYW1lTmF2
aWdhdGVkKCk7CiAKKyAgICB2b2lkIGRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShpbnQgY2FsbGJh
Y2tJZCwgRG9jdW1lbnQmKTsKKyAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoaW50IGNh
bGxiYWNrSWQpOworICAgIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNr
SWQpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316389</attachid>
            <date>2017-07-25 14:05:32 -0700</date>
            <delta_ts>2017-07-25 14:46:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174738-20170725140531.patch</filename>
            <type>text/plain</type>
            <size>23131</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5ODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjgwODU3NTIwYjc4ZGViNTIyMWI1ZWExMTE3MGY0NzVmMDI1ZDAzLi45NmQ4NGIwMDY0OGYzMWQ0
MjFiZjcyYTdjNDExMWUxNDU5ZjZkMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0wNy0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3Jpbmc6IGV4dHJhY3QgYXN5bmMgc3Rh
Y2sgdHJhY2UgbG9naWMgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDczOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgTW92ZSBBc3luY0NhbGxUeXBlIGVudW0g
dG8gSW5zcGVjdG9yRGVidWdnZXJBZ2VudCwgd2hpY2ggbWFuYWdlcyBhc3luYworICAgICAgICBz
dGFjayB0cmFjZXMuIFRoaXMgcHJlc2VydmVzIHRoZSBjYWxsIHR5cGUgaW4gSlNDLCBtYWtlcyB0
aGUgcmFuZ2Ugb2YKKyAgICAgICAgcG9zc2libGUgY2FsbCB0eXBlcyBleHBsaWNpdCwgYW5kIGlz
IHNhZmVyIHRoYW4gcGFzc2luZyBpbnRzLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YXN5bmNDYWxsSWRlbnRpZmllcik6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNjaGVkdWxlQXN5bmNDYWxsKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ2FuY2VsQXN5bmNDYWxsKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbERpc3BhdGNo
QXN5bmNDYWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaDoKKwogMjAxNy0wNy0yNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgQXV0b21hdGlvbjogYWRkIHN1cHBvcnQgZm9yIHVwbG9hZGluZyBmaWxlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGJmYWRmMDFiZTVlMTVkMWY2ZjFjMTIyMTRmNzYxZDYwYmJlOWJkNTIuLmQ5
ZDM5MmQ3Yjg4ODE2YjIyMzQ2MDRhZDI3ZGVmNTc2NDliNjA3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wNy0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3Jpbmc6IGV4dHJhY3QgYXN5bmMgc3Rh
Y2sgdHJhY2UgbG9naWMgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDczOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgUmVsb2NhdGUgQXN5bmNDYWxsVHlwZSBm
cm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byB0aGUgZGVidWdnZXIKKyAgICAgICAgYWdl
bnQuIFBsdW1iaW5nIGZvciBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBub3RpZmljYXRpb25zIGhh
cyBiZWVuIGFkZGVkCisgICAgICAgIHRvIFBhZ2VEZWJ1Z2dlckFnZW50LCB3aGljaCBpcyByZXNw
b25zaWJsZSBmb3IgbWFuYWdpbmcgYXN5bmMgc3RhY2sgdHJhY2VzLiAKKworICAgICAgICAqIGRv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpyZWdpc3RlckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlU2NyaXB0
ZWRBbmltYXRpb25zKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5p
bWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwpOgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmRpZFNjaGVkdWxlQXN5bmNDYWxsKTogRGVsZXRlZC4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2Vs
QW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgUmVwbGFjZWQgRnJhbWUgYW5k
IERvY3VtZW50IHBvaW50ZXJzIHdpdGggcmVmZXJlbmNlcyBhbmQgbW92ZWQKKyAgICAgICAgcG9p
bnRlciB2YWxpZGF0aW9uIHVwc3RyZWFtLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaWRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdl
bnQ6OndpbGxGaXJlQW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2VyQWdlbnQ6OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuaDoKKwogMjAxNy0wNy0yNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFzeW5jIGltYWdlIGRlY29kaW5nIGZv
ciBsYXJnZSBpbWFnZXMgc2hvdWxkIGJlIGRpc2FibGVkIGFmdGVyIHRoZSBmaXJzdCB0aW1lIGEg
dGlsZSBpcyBwYWludGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDA2
OTk0MGFhODU0NDFiMTJkNTc5MDgwNDFmYmZiNDMxNzZkZjA4NTguLjgwZWI0ZjNlNTY2ODdmYzU3
YWYxNzk1YmM5NjJkYTgxOTNjN2IzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0yMjMsNyArMjIzLDEyIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFu
ZGxlQ29uc29sZUFzc2VydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgICAgIGJyZWFrUHJv
Z3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBc3NlcnQsIGJ1aWxkQXNz
ZXJ0UGF1c2VSZWFzb24obWVzc2FnZSkpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFNjaGVkdWxlQXN5bmNDYWxsKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBpbnQgYXN5bmND
YWxsVHlwZSwgaW50IGNhbGxiYWNrSWRlbnRpZmllciwgYm9vbCBzaW5nbGVTaG90KQorSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsSWRlbnRpZmllciBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojphc3luY0NhbGxJZGVudGlmaWVyKEFzeW5jQ2FsbFR5cGUgYXN5bmNDYWxsVHlwZSwgaW50
IGNhbGxiYWNrSWQpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihhc3luY0NhbGxUeXBlKSwgY2FsbGJhY2tJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkU2NoZWR1bGVBc3luY0NhbGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEFzeW5jQ2FsbFR5cGUgYXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQsIGJvb2wgc2luZ2xl
U2hvdCkKIHsKICAgICBpZiAoIW1fYXN5bmNTdGFja1RyYWNlRGVwdGgpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0MywxOCArMjQ4LDE4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlk
U2NoZWR1bGVBc3luY0NhbGwoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGludCBhc3luCiAgICAgICAg
IHBhcmVudFN0YWNrVHJhY2UgPSBpdC0+dmFsdWU7CiAgICAgfQogCi0gICAgYXV0byBpZGVudGlm
aWVyID0gc3RkOjptYWtlX3BhaXIoYXN5bmNDYWxsVHlwZSwgY2FsbGJhY2tJZGVudGlmaWVyKTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBhc3luY0NhbGxJZGVudGlmaWVyKGFzeW5jQ2FsbFR5cGUs
IGNhbGxiYWNrSWQpOwogICAgIGF1dG8gYXN5bmNTdGFja1RyYWNlID0gQXN5bmNTdGFja1RyYWNl
OjpjcmVhdGUoV1RGTW92ZShjYWxsU3RhY2spLCBzaW5nbGVTaG90LCBXVEZNb3ZlKHBhcmVudFN0
YWNrVHJhY2UpKTsKIAogICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMuc2V0KGlkZW50aWZpZXIsIFdU
Rk1vdmUoYXN5bmNTdGFja1RyYWNlKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkQ2FuY2VsQXN5bmNDYWxsKGludCBhc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJhY2tJZGVu
dGlmaWVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDYW5jZWxBc3luY0NhbGwo
QXN5bmNDYWxsVHlwZSBhc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJhY2tJZCkKIHsKICAgICBpZiAo
IW1fYXN5bmNTdGFja1RyYWNlRGVwdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaWRl
bnRpZmllciA9IHN0ZDo6bWFrZV9wYWlyKGFzeW5jQ2FsbFR5cGUsIGNhbGxiYWNrSWRlbnRpZmll
cik7CisgICAgYXV0byBpZGVudGlmaWVyID0gYXN5bmNDYWxsSWRlbnRpZmllcihhc3luY0NhbGxU
eXBlLCBjYWxsYmFja0lkKTsKICAgICBhdXRvIGl0ID0gbV9wZW5kaW5nQXN5bmNDYWxscy5maW5k
KGlkZW50aWZpZXIpOwogICAgIGlmIChpdCA9PSBtX3BlbmRpbmdBc3luY0NhbGxzLmVuZCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0yNjgsNyArMjczLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRDYW5jZWxBc3luY0NhbGwoaW50IGFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFj
a0kKICAgICBtX3BlbmRpbmdBc3luY0NhbGxzLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsRGlzcGF0Y2hBc3luY0NhbGwoaW50IGFzeW5j
Q2FsbFR5cGUsIGludCBjYWxsYmFja0lkZW50aWZpZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OndpbGxEaXNwYXRjaEFzeW5jQ2FsbChBc3luY0NhbGxUeXBlIGFzeW5jQ2FsbFR5cGUs
IGludCBjYWxsYmFja0lkKQogewogICAgIGlmICghbV9hc3luY1N0YWNrVHJhY2VEZXB0aCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjc4LDcgKzI4Myw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6d2lsbERpc3BhdGNoQXN5bmNDYWxsKGludCBhc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJh
CiAKICAgICAvLyBBIGNhbGwgY2FuIGJlIHNjaGVkdWxlZCBiZWZvcmUgdGhlIEluc3BlY3RvciBp
cyBvcGVuZWQsIG9yIHdoaWxlIGFzeW5jIHN0YWNrCiAgICAgLy8gdHJhY2VzIGFyZSBkaXNhYmxl
ZC4gSWYgbm8gY2FsbCBkYXRhIGV4aXN0cywgZG8gbm90aGluZy4KLSAgICBhdXRvIGlkZW50aWZp
ZXIgPSBzdGQ6Om1ha2VfcGFpcihhc3luY0NhbGxUeXBlLCBjYWxsYmFja0lkZW50aWZpZXIpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IGFzeW5jQ2FsbElkZW50aWZpZXIoYXN5bmNDYWxsVHlwZSwg
Y2FsbGJhY2tJZCk7CiAgICAgYXV0byBpdCA9IG1fcGVuZGluZ0FzeW5jQ2FsbHMuZmluZChpZGVu
dGlmaWVyKTsKICAgICBpZiAoaXQgPT0gbV9wZW5kaW5nQXN5bmNDYWxscy5lbmQoKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDE0NTZkYmNkMDQ5
ZTdiZDAyZWQ3YTI4MjhkNjAzNDg2NTc1M2MxNTguLjUxZWIzOGVkMjg4ZTU2NjE4YzAyMDUwOGM2
ZjdkYmYwZTU2OGJmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTkxLDkg
KzkxLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGFuZGxlQ29uc29sZUFzc2VydChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogCi0gICAgdm9pZCBkaWRTY2hlZHVsZUFzeW5jQ2FsbChKU0M6OkV4
ZWNTdGF0ZSosIGludCBhc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJhY2tJZGVudGlmaWVyLCBib29s
IHNpbmdsZVNob3QpOwotICAgIHZvaWQgZGlkQ2FuY2VsQXN5bmNDYWxsKGludCBhc3luY0NhbGxU
eXBlLCBpbnQgY2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICB2b2lkIHdpbGxEaXNwYXRjaEFzeW5j
Q2FsbChpbnQgYXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWRlbnRpZmllcik7CisgICAgZW51
bSBjbGFzcyBBc3luY0NhbGxUeXBlIHsKKyAgICAgICAgRE9NVGltZXIsCisgICAgICAgIFJlcXVl
c3RBbmltYXRpb25GcmFtZSwKKyAgICB9OworCisgICAgdm9pZCBkaWRTY2hlZHVsZUFzeW5jQ2Fs
bChKU0M6OkV4ZWNTdGF0ZSosIEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkLCBib29sIHNp
bmdsZVNob3QpOworICAgIHZvaWQgZGlkQ2FuY2VsQXN5bmNDYWxsKEFzeW5jQ2FsbFR5cGUsIGlu
dCBjYWxsYmFja0lkKTsKKyAgICB2b2lkIHdpbGxEaXNwYXRjaEFzeW5jQ2FsbChBc3luY0NhbGxU
eXBlLCBpbnQgY2FsbGJhY2tJZCk7CiAgICAgdm9pZCBkaWREaXNwYXRjaEFzeW5jQ2FsbCgpOwog
CiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb24gYnJlYWtSZWFzb24sIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYg
ZGF0YSk7CkBAIC0xNjEsNyArMTY2LDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYnJlYWtwb2lu
dEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JiBhY3Rpb25zLCBCcmVha3BvaW50QWN0aW9ucyogcmVzdWx0KTsKIAotICAgIHR5cGVkZWYgc3Rk
OjpwYWlyPGludCwgaW50PiBBc3luY0NhbGxJZGVudGlmaWVyOworICAgIHR5cGVkZWYgc3RkOjpw
YWlyPHVuc2lnbmVkLCBpbnQ+IEFzeW5jQ2FsbElkZW50aWZpZXI7CisgICAgc3RhdGljIEFzeW5j
Q2FsbElkZW50aWZpZXIgYXN5bmNDYWxsSWRlbnRpZmllcihBc3luY0NhbGxUeXBlLCBpbnQgY2Fs
bGJhY2tJZCk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNDOjpTb3VyY2VJRCwgU2NyaXB0PiBT
Y3JpcHRzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxKU0M6OkJyZWFr
cG9pbnRJRD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IDdkZTI2MzlkODQzYzAzMjU1OWM5YTYwMWFjMzc1OTMzOGEwNGRmYzAuLjM5
Y2RkNTcyNTdjNjRlYWI3MDMwNmQ0N2MxODQ0ODhhYWVkMDg5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNzQsNyAr
MTc0LDggQEAgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpDYWxsYmFja0lkIFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJDYWwKICAgICBjYWxsYmFjay0+bV9pZCA9IGlk
OwogICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShtX2RvY3VtZW50
LCBpZCk7CisgICAgaWYgKG1fZG9jdW1lbnQpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKCptX2RvY3VtZW50LCBpZCk7CiAKICAgICBp
ZiAoIW1fc3VzcGVuZENvdW50KQogICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOwpAQCAtMTg2
LDcgKzE4Nyw3IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpjYW5jZWxDYWxs
YmFjayhDYWxsYmFja0lkIGlkKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWxsYmFj
a3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1fY2FsbGJhY2tzW2ldLT5tX2lkID09IGlk
KSB7CiAgICAgICAgICAgICBtX2NhbGxiYWNrc1tpXS0+bV9maXJlZE9yQ2FuY2VsbGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0
aW9uRnJhbWUobV9kb2N1bWVudCwgaWQpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDYW5jZWxBbmltYXRpb25GcmFtZSgqbV9kb2N1bWVudCwgaWQpOwogICAgICAg
ICAgICAgbV9jYWxsYmFja3MucmVtb3ZlKGkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0yMTQsNyArMjE1LDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6
OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIHRpbWVzdGFtcCkKICAgICBmb3IgKGF1
dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKSB7CiAgICAgICAgIGlmICghY2FsbGJhY2stPm1fZmly
ZWRPckNhbmNlbGxlZCkgewogICAgICAgICAgICAgY2FsbGJhY2stPm1fZmlyZWRPckNhbmNlbGxl
ZCA9IHRydWU7Ci0gICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKG1f
ZG9jdW1lbnQsIGNhbGxiYWNrLT5tX2lkKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJl
QW5pbWF0aW9uRnJhbWUoKm1fZG9jdW1lbnQsIGNhbGxiYWNrLT5tX2lkKTsKICAgICAgICAgICAg
IGlmIChjYWxsYmFjay0+bV91c2VMZWdhY3lUaW1lQmFzZSkKICAgICAgICAgICAgICAgICBjYWxs
YmFjay0+aGFuZGxlRXZlbnQobGVnYWN5SGlnaFJlc05vd01zKTsKICAgICAgICAgICAgIGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggYTFmMzI3YmUzMzk4MTNjZjk1NDJjOWFlNDEwZGQ5MjkxNjMxNzNiYy4u
MDEzNzRhN2NhYmVmYmJlYTMxZTY1NTBhNmYxZmI2OGQyODJiZjc0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTgyLDExICs4Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzZXRUaW1lckV2ZW50TmFt
ZSA9ICJzZXRUaW1lciI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgY2xlYXJUaW1lckV2ZW50
TmFtZSA9ICJjbGVhclRpbWVyIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0aW1lckZpcmVk
RXZlbnROYW1lID0gInRpbWVyRmlyZWQiOwogCi1lbnVtIEFzeW5jQ2FsbFR5cGUgewotICAgIEFz
eW5jQ2FsbFR5cGVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsCi0gICAgQXN5bmNDYWxsVHlwZVRpbWVy
LAotfTsKLQogbmFtZXNwYWNlIHsKIHN0YXRpYyBIYXNoU2V0PEluc3RydW1lbnRpbmdBZ2VudHMq
Piogc19pbnN0cnVtZW50aW5nQWdlbnRzU2V0ID0gbnVsbHB0cjsKIH0KQEAgLTEwMywxNyArOTgs
NiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGFzdEZyb250ZW5kRGVsZXRlZCgp
CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnNldENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoZmFsc2UpOwogfQogCi1zdGF0aWMgdm9pZCBk
aWRTY2hlZHVsZUFzeW5jQ2FsbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBBc3luY0NhbGxUeXBlIHR5cGUsIGludCBjYWxsYmFja0lkLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBib29sIHNpbmdsZVNob3QpCi17Ci0gICAgaWYgKEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQoKSkgewotICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUg
PSBjb250ZXh0LmV4ZWNTdGF0ZSgpOwotICAgICAgICBpZiAoIXNjcmlwdFN0YXRlKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZFNjaGVkdWxlQXN5bmND
YWxsKHNjcmlwdFN0YXRlLCB0eXBlLCBjYWxsYmFja0lkLCBzaW5nbGVTaG90KTsKLSAgICB9Ci19
Ci0KIHN0YXRpYyBGcmFtZSogZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsK
QEAgLTM0OCw3ICszMzIsOSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNl
bmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaQogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9v
bCBzaW5nbGVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewogICAgIHBh
dXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZhbHNlLCBzZXRU
aW1lckV2ZW50TmFtZSwgdHJ1ZSk7Ci0gICAgZGlkU2NoZWR1bGVBc3luY0NhbGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgQXN5bmNDYWxsVHlwZVRpbWVyLCB0aW1lcklkLCBjb250ZXh0LCBzaW5nbGVT
aG90KTsKKworICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRl
YnVnZ2VyQWdlbnQtPmRpZFNjaGVkdWxlQXN5bmNDYWxsKGNvbnRleHQuZXhlY1N0YXRlKCksIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkLCBz
aW5nbGVTaG90KTsKIAogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZEluc3RhbGxUaW1lcih0aW1lcklkLCB0aW1lb3V0LCBzaW5n
bGVTaG90LCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwpAQCAtMzU5
LDcgKzM0NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1l
ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVuCiAgICAgcGF1c2VPbk5hdGl2ZUV2
ZW50SWZOZWVkZWQoaW5zdHJ1bWVudGluZ0FnZW50cywgZmFsc2UsIGNsZWFyVGltZXJFdmVudE5h
bWUsIHRydWUpOwogCiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKLSAgICAg
ICAgZGVidWdnZXJBZ2VudC0+ZGlkQ2FuY2VsQXN5bmNDYWxsKEFzeW5jQ2FsbFR5cGVUaW1lciwg
dGltZXJJZCk7CisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmRpZENhbmNlbEFzeW5jQ2FsbChJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpBc3luY0NhbGxUeXBlOjpET01UaW1lciwgdGltZXJJZCk7CiAg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+ZGlkUmVtb3ZlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpKTsKIH0KQEAgLTQ0Miw3ICs0MjgsNyBAQCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJbnN0
cgogICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMsIGZh
bHNlLCB0aW1lckZpcmVkRXZlbnROYW1lLCBmYWxzZSk7CiAKICAgICBpZiAoSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RGVidWdnZXJBZ2VudCgpKQotICAgICAgICBkZWJ1Z2dlckFnZW50LT53aWxsRGlzcGF0Y2hBc3lu
Y0NhbGwoQXN5bmNDYWxsVHlwZVRpbWVyLCB0aW1lcklkKTsKKyAgICAgICAgZGVidWdnZXJBZ2Vu
dC0+d2lsbERpc3BhdGNoQXN5bmNDYWxsKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2Fs
bFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkKTsKIAogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAw
OwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKQEAgLTEwMzMsMzUgKzEw
MTksMzYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBhdXNlT25OYXRpdmVFdmVu
dElmTmVlZGVkKEluc3RydW1lbnRpbmdBZ2VudHMmIGkKICAgICAgICAgZG9tRGVidWdnZXJBZ2Vu
dC0+cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoaXNET01FdmVudCwgZXZlbnROYW1lLCBzeW5j
aHJvbm91cyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGludCBjYWxsYmFja0lkLCBGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmIGRvY3VtZW50
KQogewogICAgIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGluc3RydW1lbnRpbmdBZ2VudHMs
IGZhbHNlLCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVFdmVudE5hbWUsIHRydWUpOwotICAgIGRpZFNj
aGVkdWxlQXN5bmNDYWxsKGluc3RydW1lbnRpbmdBZ2VudHMsIEFzeW5jQ2FsbFR5cGVSZXF1ZXN0
QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQsICpmcmFtZS0+ZG9jdW1lbnQoKSwgdHJ1ZSk7CiAK
KyAgICBpZiAoUGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRGVidWdnZXJBZ2Vu
dC0+ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGRvY3VtZW50KTsKICAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZnJhbWUpOworICAgICAgICB0aW1l
bGluZUFnZW50LT5kaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2tJZCwgZG9jdW1lbnQu
ZnJhbWUoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYW5jZWxB
bmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgaW50IGNhbGxiYWNrSWQsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgaW50IGNhbGxiYWNrSWQsIERvY3VtZW50JiBkb2N1bWVudCkK
IHsKICAgICBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBm
YWxzZSwgY2FuY2VsQW5pbWF0aW9uRnJhbWVFdmVudE5hbWUsIHRydWUpOwogCi0gICAgaWYgKElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgZGVidWdnZXJBZ2VudC0+ZGlkQ2Fu
Y2VsQXN5bmNDYWxsKEFzeW5jQ2FsbFR5cGVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNr
SWQpOworICAgIGlmIChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIHBhZ2VEZWJ1Z2dl
ckFnZW50LT5kaWRDYW5jZWxBbmltYXRpb25GcmFtZShjYWxsYmFja0lkKTsKICAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDYW5j
ZWxBbmltYXRpb25GcmFtZShjYWxsYmFja0lkLCBmcmFtZSk7CisgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGRvY3VtZW50LmZyYW1lKCkp
OwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqIGZyYW1lKQorSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZp
cmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgaW50IGNhbGxiYWNrSWQsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBwYXVzZU9u
TmF0aXZlRXZlbnRJZk5lZWRlZChpbnN0cnVtZW50aW5nQWdlbnRzLCBmYWxzZSwgYW5pbWF0aW9u
RnJhbWVGaXJlZEV2ZW50TmFtZSwgZmFsc2UpOwogCi0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoKSkKLSAgICAgICAgZGVidWdnZXJBZ2VudC0+d2lsbERpc3BhdGNoQXN5bmNDYWxs
KEFzeW5jQ2FsbFR5cGVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGNhbGxiYWNrSWQpOworICAgIGlm
IChQYWdlRGVidWdnZXJBZ2VudCogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLnBhZ2VEZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT53aWxs
RmlyZUFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQpOwogCiAgICAgaW50IHRpbWVsaW5lQWdlbnRJ
ZCA9IDA7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewotICAgICAgICB0
aW1lbGluZUFnZW50LT53aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGZyYW1lKTsK
KyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShjYWxsYmFja0lk
LCBkb2N1bWVudC5mcmFtZSgpKTsKICAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVB
Z2VudC0+aWQoKTsKICAgICB9CiAgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGMw
MWMxM2JkZGYxM2Y4ZmQ1MWUzYTczZDhjMWViNzcyMmJiMDI1MDUuLmQ1NGIyZWFjMWJiNmQ3ZGYy
NjE2YzQ4ODc5OWZhOGU4MDBmZGY0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE5Myw5ICsxOTMsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRQcm9maWxpbmcoUGFnZSYsIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZyhQ
YWdlJiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAotICAgIHN0YXRp
YyB2b2lkIGRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShEb2N1bWVudCosIGludCBjYWxsYmFja0lk
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZShEb2N1bWVudCosIGlu
dCBjYWxsYmFja0lkKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxGaXJlQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQqLCBpbnQgY2FsbGJhY2tJZCk7CisgICAg
c3RhdGljIHZvaWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiwgaW50IGNhbGxi
YWNrSWQpOworICAgIHN0YXRpYyB2b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKERvY3VtZW50
JiwgaW50IGNhbGxiYWNrSWQpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgd2lsbEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVudCYsIGludCBjYWxsYmFja0lkKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaXJlQW5pbWF0aW9uRnJhbWUoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJlZlB0cjxEYXRhYmFzZT4mJiwgY29uc3QgU3RyaW5n
JiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKQEAg
LTM0NCw5ICszNDQsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHN0b3BDb25zb2xlVGlt
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUmVmPElu
c3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmKTsKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlVGlt
ZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBSZWY8SW5zcGVjdG9yOjpT
Y3JpcHRBcmd1bWVudHM+JiYpOwogCi0gICAgc3RhdGljIHZvaWQgZGlkUmVxdWVzdEFuaW1hdGlv
bkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IGNhbGxiYWNrSWQsIEZyYW1lKik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgY2Fs
bGJhY2tJZCwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25G
cmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYp
OworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVBbmlt
YXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBEb2N1
bWVudCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAKICAgICBzdGF0aWMgdm9pZCBzdGFy
dFByb2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiB0aXRsZSk7CkBAIC0xMTY1LDIyICsxMTY1LDIyIEBAIGlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcFByb2ZpbGluZyhQYWdlJiBwYWdlLCBKU0M6OkV4
ZWNTdGF0ZSoKICAgICBzdG9wUHJvZmlsaW5nSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSwgZXhlYywgdGl0bGUpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShEb2N1bWVudCogZG9jdW1lbnQsIGlu
dCBjYWxsYmFja0lkKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmIGRvY3VtZW50LCBpbnQgY2FsbGJhY2tJZCkK
IHsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFJlcXVl
c3RBbmltYXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRv
Y3VtZW50LT5mcmFtZSgpKTsKKyAgICAgICAgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJZCwgZG9jdW1lbnQpOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKERv
Y3VtZW50KiBkb2N1bWVudCwgaW50IGNhbGxiYWNrSWQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiBkb2N1bWVu
dCwgaW50IGNhbGxiYWNrSWQpCiB7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQp
KQotICAgICAgICBkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNhbGxiYWNrSWQsIGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICAgICAgZGlkQ2FuY2VsQW5p
bWF0aW9uRnJhbWVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVu
dCk7CiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3VtZW50KiBkb2N1bWVu
dCwgaW50IGNhbGxiYWNrSWQpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVu
dCYgZG9jdW1lbnQsIGludCBjYWxsYmFja0lkKQogewogICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50
KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAg
ICAgIHJldHVybiB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgY2FsbGJhY2tJZCwgZG9jdW1lbnQpOwogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggZDcxMzczNmQ5YTliNDEzN2Y1NTlkMTI2YzlmMTBhOTQ2NWYz
MmVhMy4uMzZmMDZmNTk4MjBiZGU4ZTZkMDViNDFjNDEwZTBiYTQwYTdmNGIxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyQWdlbnQuaCIKIAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JP
dmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgpAQCAtMTUwLDQgKzE1MSwyNiBAQCB2b2lkIFBhZ2VEZWJ1Z2dl
ckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoKQogICAgIHNldFN1cHByZXNzQWxsUGF1c2VzKGZh
bHNlKTsKIH0KIAordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZy
YW1lKGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgaWYgKCFicmVh
a3BvaW50c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU0M6OkV4ZWNTdGF0ZSog
c2NyaXB0U3RhdGUgPSBkb2N1bWVudC5leGVjU3RhdGUoKTsKKyAgICBpZiAoIXNjcmlwdFN0YXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICBkaWRTY2hlZHVsZUFzeW5jQ2FsbChzY3JpcHRTdGF0
ZSwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6UmVxdWVzdEFuaW1hdGlv
bkZyYW1lLCBjYWxsYmFja0lkLCB0cnVlKTsKK30KKwordm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6
d2lsbEZpcmVBbmltYXRpb25GcmFtZShpbnQgY2FsbGJhY2tJZCkKK3sKKyAgICB3aWxsRGlzcGF0
Y2hBc3luY0NhbGwoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6QXN5bmNDYWxsVHlwZTo6UmVxdWVz
dEFuaW1hdGlvbkZyYW1lLCBjYWxsYmFja0lkKTsKK30KKwordm9pZCBQYWdlRGVidWdnZXJBZ2Vu
dDo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQpCit7CisgICAgZGlkQ2Fu
Y2VsQXN5bmNDYWxsKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OlJlcXVl
c3RBbmltYXRpb25GcmFtZSwgY2FsbGJhY2tJZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXgg
NTIyMDA1NGE5N2NjMmRhM2QyNjYxYWU4NTc1OTAyMTg2YTIzNjJmOS4uMWQ3ZWM2ODNkMTEwODY0
MjViZjAxMDRkMDg2MzRhYjM0YmFlODkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJ
bnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBQYWdlOwpAQCAtNTIsNiArNTMsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgbWFpbkZyYW1lU3RvcHBlZExvYWRpbmcoKTsKICAgICB2b2lkIG1haW5GcmFt
ZU5hdmlnYXRlZCgpOwogCisgICAgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaW50IGNh
bGxiYWNrSWQsIERvY3VtZW50Jik7CisgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGlu
dCBjYWxsYmFja0lkKTsKKyAgICB2b2lkIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGludCBjYWxs
YmFja0lkKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZW5hYmxlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>