<?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>45974</bug_id>
          
          <creation_ts>2010-09-17 10:48:02 -0700</creation_ts>
          <short_desc>Web Inspector: refactoring. getBackendSettings was renamed to getInspectorState.</short_desc>
          <delta_ts>2010-09-20 08:48:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>280732</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-17 10:48:02 -0700</bug_when>
    <thetext>We have a lot of flags inside Inspector.
Some of them are settings, the others are the runtime state of inspector.

It&apos;d be better to transfer these flags to frontend side and persist/restore to/from browser (chromium specific) together as the Inspector state.
As result we can drop separate functions for persisting/restoring the state of resourceTracking and timelineProfiler and other inspector state flags in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280786</commentid>
    <comment_count>1</comment_count>
      <attachid>67932</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-17 12:25:39 -0700</bug_when>
    <thetext>Created attachment 67932
[patch] initial version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281485</commentid>
    <comment_count>2</comment_count>
      <attachid>67932</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-20 04:09:06 -0700</bug_when>
    <thetext>Comment on attachment 67932
[patch] initial version.

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

&gt; WebCore/inspector/Inspector.idl:101
&gt; +        [handler=Controller] void getInspectorState(out Object state);

I think we should have domain-specific states. Like Debugging will have &apos;breakpointsActive&apos;, DOM will have searching for node and such.

&gt; WebCore/inspector/InspectorController.cpp:124
&gt; +static const char* const timelineProfilerEnabledSettingName = &quot;timelineProfilerEnabled&quot;;

This is not a setting name.

&gt; WebCore/inspector/InspectorController.cpp:274
&gt; +    inspectorState-&gt;getBoolean(resourceTrackingEnabledSettingName, &amp;m_resourceTrackingEnabled);

You should not mix settings with state.

&gt; WebCore/inspector/InspectorController.cpp:1156
&gt; +void InspectorController::setResourceTracking(bool enable)

setResourceTrackingEnabled

&gt; WebKit/chromium/src/WebDevToolsAgentImpl.h:96
&gt; +    virtual void persistInspectorState(const WTF::String&amp;);

This will break canaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281520</commentid>
    <comment_count>3</comment_count>
      <attachid>68077</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-20 07:04:27 -0700</bug_when>
    <thetext>Created attachment 68077
[patch] second iteration

&gt;&gt; WebCore/inspector/Inspector.idl:101
&gt;&gt; +        [handler=Controller] void getInspectorState(out Object state);

&gt; I think we should have domain-specific states. Like Debugging will have &apos;breakpointsActive&apos;, DOM will have searching for node and such.

Right now we have very small set of flags whose lifetime is not matched with lifetime of the frontend.
As far as we are using JSON Object as the container for these flags it will be quite simple to extend the set of flags with new properties in the future.

&gt;&gt; WebCore/inspector/InspectorController.cpp:124
&gt;&gt; +static const char* const timelineProfilerEnabledSettingName = &quot;timelineProfilerEnabled&quot;;

&gt;This is not a setting name.

done

&gt;&gt; WebCore/inspector/InspectorController.cpp:274
&gt;&gt; +    inspectorState-&gt;getBoolean(resourceTrackingEnabledSettingName, &amp;m_resourceTrackingEnabled);

&gt; You should not mix settings with state.

done.

&gt;&gt; WebCore/inspector/InspectorController.cpp:1156
&gt;&gt; +void InspectorController::setResourceTracking(bool enable)

&gt;setResourceTrackingEnabled

done.

&gt; WebKit/chromium/src/WebDevToolsAgentImpl.h:96
&gt; +    virtual void persistInspectorState(const WTF::String&amp;);

This will break canaries.

That change is affecting the interface between WebCore and WebKit.
Chromium part is stay untouched.
Try bot is fine with these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281530</commentid>
    <comment_count>4</comment_count>
      <attachid>68077</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-09-20 07:33:13 -0700</bug_when>
    <thetext>Comment on attachment 68077
[patch] second iteration

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

r+ with nits.

&gt; WebCore/inspector/InspectorController.cpp:130
&gt; +static const char* const timelineProfilerEnabledStateName = &quot;timelineProfilerEnabled&quot;;

Can we extract these into a separate class?

&gt; WebCore/inspector/InspectorController.cpp:261
&gt; +void InspectorController::saveInspectorState()

updateInspectorStateCookie

&gt; WebCore/inspector/InspectorController.cpp:267
&gt; +    m_client-&gt;saveInspectorState(state-&gt;toJSONString());

Save is a bad name for this method. m_client-&gt;updateInspectorStateCookie?

&gt; WebCore/inspector/InspectorController.cpp:270
&gt; +void InspectorController::restoreInspectorState(const String&amp; inspectorStateString)

restoreInspectorStateFromCookie ?

&gt; WebCore/inspector/InspectorController.cpp:503
&gt; +void InspectorController::setMonitoringXHREnabled(bool enable, bool* newState)

nit: enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281575</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-09-20 08:48:06 -0700</bug_when>
    <thetext>Committed r67852
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/src/WebDevToolsAgentImpl.cpp
	M	WebKit/chromium/src/InspectorClientImpl.h
	M	WebKit/chromium/src/WebDevToolsAgentImpl.h
	M	WebKit/chromium/src/InspectorClientImpl.cpp
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/Inspector.idl
	M	WebCore/inspector/InspectorClient.h
	M	WebCore/inspector/front-end/ResourcesPanel.js
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/Settings.js
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/InspectorController.h
	M	LayoutTests/http/tests/inspector/console-xhr-logging.html
	M	LayoutTests/inspector/report-API-errors-expected.txt
	M	LayoutTests/inspector/report-API-errors.html
	M	LayoutTests/ChangeLog
r67852 = 9777aacd90a8a72436471a522711fe871b390d1b (refs/remotes/trunk)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67932</attachid>
            <date>2010-09-17 12:25:39 -0700</date>
            <delta_ts>2010-09-20 07:04:27 -0700</delta_ts>
            <desc>[patch] initial version.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20001</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGVjN2ZhMi4uNWZlZDViNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wOS0xNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3JpbmcuIGdldEJhY2tl
bmRTZXR0aW5ncyB3YXMgcmVuYW1lZCB0byBnZXRJbnNwZWN0b3JTdGF0ZS4KKworICAgICAgICBX
ZSBoYXZlIGEgbG90IG9mIGZsYWdzIGluc2lkZSBJbnNwZWN0b3IuCisgICAgICAgIFNvbWUgb2Yg
dGhlbSBhcmUgc2V0dGluZ3MsIHRoZSBvdGhlcnMgYXJlIHRoZSBydW50aW1lIHN0YXRlIG9mIGlu
c3BlY3Rvci4KKyAgICAgICAgSXQnZCBiZSBiZXR0ZXIgdG8gdHJhbnNmZXIgdGhlc2UgZmxhZ3Mg
dG8gZnJvbnRlbmQgc2lkZSBhbmQgcGVyc2lzdC9yZXN0b3JlCisgICAgICAgIHRvL2Zyb20gYnJv
d3NlciAoY2hyb21pdW0gc3BlY2lmaWMpIHRvZ2V0aGVyIGFzIHRoZSBJbnNwZWN0b3Igc3RhdGUu
CisgICAgICAgIEFzIHJlc3VsdCB3ZSBjYW4gZHJvcCBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIHBl
cnNpc3RpbmcvcmVzdG9yaW5nIHRoZSBzdGF0ZSBvZgorICAgICAgICByZXNvdXJjZVRyYWNraW5n
IGFuZCB0aW1lbGluZVByb2ZpbGVyIGFuZCBvdGhlciBpbnNwZWN0b3Igc3RhdGUgZmxhZ3MgaW4g
dGhlIGZ1dHVyZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU5NzQKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudDo6cGVyc2lzdEluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpzYXZlQXBwbGljYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpnZXRJbnNwZWN0b3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRJbnNwZWN0b3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZVRyYWNraW5nKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZVNldHRpbmdzTG9hZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VGltZWxpbmVQcm9maWxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVGltZWxpbmVQcm9maWxl
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNldHRpbmdzLmluaXRpYWxpemUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZS5wb3B1bGF0ZUlu
c3BlY3RvclN0YXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgorCiAy
MDEwLTA5LTE3ICBMdWNhcyBEZSBNYXJjaGkgIDxsdWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9i
aT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguIEFkZCBmaWxlcyBtaXNzZWQgaW4g
cjY3NzA0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggN2RhZDlhZi4uZmQzZDhjYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC05OCw2ICs5OCw3IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKTsK
IAogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGdldFNldHRpbmdzKG91dCBPYmpl
Y3Qgc2V0dGluZ3MpOworICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGdldEluc3Bl
Y3RvclN0YXRlKG91dCBPYmplY3Qgc3RhdGUpOwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVy
XSB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIFN0cmluZyBwYW5lbE5hbWUpOwogCiAgICAg
ICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoaW4g
U3RyaW5nIHNldHRpbmdzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYWNk
OGIyOC4uMDkyMjFjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTU0LDEw
ICs1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBOYXZpZ2F0aW9uIGNhbiBjYXVzZSBzb21lIFdlYktp
dCBpbXBsZW1lbnRhdGlvbnMgdG8gY2hhbmdlIHRoZSB2aWV3IC8gcGFnZSAvIGluc3BlY3RvciBj
b250cm9sbGVyIGluc3RhbmNlLgogICAgIC8vIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIGluc3Bl
Y3RvciBjb250cm9sbGVyIHN0YXRlcyB0aGF0IHNob3VsZCBzdXJ2aXZlIG5hdmlnYXRpb24gKHN1
Y2ggYXMgdHJhY2tpbmcgcmVzb3VyY2VzCiAgICAgLy8gb3IgcmVjb3JkaW5nIHRpbWVsaW5lKS4g
Rm9sbG93aW5nIGNhbGxiYWNrcyBhbGxvdyBlbWJlZGRlcnMgdG8gdHJhY2sgdGhlc2Ugc3RhdGVz
LgotICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpIHsgfTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VUcmFja2luZ1dhc0Rpc2FibGVkKCkgeyB9OwotICAgIHZp
cnR1YWwgdm9pZCB0aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpIHsgfTsKLSAgICB2aXJ0dWFs
IHZvaWQgdGltZWxpbmVQcm9maWxlcldhc1N0b3BwZWQoKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IHBlcnNpc3RJbnNwZWN0b3JTdGF0ZShjb25zdCBTdHJpbmcmKSB7IH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDczMTI2ZDcuLjYzOWY0ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC0xMTksMTEgKzExOSwxNCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBmcm9udGVu
ZFNldHRpbmdzU2V0dGluZ05hbWUgPSAiZnJvbnRlbmRTZXR0aW5ncyI7CiBzdGF0aWMgY29uc3Qg
Y2hhciogY29uc3QgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWRTZXR0aW5nTmFtZSA9ICJyZXNvdXJj
ZVRyYWNraW5nRW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdGltZWxpbmVQcm9m
aWxlckVuYWJsZWRTZXR0aW5nTmFtZSA9ICJ0aW1lbGluZVByb2ZpbGVyRW5hYmxlZCI7CiBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgZGVidWdnZXJFbmFibGVkU2V0dGluZ05hbWUgPSAiZGVidWdn
ZXJFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBwcm9maWxlckVuYWJsZWRTZXR0
aW5nTmFtZSA9ICJwcm9maWxlckVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGlu
c3BlY3RvckF0dGFjaGVkSGVpZ2h0TmFtZSA9ICJpbnNwZWN0b3JBdHRhY2hlZEhlaWdodCI7CiBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgbGFzdEFjdGl2ZVBhbmVsID0gImxhc3RBY3RpdmVQYW5l
bCI7CisKIGNvbnN0IGNoYXIqIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OkVsZW1lbnRzUGFu
ZWwgPSAiZWxlbWVudHMiOwogY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Q29uc29sZVBhbmVsID0gImNvbnNvbGUiOwogY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6U2NyaXB0c1BhbmVsID0gInNjcmlwdHMiOwpAQCAtMTMzLDEyICsxMzYsNiBAQCBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgbW9uaXRvcmluZ1hIUlNldHRpbmdOYW1lID0gInhock1v
bml0b3IiOwogCiBzdGF0aWMgaW50IGNvbm5lY3RlZEZyb250ZW5kQ291bnQgPSAwOwogCi1jb25z
dCBTdHJpbmcmIEluc3BlY3RvckNvbnRyb2xsZXI6OmZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFt
ZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNldHRpbmdOYW1lLCAoImZy
b250ZW5kU2V0dGluZ3MiKSk7Ci0gICAgcmV0dXJuIHNldHRpbmdOYW1lOwotfQotCiBjb25zdCBT
dHJpbmcmIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGlu
Z05hbWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzZXR0aW5nTmFtZSwg
KCJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCIpKTsKQEAgLTI0Miw3ICsyMzksNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNldFNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2F2ZUFwcGxpY2F0aW9u
U2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKIHsKLSAgICBzZXRTZXR0aW5nKEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpLCBzZXR0aW5ncyk7
CisgICAgc2V0U2V0dGluZyhmcm9udGVuZFNldHRpbmdzU2V0dGluZ05hbWUsIHNldHRpbmdzKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzYXZlU2Vzc2lvblNldHRpbmdzKGNvbnN0
IFN0cmluZyYgc2V0dGluZ3NKU09OKQpAQCAtMjUwLDIwICsyNDcsNDUgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzYXZlU2Vzc2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3NK
U09OKQogICAgIG1fc2Vzc2lvblNldHRpbmdzID0gSW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTihz
ZXR0aW5nc0pTT04pOwogfQogCi1TdHJpbmcgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0QmFja2Vu
ZFNldHRpbmdzKCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0SW5zcGVjdG9yU3RhdGUo
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHJ1bnRpbWVTZXR0aW5ncyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
cnVudGltZVNldHRpbmdzLT5zZXRCb29sZWFuKG1vbml0b3JpbmdYSFJTZXR0aW5nTmFtZSwgbV9t
b25pdG9yaW5nWEhSKTsKLSAgICBydW50aW1lU2V0dGluZ3MtPnNldEJvb2xlYW4ocmVzb3VyY2VU
cmFja2luZ0VuYWJsZWRTZXR0aW5nTmFtZSwgbV9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCk7Ci0g
ICAgcmV0dXJuIHJ1bnRpbWVTZXR0aW5ncy0+dG9KU09OU3RyaW5nKCk7CisgICAgKCpzdGF0ZSkt
PnNldEJvb2xlYW4obW9uaXRvcmluZ1hIUlNldHRpbmdOYW1lLCBtX21vbml0b3JpbmdYSFIpOwor
ICAgICgqc3RhdGUpLT5zZXRCb29sZWFuKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05h
bWUsIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQpOworfQorCitTdHJpbmcgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Z2V0SW5zcGVjdG9yU3RhdGUoKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IHN0YXRlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBnZXRJbnNwZWN0b3JT
dGF0ZSgmc3RhdGUpOworICAgIHJldHVybiBzdGF0ZS0+dG9KU09OU3RyaW5nKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5zcGVjdG9yU3RhdGUoY29uc3QgU3RyaW5nJiBp
bnNwZWN0b3JTdGF0ZVN0cmluZykKK3sKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGluc3Bl
Y3RvclN0YXRlVmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGluc3BlY3RvclN0YXRl
U3RyaW5nKTsKKyAgICBpZiAoIWluc3BlY3RvclN0YXRlVmFsdWUpCisgICAgICAgIHJldHVybjsK
KworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGluc3BlY3RvclN0YXRlID0gaW5zcGVjdG9y
U3RhdGVWYWx1ZS0+YXNPYmplY3QoKTsKKyAgICBpZiAoIWluc3BlY3RvclN0YXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnNwZWN0b3JTdGF0ZS0+Z2V0Qm9vbGVhbihtb25pdG9yaW5nWEhS
U2V0dGluZ05hbWUsICZtX21vbml0b3JpbmdYSFIpOworICAgIGluc3BlY3RvclN0YXRlLT5nZXRC
b29sZWFuKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05hbWUsICZtX3Jlc291cmNlVHJh
Y2tpbmdFbmFibGVkKTsKKworICAgIGJvb2wgdGltZWxpbmVQcm9maWxlckVuYWJsZWQgPSBmYWxz
ZTsKKyAgICBpbnNwZWN0b3JTdGF0ZS0+Z2V0Qm9vbGVhbih0aW1lbGluZVByb2ZpbGVyRW5hYmxl
ZFNldHRpbmdOYW1lLCAmdGltZWxpbmVQcm9maWxlckVuYWJsZWQpOworICAgIGlmICh0aW1lbGlu
ZVByb2ZpbGVyRW5hYmxlZCkKKyAgICAgICAgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAg
ZWxzZQorICAgICAgICBzdG9wVGltZWxpbmVQcm9maWxlcigpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmdldFNldHRpbmdzKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBzZXR0aW5n
cykKIHsKICAgICAqc2V0dGluZ3MgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICgq
c2V0dGluZ3MpLT5zZXRTdHJpbmcoImFwcGxpY2F0aW9uIiwgc2V0dGluZyhmcm9udGVuZFNldHRp
bmdzU2V0dGluZ05hbWUoKSkpOworICAgICgqc2V0dGluZ3MpLT5zZXRTdHJpbmcoImFwcGxpY2F0
aW9uIiwgc2V0dGluZyhmcm9udGVuZFNldHRpbmdzU2V0dGluZ05hbWUpKTsKICAgICAoKnNldHRp
bmdzKS0+c2V0U3RyaW5nKCJzZXNzaW9uIiwgbV9zZXNzaW9uU2V0dGluZ3MtPnRvSlNPTlN0cmlu
ZygpKTsKLSAgICAoKnNldHRpbmdzKS0+c2V0U3RyaW5nKCJiYWNrZW5kIiwgZ2V0QmFja2VuZFNl
dHRpbmdzKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9kZSog
bm9kZSkKQEAgLTExMzEsNiArMTE1MywxNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNj
cmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJgogICAg
ICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQog
Cit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFJlc291cmNlVHJhY2tpbmcoYm9vbCBlbmFi
bGUpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChtX2luc3BlY3RlZFBhZ2UpOworICAgIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSBlbmFi
bGU7CisgICAgbV9jbGllbnQtPnBlcnNpc3RJbnNwZWN0b3JTdGF0ZShnZXRJbnNwZWN0b3JTdGF0
ZSgpKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRSZXNvdXJjZVRyYWNraW5n
KGJvb2wgZW5hYmxlLCBib29sIGFsd2F5cywgYm9vbCogbmV3U3RhdGUpCiB7CiAgICAgKm5ld1N0
YXRlID0gZW5hYmxlOwpAQCAtMTE0NCwyMCArMTE3NiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnNldFJlc291cmNlVHJhY2tpbmcoYm9vbCBlbmFibGUsIGJvb2wgYWx3YXlzLCBib29s
KiBuZQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogICAgIG1fcmVzb3VyY2VUcmFja2lu
Z0VuYWJsZWQgPSBlbmFibGU7CiAKLSAgICBpZiAoZW5hYmxlKSB7Ci0gICAgICAgIG1fY2xpZW50
LT5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOworICAgIGlmIChlbmFibGUpCiAgICAgICAg
IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVk
dWxlUmVmcmVzaCh0cnVlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9jbGllbnQtPnJlc291cmNl
VHJhY2tpbmdXYXNEaXNhYmxlZCgpOwotfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNl
dFJlc291cmNlVHJhY2tpbmcoYm9vbCBlbmFibGUpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwotICAgIG1fcmVz
b3VyY2VUcmFja2luZ0VuYWJsZWQgPSBlbmFibGU7CisgICAgbV9jbGllbnQtPnBlcnNpc3RJbnNw
ZWN0b3JTdGF0ZShnZXRJbnNwZWN0b3JTdGF0ZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjplbnN1cmVTZXR0aW5nc0xvYWRlZCgpCkBAIC0xMTY2LDE0ICsxMTg4LDE1IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5zdXJlU2V0dGluZ3NMb2FkZWQoKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9zZXR0aW5nc0xvYWRlZCA9IHRydWU7CiAKLSAgICBTdHJpbmcgcmVzb3Vy
Y2VUcmFja2luZyA9IHNldHRpbmcocmVzb3VyY2VUcmFja2luZ0VuYWJsZWRTZXR0aW5nTmFtZSk7
Ci0gICAgaWYgKHJlc291cmNlVHJhY2tpbmcgPT0gInRydWUiKQorICAgIFN0cmluZyByZXNvdXJj
ZVRyYWNraW5nQWx3YXlzRW5hYmxlZCA9IHNldHRpbmcocmVzb3VyY2VUcmFja2luZ0VuYWJsZWRT
ZXR0aW5nTmFtZSk7CisgICAgaWYgKHJlc291cmNlVHJhY2tpbmdBbHdheXNFbmFibGVkID09ICJ0
cnVlIikKICAgICAgICAgbV9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IHRydWU7Ci0gICAgbV9j
bGllbnQtPnJlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCk7CiAKLSAgICBTdHJpbmcgbW9uaXRv
cmluZ1hIUiA9IHNldHRpbmcobW9uaXRvcmluZ1hIUlNldHRpbmdOYW1lKTsKLSAgICBpZiAobW9u
aXRvcmluZ1hIUiA9PSAidHJ1ZSIpCisgICAgU3RyaW5nIG1vbml0b3JpbmdYSFJBbHdheXNFbmFi
bGVkID0gc2V0dGluZyhtb25pdG9yaW5nWEhSU2V0dGluZ05hbWUpOworICAgIGlmIChtb25pdG9y
aW5nWEhSQWx3YXlzRW5hYmxlZCA9PSAidHJ1ZSIpCiAgICAgICAgIG1fbW9uaXRvcmluZ1hIUiA9
IHRydWU7CisKKyAgICBtX2NsaWVudC0+cGVyc2lzdEluc3BlY3RvclN0YXRlKGdldEluc3BlY3Rv
clN0YXRlKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0VGltZWxpbmVQ
cm9maWxlcigpCkBAIC0xMTg3LDcgKzEyMTAsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnN0YXJ0VGltZWxpbmVQcm9maWxlcigpCiAgICAgbV90aW1lbGluZUFnZW50ID0gbmV3IEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQobV9mcm9udGVuZC5nZXQoKSk7CiAgICAgaWYgKG1fZnJvbnRlbmQp
CiAgICAgICAgIG1fZnJvbnRlbmQtPnRpbWVsaW5lUHJvZmlsZXJXYXNTdGFydGVkKCk7Ci0gICAg
bV9jbGllbnQtPnRpbWVsaW5lUHJvZmlsZXJXYXNTdGFydGVkKCk7CisKKyAgICBtX2NsaWVudC0+
cGVyc2lzdEluc3BlY3RvclN0YXRlKGdldEluc3BlY3RvclN0YXRlKCkpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnN0b3BUaW1lbGluZVByb2ZpbGVyKCkKQEAgLTEyMDEsNyArMTIy
NSw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWVsaW5lUHJvZmlsZXIoKQog
ICAgIG1fdGltZWxpbmVBZ2VudCA9IDA7CiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIG1f
ZnJvbnRlbmQtPnRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVkKCk7Ci0gICAgbV9jbGllbnQtPnRp
bWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVkKCk7CisKKyAgICBtX2NsaWVudC0+cGVyc2lzdEluc3Bl
Y3RvclN0YXRlKGdldEluc3BlY3RvclN0YXRlKCkpOwogfQogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNjA1MjNiNi4uYTY0
ODgxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTI5LDYg
KzEyOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBnZXRTZXR0aW5ncyhSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiopOwog
CisgICAgdm9pZCBzZXRJbnNwZWN0b3JTdGF0ZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXRl
KTsKKwogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBoaWdobGlnaHQoTm9kZSop
OwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwpAQCAtMjc1LDggKzI3Nyw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdO
YW1lKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZnJvbnRlbmRTZXR0
aW5nc1NldHRpbmdOYW1lKCk7Ci0gICAgU3RyaW5nIGdldEJhY2tlbmRTZXR0aW5ncygpOworICAg
IFN0cmluZyBnZXRJbnNwZWN0b3JTdGF0ZSgpOworICAgIHZvaWQgZ2V0SW5zcGVjdG9yU3RhdGUo
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKTsKIAogICAgIGZyaWVuZCBjbGFzcyBJbnNw
ZWN0b3JCYWNrZW5kOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCA1MmE4YmQwLi42
M2YyNjQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3Mu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC04Miwy
MSArODIsOSBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uKCkK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNlc3Npb25TZXR0aW5ncy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoImxvYWRlZCIpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHBvcHVsYXRlQmFja2VuZFNl
dHRpbmdzKHNldHRpbmdzU3RyaW5nKQotICAgIHsKLSAgICAgICAgdmFyIHNldHRpbmdzID0gSlNP
Ti5wYXJzZShzZXR0aW5nc1N0cmluZyk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLm1vbml0b3Jp
bmdYSFJFbmFibGVkID0gc2V0dGluZ3MubW9uaXRvcmluZ1hIUkVuYWJsZWQ7Ci0gICAgICAgIGlm
IChzZXR0aW5ncy5yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCkKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlc291
cmNlVHJhY2tpbmdXYXNEaXNhYmxlZCgpOwotICAgIH0KLQogICAgIEluc3BlY3RvckJhY2tlbmQu
Z2V0U2V0dGluZ3MoZnVuY3Rpb24oc2V0dGluZ3MpIHsKICAgICAgICAgcG9wdWxhdGVBcHBsaWNh
dGlvblNldHRpbmdzKHNldHRpbmdzLmFwcGxpY2F0aW9uKTsKICAgICAgICAgcG9wdWxhdGVTZXNz
aW9uU2V0dGluZ3Moc2V0dGluZ3Muc2Vzc2lvbik7Ci0gICAgICAgIHBvcHVsYXRlQmFja2VuZFNl
dHRpbmdzKHNldHRpbmdzLmJhY2tlbmQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBhYzNmM2ZjLi4wZjg1NTQ2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTU4Myw2ICs1ODMsMTYgQEAgV2Vi
SW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuZXh0ZW5zaW9u
U2VydmVyLmluaXRFeHRlbnNpb25zKCk7CiAKKyAgICBmdW5jdGlvbiBwb3B1bGF0ZUluc3BlY3Rv
clN0YXRlKGluc3BlY3RvclN0YXRlKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm1vbml0
b3JpbmdYSFJFbmFibGVkID0gaW5zcGVjdG9yU3RhdGUubW9uaXRvcmluZ1hIUkVuYWJsZWQ7Cisg
ICAgICAgIGlmIChpbnNwZWN0b3JTdGF0ZS5yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCkKKyAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlc291cmNlVHJhY2tpbmdXYXNF
bmFibGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
cmVzb3VyY2VzLnJlc291cmNlVHJhY2tpbmdXYXNEaXNhYmxlZCgpOworICAgIH0KKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLmdldEluc3BlY3RvclN0YXRlKHBvcHVsYXRlSW5zcGVjdG9yU3RhdGUpOwor
CiAgICAgSW5zcGVjdG9yQmFja2VuZC5wb3B1bGF0ZVNjcmlwdE9iamVjdHMoKTsKIAogICAgIC8v
IEFzIGEgRE9NQWdlbnQgbWV0aG9kLCB0aGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgZnJv
bnRlbmQgaGFzIGxvYWRlZCBhbmQgdGhlIGFnZW50IGlzIGF2YWlsYWJsZS4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDVmNzMzZDkuLjdhNzMzZjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEw
LTA5LTE3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZWZhY3RvcmluZy4gZ2V0QmFja2VuZFNldHRpbmdzIHdhcyByZW5hbWVkIHRvIGdldEluc3BlY3Rv
clN0YXRlLgorCisgICAgICAgIFdlIGhhdmUgYSBsb3Qgb2YgZmxhZ3MgaW5zaWRlIEluc3BlY3Rv
ci4KKyAgICAgICAgU29tZSBvZiB0aGVtIGFyZSBzZXR0aW5ncywgdGhlIG90aGVycyBhcmUgdGhl
IHJ1bnRpbWUgc3RhdGUgb2YgaW5zcGVjdG9yLgorICAgICAgICBJdCdkIGJlIGJldHRlciB0byB0
cmFuc2ZlciB0aGVzZSBmbGFncyB0byBmcm9udGVuZCBzaWRlIGFuZCBwZXJzaXN0L3Jlc3RvcmUK
KyAgICAgICAgdG8vZnJvbSBicm93c2VyIChjaHJvbWl1bSBzcGVjaWZpYykgdG9nZXRoZXIgYXMg
dGhlIEluc3BlY3RvciBzdGF0ZS4KKyAgICAgICAgQXMgcmVzdWx0IHdlIGNhbiBkcm9wIHNlcGFy
YXRlIGZ1bmN0aW9ucyBmb3IgcGVyc2lzdGluZy9yZXN0b3JpbmcgdGhlIHN0YXRlIG9mCisgICAg
ICAgIHJlc291cmNlVHJhY2tpbmcgYW5kIHRpbWVsaW5lUHJvZmlsZXIgYW5kIG90aGVyIGluc3Bl
Y3RvciBzdGF0ZSBmbGFncyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTk3NAorCisgICAgICAgICogc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpw
ZXJzaXN0SW5zcGVjdG9yU3RhdGUpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBs
Lmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldFJ1bnRpbWVQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpwZXJzaXN0SW5zcGVjdG9yU3RhdGUpOgor
ICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oOgorCiAyMDEwLTA5LTE2ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByNjc2OTMuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JD
bGllbnRJbXBsLmNwcAppbmRleCA3NmFjYmIyLi5iNWI2Y2Q1IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTEwMCwyOCArMTAwLDEwIEBAIGJvb2wg
SW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdURjo6U3Ry
aW5nJiBtZXNzYWdlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGll
bnRJbXBsOjpyZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpCit2b2lkIEluc3BlY3RvckNsaWVu
dEltcGw6OnBlcnNpc3RJbnNwZWN0b3JTdGF0ZShjb25zdCBXVEY6OlN0cmluZyYgaW5zcGVjdG9y
U3RhdGUpCiB7CiAgICAgaWYgKFdlYkRldlRvb2xzQWdlbnRJbXBsKiBhZ2VudCA9IGRldlRvb2xz
QWdlbnQoKSkKLSAgICAgICAgYWdlbnQtPnJlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCk7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6cmVzb3VyY2VUcmFja2luZ1dhc0Rpc2FibGVk
KCkKLXsKLSAgICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2Vu
dCgpKQotICAgICAgICBhZ2VudC0+cmVzb3VyY2VUcmFja2luZ1dhc0Rpc2FibGVkKCk7Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6dGltZWxpbmVQcm9maWxlcldhc1N0YXJ0ZWQoKQot
ewotICAgIGlmIChXZWJEZXZUb29sc0FnZW50SW1wbCogYWdlbnQgPSBkZXZUb29sc0FnZW50KCkp
Ci0gICAgICAgIGFnZW50LT50aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpOwotfQotCi12b2lk
IEluc3BlY3RvckNsaWVudEltcGw6OnRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVkKCkKLXsKLSAg
ICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgpKQotICAg
ICAgICBhZ2VudC0+dGltZWxpbmVQcm9maWxlcldhc1N0b3BwZWQoKTsKKyAgICAgICAgYWdlbnQt
PnBlcnNpc3RJbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JTdGF0ZSk7CiB9CiAKIFdlYkRldlRvb2xz
QWdlbnRJbXBsKiBJbnNwZWN0b3JDbGllbnRJbXBsOjpkZXZUb29sc0FnZW50KCkKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKaW5kZXggMzRmY2RjMy4uMGUwYWUyZSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAgLTU4LDEwICs1
OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVRyYWNraW5n
V2FzRW5hYmxlZCgpOwotICAgIHZpcnR1YWwgdm9pZCByZXNvdXJjZVRyYWNraW5nV2FzRGlzYWJs
ZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGltZWxpbmVQcm9maWxlcldhc1N0YXJ0ZWQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGltZWxpbmVQcm9maWxlcldhc1N0b3BwZWQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGVyc2lzdEluc3BlY3RvclN0YXRlKGNvbnN0IFdURjo6U3RyaW5nJik7CiBwcml2YXRl
OgogICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50KCk7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggOWJhNjNlYy4uZTQ2
MTg5NyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
QEAgLTY4LDggKzY3LDYgQEAgdXNpbmcgV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OwogdXNp
bmcgV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXk7CiB1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcjsKIHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI7Ci11c2lu
ZyBXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JWYWx1
ZTsKIHVzaW5nIFdlYkNvcmU6Ok5vZGU7CiB1c2luZyBXZWJDb3JlOjpQYWdlOwogdXNpbmcgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcjsKQEAgLTgzLDEwICs4MCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBuYW1lc3BhY2UgewogCi1zdGF0aWMgY29uc3QgY2hhciBrRnJvbnRlbmRDb25uZWN0ZWRG
ZWF0dXJlTmFtZVtdID0gImZyb250ZW5kLWNvbm5lY3RlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciBr
UmVzb3VyY2VUcmFja2luZ0ZlYXR1cmVOYW1lW10gPSAicmVzb3VyY2UtdHJhY2tpbmciOwotc3Rh
dGljIGNvbnN0IGNoYXIga1RpbWVsaW5lRmVhdHVyZU5hbWVbXSA9ICJ0aW1lbGluZS1wcm9maWxl
ciI7CiBzdGF0aWMgY29uc3QgY2hhciBrQXB1QWdlbnRGZWF0dXJlTmFtZVtdID0gImFwdS1hZ2Vu
dCI7CitzdGF0aWMgY29uc3QgY2hhciBrRnJvbnRlbmRDb25uZWN0ZWRGZWF0dXJlTmFtZVtdID0g
ImZyb250ZW5kLWNvbm5lY3RlZCI7CitzdGF0aWMgY29uc3QgY2hhciBrSW5zcGVjdG9yU3RhdGVG
ZWF0dXJlTmFtZVtdID0gImluc3BlY3Rvci1zdGF0ZSI7CiAKIGNsYXNzIENsaWVudE1lc3NhZ2VM
b29wQWRhcHRlciA6IHB1YmxpYyBXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6Q2xpZW50TWVz
c2FnZUxvb3AgewogcHVibGljOgpAQCAtMjUyLDExICsyNDgsOSBAQCB2b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpzZXRSdW50aW1lUHJvcGVydHkoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdAogewogICAgIGlmIChuYW1lID09IGtBcHVBZ2VudEZlYXR1cmVOYW1lKQogICAgICAg
ICBzZXRBcHVBZ2VudEVuYWJsZWQodmFsdWUgPT0gInRydWUiKTsKLSAgICBlbHNlIGlmIChuYW1l
ID09IGtUaW1lbGluZUZlYXR1cmVOYW1lKQotICAgICAgICBzZXRUaW1lbGluZVByb2ZpbGluZ0Vu
YWJsZWQodmFsdWUgPT0gInRydWUiKTsKLSAgICBlbHNlIGlmIChuYW1lID09IGtSZXNvdXJjZVRy
YWNraW5nRmVhdHVyZU5hbWUpIHsKKyAgICBlbHNlIGlmIChuYW1lID09IGtJbnNwZWN0b3JTdGF0
ZUZlYXR1cmVOYW1lKSB7CiAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVj
dG9yQ29udHJvbGxlcigpOwotICAgICAgICBpYy0+c2V0UmVzb3VyY2VUcmFja2luZyh2YWx1ZSA9
PSAidHJ1ZSIpOworICAgICAgICBpYy0+c2V0SW5zcGVjdG9yU3RhdGUodmFsdWUpOwogICAgIH0g
ZWxzZSBpZiAobmFtZSA9PSBrRnJvbnRlbmRDb25uZWN0ZWRGZWF0dXJlTmFtZSAmJiAhaW5zcGVj
dG9yQ29udHJvbGxlcigpLT5oYXNGcm9udGVuZCgpKSB7CiAgICAgICAgIGluc3BlY3RvckNvbnRy
b2xsZXIoKS0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPnNldEluamVjdGVkU2NyaXB0U291cmNlKHZh
bHVlKTsKICAgICAgICAgY29ubmVjdEZyb250ZW5kKHRydWUpOwpAQCAtNDA4LDI0ICs0MDIsOSBA
QCBib29sIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
V1RGOjpTdHJpbmcmIG1lc3NhZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViRGV2
VG9vbHNBZ2VudEltcGw6OnJlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCkKLXsKLSAgICBtX2Ns
aWVudC0+cnVudGltZVByb3BlcnR5Q2hhbmdlZChrUmVzb3VyY2VUcmFja2luZ0ZlYXR1cmVOYW1l
LCAidHJ1ZSIpOwotfQotCi12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpyZXNvdXJjZVRyYWNr
aW5nV2FzRGlzYWJsZWQoKQotewotICAgIG1fY2xpZW50LT5ydW50aW1lUHJvcGVydHlDaGFuZ2Vk
KGtSZXNvdXJjZVRyYWNraW5nRmVhdHVyZU5hbWUsICJmYWxzZSIpOwotfQotCi12b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjp0aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpCi17Ci0gICAgbV9j
bGllbnQtPnJ1bnRpbWVQcm9wZXJ0eUNoYW5nZWQoa1RpbWVsaW5lRmVhdHVyZU5hbWUsICJ0cnVl
Iik7Ci19Ci0KLXZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnRpbWVsaW5lUHJvZmlsZXJXYXNT
dG9wcGVkKCkKK3ZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnBlcnNpc3RJbnNwZWN0b3JTdGF0
ZShjb25zdCBXVEY6OlN0cmluZyYgc3RhdGUpCiB7Ci0gICAgbV9jbGllbnQtPnJ1bnRpbWVQcm9w
ZXJ0eUNoYW5nZWQoa1RpbWVsaW5lRmVhdHVyZU5hbWUsICJmYWxzZSIpOworICAgIG1fY2xpZW50
LT5ydW50aW1lUHJvcGVydHlDaGFuZ2VkKGtJbnNwZWN0b3JTdGF0ZUZlYXR1cmVOYW1lLCBzdGF0
ZSk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmV2YWx1YXRlSW5XZWJJbnNwZWN0
b3IobG9uZyBjYWxsSWQsIGNvbnN0IFdlYlN0cmluZyYgc2NyaXB0KQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCmluZGV4IDFkMzA2YzQuLjRlZWM1NjYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKQEAgLTkzLDEwICs5Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgIHZpcnR1
YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgV1RGOjpTdHJp
bmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdURjo6U3Ry
aW5nJiBrZXksIGNvbnN0IFdURjo6U3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc291cmNlVHJh
Y2tpbmdXYXNEaXNhYmxlZCgpOwotICAgIHZpcnR1YWwgdm9pZCB0aW1lbGluZVByb2ZpbGVyV2Fz
U3RhcnRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCB0aW1lbGluZVByb2ZpbGVyV2FzU3RvcHBlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBwZXJzaXN0SW5zcGVjdG9yU3RhdGUoY29uc3QgV1RGOjpTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdURjo6
U3RyaW5nJik7CiAKICAgICBpbnQgaG9zdElkKCkgeyByZXR1cm4gbV9ob3N0SWQ7IH0K
</data>
<flag name="review"
          id="57361"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68077</attachid>
            <date>2010-09-20 07:04:27 -0700</date>
            <delta_ts>2010-09-20 07:33:13 -0700</delta_ts>
            <desc>[patch] second iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31577</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhy
LWxvZ2dpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUt
eGhyLWxvZ2dpbmcuaHRtbAppbmRleCAwYmQ3NTViLi41MzNkY2YwIDEwMDc1NQotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy5o
dG1sCkBAIC00NSw3ICs0NSw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RIZWxwZXIobWV0aG9kLCB1cmwp
CiAKIGZ1bmN0aW9uIGZyb250ZW5kX2VuYWJsZVhNTEh0dHBSZXF1ZXN0TG9nZ2luZyh0ZXN0Q29u
dHJvbGxlcikKIHsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFIodHJ1ZSwg
ZnVuY3Rpb24obmV3U3RhdHVzKSB7CisgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRNb25pdG9yaW5n
WEhSRW5hYmxlZCh0cnVlLCBmdW5jdGlvbihuZXdTdGF0dXMpIHsKICAgICAgICAgIGlmIChuZXdT
dGF0dXMpCiAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCJlbmFibGVkIik7
CiAgICAgfSk7CkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIGZyb250ZW5kX2VuYWJsZVhNTEh0
dHBSZXF1ZXN0TG9nZ2luZyh0ZXN0Q29udHJvbGxlcikKIAogZnVuY3Rpb24gZnJvbnRlbmRfZGlz
YWJsZVhNTEh0dHBSZXF1ZXN0TG9nZ2luZyh0ZXN0Q29udHJvbGxlcikKIHsKLSAgICBJbnNwZWN0
b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFIoZmFsc2UsIGZ1bmN0aW9uKG5ld1N0YXR1cykgewor
ICAgIEluc3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoZmFsc2UsIGZ1bmN0
aW9uKG5ld1N0YXR1cykgewogICAgICAgICBpZiAoIW5ld1N0YXR1cykKICAgICAgICAgICAgIHRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoImRpc2FibGVkIik7CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwb3J0LUFQSS1lcnJvcnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1BUEktZXJyb3JzLWV4cGVjdGVkLnR4dAppbmRl
eCBhMmM1MDQzLi5hYmFiNTVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVw
b3J0LUFQSS1lcnJvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9y
ZXBvcnQtQVBJLWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiBUZXN0cyB0aGF0
IEluc3BlY3RvckJhY2tlbmRTdHViIGlzIGNhdGNoaW5nIGluY29ycmVjdCBhcmd1bWVudHMuCiAK
LVByb3RvY29sIEVycm9yOiBJbnZhbGlkIHR5cGUgb2YgYXJndW1lbnQgJ2VuYWJsZScgZm9yICdJ
bnNwZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFInIGNhbGwuIEl0IHNob3VsZCBiZSAnYm9v
bGVhbicgYnV0IGl0IGlzICdudW1iZXInLgotUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgbnVtYmVy
IG9mIGFyZ3VtZW50cyBmb3IgJ0luc3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUicgY2Fs
bC4gSXQgc2hvdWxkIGhhdmUgdGhlIG5leHQgYXJndW1lbnRzICd7ImVuYWJsZSI6ImJvb2xlYW4i
fScuCi1Qcm90b2NvbCBFcnJvcjogT3B0aW9uYWwgY2FsbGJhY2sgYXJndW1lbnQgZm9yICdJbnNw
ZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFInIGNhbGwgc2hvdWxkIGJlIGEgZnVuY3Rpb24g
YnV0IGl0cyB0eXBlIGlzICdzdHJpbmcnLgorUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgdHlwZSBv
ZiBhcmd1bWVudCAnZW5hYmxlJyBmb3IgJ0luc3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hI
UkVuYWJsZWQnIGNhbGwuIEl0IHNob3VsZCBiZSAnYm9vbGVhbicgYnV0IGl0IGlzICdudW1iZXIn
LgorUHJvdG9jb2wgRXJyb3I6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgJ0luc3Bl
Y3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQnIGNhbGwuIEl0IHNob3VsZCBoYXZl
IHRoZSBuZXh0IGFyZ3VtZW50cyAneyJlbmFibGUiOiJib29sZWFuIn0nLgorUHJvdG9jb2wgRXJy
b3I6IE9wdGlvbmFsIGNhbGxiYWNrIGFyZ3VtZW50IGZvciAnSW5zcGVjdG9yQmFja2VuZC5zZXRN
b25pdG9yaW5nWEhSRW5hYmxlZCcgY2FsbCBzaG91bGQgYmUgYSBmdW5jdGlvbiBidXQgaXRzIHR5
cGUgaXMgJ3N0cmluZycuCiBQcm90b2NvbCBFcnJvcjogQXR0ZW1wdGVkIHRvIGRpc3BhdGNoIGFu
IHVuaW1wbGVtZW50ZWQgV2ViSW5zcGVjdG9yIG1ldGhvZCAnc29tZXRoaW5nLXN0cmFuZ2UnCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtQVBJLWVycm9ycy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1BUEktZXJyb3JzLmh0bWwKaW5kZXggZWRk
MmRmZS4uYTJiYzI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1B
UEktZXJyb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1BUEktZXJy
b3JzLmh0bWwKQEAgLTExLDExICsxMSwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoU3RyaW5nLnNwcmludGYuYXBwbHkodGhpcywgYXJndW1lbnRz
KSk7CiAgICAgfQogCi0gICAgSW5zcGVjdG9yQmFja2VuZC5zZXRNb25pdG9yaW5nWEhSKDEpOwot
ICAgIEluc3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUigpOwotICAgIEluc3BlY3RvckJh
Y2tlbmQuc2V0TW9uaXRvcmluZ1hIUih0cnVlLCAibm90IGEgZnVuY3Rpb24iKTsKLSAgICBJbnNw
ZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFIodHJ1ZSwgdW5kZWZpbmVkKTsKLSAgICBJbnNw
ZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFIoZmFsc2UsIHVuZGVmaW5lZCk7CisgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRNb25pdG9yaW5nWEhSRW5hYmxlZCgxKTsKKyAgICBJbnNwZWN0b3JC
YWNrZW5kLnNldE1vbml0b3JpbmdYSFJFbmFibGVkKCk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRNb25pdG9yaW5nWEhSRW5hYmxlZCh0cnVlLCAibm90IGEgZnVuY3Rpb24iKTsKKyAgICBJbnNw
ZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFJFbmFibGVkKHRydWUsIHVuZGVmaW5lZCk7Cisg
ICAgSW5zcGVjdG9yQmFja2VuZC5zZXRNb25pdG9yaW5nWEhSRW5hYmxlZChmYWxzZSwgdW5kZWZp
bmVkKTsKICAgICBXZWJJbnNwZWN0b3Jfc3luY0Rpc3BhdGNoKCd7InR5cGUiOiAiZXZlbnQiLCAi
ZG9tYWluIjogImRvbSIsICJldmVudCI6ICJzb21ldGhpbmctc3RyYW5nZSIsICJkYXRhIjoge319
Jyk7CiAKICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhY2ZmNjc1Li40MTNmZWQ1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM3IEBACisyMDEwLTA5LTE3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvcmluZy4gZ2V0QmFja2VuZFNldHRpbmdzIHdhcyBy
ZW5hbWVkIHRvIGdldEluc3BlY3RvclN0YXRlLgorCisgICAgICAgIFdlIGhhdmUgYSBsb3Qgb2Yg
ZmxhZ3MgaW5zaWRlIEluc3BlY3Rvci4KKyAgICAgICAgU29tZSBvZiB0aGVtIGFyZSBzZXR0aW5n
cywgdGhlIG90aGVycyBhcmUgdGhlIHJ1bnRpbWUgc3RhdGUgb2YgaW5zcGVjdG9yLgorICAgICAg
ICBJdCdkIGJlIGJldHRlciB0byB0cmFuc2ZlciB0aGVzZSBmbGFncyB0byBmcm9udGVuZCBzaWRl
IGFuZCBwZXJzaXN0L3Jlc3RvcmUKKyAgICAgICAgdG8vZnJvbSBicm93c2VyIChjaHJvbWl1bSBz
cGVjaWZpYykgdG9nZXRoZXIgYXMgdGhlIEluc3BlY3RvciBzdGF0ZS4KKyAgICAgICAgQXMgcmVz
dWx0IHdlIGNhbiBkcm9wIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgcGVyc2lzdGluZy9yZXN0b3Jp
bmcgdGhlIHN0YXRlIG9mCisgICAgICAgIHJlc291cmNlVHJhY2tpbmcgYW5kIHRpbWVsaW5lUHJv
ZmlsZXIgYW5kIG90aGVyIGluc3BlY3RvciBzdGF0ZSBmbGFncyBpbiB0aGUgZnV0dXJlLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTk3NAorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpwZXJz
aXN0SW5zcGVjdG9yU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNhdmVBcHBs
aWNhdGlvblNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmdldEluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldEluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmdldFNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldFJlc291cmNlVHJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZW5zdXJlU2V0dGluZ3NMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6c3RhcnRUaW1lbGluZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BUaW1lbGluZVByb2ZpbGVyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MuaW5pdGlh
bGl6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lLnBvcHVsYXRlSW5zcGVjdG9yU3RhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSk6CisKIDIwMTAtMDktMTkgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI2Nzc0OS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IDdkYWQ5
YWYuLjFjNWZmYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtOTgsNiArOTgsNyBAQCBt
b2R1bGUgY29yZSB7CiAgICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgcG9wdWxhdGVT
Y3JpcHRPYmplY3RzKCk7CiAKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBnZXRT
ZXR0aW5ncyhvdXQgT2JqZWN0IHNldHRpbmdzKTsKKyAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxl
cl0gdm9pZCBnZXRJbnNwZWN0b3JTdGF0ZShvdXQgT2JqZWN0IHN0YXRlKTsKICAgICAgICAgW2hh
bmRsZXI9Q29udHJvbGxlcl0gdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChpbiBTdHJpbmcgcGFu
ZWxOYW1lKTsKIAogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHNhdmVBcHBsaWNh
dGlvblNldHRpbmdzKGluIFN0cmluZyBzZXR0aW5ncyk7CkBAIC0xMDYsOSArMTA3LDkgQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGVuYWJsZVNlYXJj
aGluZ0Zvck5vZGUoKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBkaXNhYmxl
U2VhcmNoaW5nRm9yTm9kZSgpOwogCi0gICAgICAgIFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQg
c2V0TW9uaXRvcmluZ1hIUihpbiBib29sZWFuIGVuYWJsZSwgb3V0IGJvb2xlYW4gbmV3U3RhdGUp
OworICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFi
bGVkKGluIGJvb2xlYW4gZW5hYmxlLCBvdXQgYm9vbGVhbiBuZXdTdGF0ZSk7CiAKLSAgICAgICAg
W2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBzZXRSZXNvdXJjZVRyYWNraW5nKGluIGJvb2xlYW4g
ZW5hYmxlLCBpbiBib29sZWFuIGFsd2F5cywgb3V0IGJvb2xlYW4gbmV3U3RhdGUpOworICAgICAg
ICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHNldFJlc291cmNlVHJhY2tpbmdFbmFibGVkKGlu
IGJvb2xlYW4gZW5hYmxlLCBpbiBib29sZWFuIGFsd2F5cywgb3V0IGJvb2xlYW4gbmV3U3RhdGUp
OwogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGdldFJlc291cmNlQ29udGVudChp
biB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIG91dCBTdHJpbmcgY29udGVudCk7CiAgICAgICAg
IFtoYW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgcmVsb2FkUGFnZSgpOwogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5oCmluZGV4IGFjZDhiMjguLmUyNmI3OTMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5oCkBAIC01NCwxMCArNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gTmF2aWdh
dGlvbiBjYW4gY2F1c2Ugc29tZSBXZWJLaXQgaW1wbGVtZW50YXRpb25zIHRvIGNoYW5nZSB0aGUg
dmlldyAvIHBhZ2UgLyBpbnNwZWN0b3IgY29udHJvbGxlciBpbnN0YW5jZS4KICAgICAvLyBIb3dl
dmVyLCB0aGVyZSBhcmUgc29tZSBpbnNwZWN0b3IgY29udHJvbGxlciBzdGF0ZXMgdGhhdCBzaG91
bGQgc3Vydml2ZSBuYXZpZ2F0aW9uIChzdWNoIGFzIHRyYWNraW5nIHJlc291cmNlcwogICAgIC8v
IG9yIHJlY29yZGluZyB0aW1lbGluZSkuIEZvbGxvd2luZyBjYWxsYmFja3MgYWxsb3cgZW1iZWRk
ZXJzIHRvIHRyYWNrIHRoZXNlIHN0YXRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VUcmFj
a2luZ1dhc0VuYWJsZWQoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIHJlc291cmNlVHJhY2tpbmdX
YXNEaXNhYmxlZCgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgdGltZWxpbmVQcm9maWxlcldhc1N0
YXJ0ZWQoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIHRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVk
KCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW5zcGVjdG9yU3RhdGUoY29uc3QgU3RyaW5n
JikgeyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3MzEyNmQ3Li4wN2U5Nzk1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTE5LDI2ICsxMTksMjggQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3QgY2hhciogY29uc3QgcmVzb3VyY2VUcmFja2luZ0VuYWJsZWRTZXR0aW5nTmFtZSA9ICJyZXNv
dXJjZVRyYWNraW5nRW5hYmxlZCI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZGVidWdnZXJF
bmFibGVkU2V0dGluZ05hbWUgPSAiZGVidWdnZXJFbmFibGVkIjsKLXN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSA9ICJwcm9maWxlckVuYWJsZWQiOwot
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0TmFtZSA9ICJp
bnNwZWN0b3JBdHRhY2hlZEhlaWdodCI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZnJvbnRl
bmRTZXR0aW5nc1NldHRpbmdOYW1lID0gImZyb250ZW5kU2V0dGluZ3MiOworCitzdGF0aWMgY29u
c3QgY2hhciogY29uc3QgZGVidWdnZXJBbHdheXNFbmFibGVkU2V0dGluZ05hbWUgPSAiZGVidWdn
ZXJFbmFibGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBsYXN0QWN0aXZlUGFuZWwgPSAi
bGFzdEFjdGl2ZVBhbmVsIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBtb25pdG9yaW5nWEhS
U2V0dGluZ05hbWUgPSAieGhyTW9uaXRvciI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVz
b3VyY2VUcmFja2luZ0Fsd2F5c0VuYWJsZWRTZXR0aW5nTmFtZSA9ICJyZXNvdXJjZVRyYWNraW5n
RW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcHJvZmlsZXJBbHdheXNFbmFibGVk
U2V0dGluZ05hbWUgPSAicHJvZmlsZXJFbmFibGVkIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNv
bnN0IHRpbWVsaW5lUHJvZmlsZXJFbmFibGVkU3RhdGVOYW1lID0gInRpbWVsaW5lUHJvZmlsZXJF
bmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZXNvdXJjZVRyYWNraW5nRW5hYmxl
ZFN0YXRlTmFtZSA9ICJyZXNvdXJjZVRyYWNraW5nRW5hYmxlZCI7CitzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgbW9uaXRvcmluZ1hIUlN0YXRlTmFtZSA9ICJtb25pdG9yaW5nWEhSRW5hYmxlZCI7
CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpbnNwZWN0b3JBdHRhY2hlZEhlaWdodE5hbWUg
PSAiaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQiOworCiBjb25zdCBjaGFyKiBjb25zdCBJbnNwZWN0
b3JDb250cm9sbGVyOjpFbGVtZW50c1BhbmVsID0gImVsZW1lbnRzIjsKIGNvbnN0IGNoYXIqIGNv
bnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OkNvbnNvbGVQYW5lbCA9ICJjb25zb2xlIjsKIGNvbnN0
IGNoYXIqIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlNjcmlwdHNQYW5lbCA9ICJzY3JpcHRz
IjsKIGNvbnN0IGNoYXIqIGNvbnN0IEluc3BlY3RvckNvbnRyb2xsZXI6OlByb2ZpbGVzUGFuZWwg
PSAicHJvZmlsZXMiOwogCi1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgbW9uaXRvcmluZ1hIUlNl
dHRpbmdOYW1lID0gInhock1vbml0b3IiOwogCiBzdGF0aWMgaW50IGNvbm5lY3RlZEZyb250ZW5k
Q291bnQgPSAwOwogCi1jb25zdCBTdHJpbmcmIEluc3BlY3RvckNvbnRyb2xsZXI6OmZyb250ZW5k
U2V0dGluZ3NTZXR0aW5nTmFtZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHNldHRpbmdOYW1lLCAoImZyb250ZW5kU2V0dGluZ3MiKSk7Ci0gICAgcmV0dXJuIHNldHRpbmdO
YW1lOwotfQotCiBjb25zdCBTdHJpbmcmIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RvclN0
YXJ0c0F0dGFjaGVkU2V0dGluZ05hbWUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBzZXR0aW5nTmFtZSwgKCJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCIpKTsKQEAgLTI0Miw3
ICsyNDQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNldHRpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKIHsKLSAg
ICBzZXRTZXR0aW5nKEluc3BlY3RvckNvbnRyb2xsZXI6OmZyb250ZW5kU2V0dGluZ3NTZXR0aW5n
TmFtZSgpLCBzZXR0aW5ncyk7CisgICAgc2V0U2V0dGluZyhmcm9udGVuZFNldHRpbmdzU2V0dGlu
Z05hbWUsIHNldHRpbmdzKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzYXZlU2Vz
c2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3NKU09OKQpAQCAtMjUwLDIwICsyNTIs
NDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzYXZlU2Vzc2lvblNldHRpbmdzKGNvbnN0
IFN0cmluZyYgc2V0dGluZ3NKU09OKQogICAgIG1fc2Vzc2lvblNldHRpbmdzID0gSW5zcGVjdG9y
VmFsdWU6OnBhcnNlSlNPTihzZXR0aW5nc0pTT04pOwogfQogCi1TdHJpbmcgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Z2V0QmFja2VuZFNldHRpbmdzKCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Z2V0SW5zcGVjdG9yU3RhdGUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKQoreworICAg
ICgqc3RhdGUpLT5zZXRCb29sZWFuKG1vbml0b3JpbmdYSFJTdGF0ZU5hbWUsIG1fbW9uaXRvcmlu
Z1hIUik7CisgICAgKCpzdGF0ZSktPnNldEJvb2xlYW4ocmVzb3VyY2VUcmFja2luZ0VuYWJsZWRT
dGF0ZU5hbWUsIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQpOworfQorCit2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnNhdmVJbnNwZWN0b3JTdGF0ZSgpCiB7Ci0gICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcnVudGltZVNldHRpbmdzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICBydW50aW1lU2V0dGluZ3MtPnNldEJvb2xlYW4obW9uaXRvcmluZ1hIUlNldHRpbmdOYW1lLCBt
X21vbml0b3JpbmdYSFIpOwotICAgIHJ1bnRpbWVTZXR0aW5ncy0+c2V0Qm9vbGVhbihyZXNvdXJj
ZVRyYWNraW5nRW5hYmxlZFNldHRpbmdOYW1lLCBtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkKTsK
LSAgICByZXR1cm4gcnVudGltZVNldHRpbmdzLT50b0pTT05TdHJpbmcoKTsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBzdGF0ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAg
c3RhdGUtPnNldEJvb2xlYW4obW9uaXRvcmluZ1hIUlN0YXRlTmFtZSwgbV9tb25pdG9yaW5nWEhS
KTsKKyAgICBzdGF0ZS0+c2V0Qm9vbGVhbihyZXNvdXJjZVRyYWNraW5nRW5hYmxlZFN0YXRlTmFt
ZSwgbV9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCk7CisgICAgc3RhdGUtPnNldEJvb2xlYW4odGlt
ZWxpbmVQcm9maWxlckVuYWJsZWRTdGF0ZU5hbWUsIG1fdGltZWxpbmVBZ2VudCk7CisgICAgbV9j
bGllbnQtPnNhdmVJbnNwZWN0b3JTdGF0ZShzdGF0ZS0+dG9KU09OU3RyaW5nKCkpOworfQorCit2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0b3JTdGF0ZShjb25zdCBTdHJp
bmcmIGluc3BlY3RvclN0YXRlU3RyaW5nKQoreworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4g
aW5zcGVjdG9yU3RhdGVWYWx1ZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04oaW5zcGVjdG9y
U3RhdGVTdHJpbmcpOworICAgIGlmICghaW5zcGVjdG9yU3RhdGVWYWx1ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaW5zcGVjdG9yU3RhdGUgPSBpbnNw
ZWN0b3JTdGF0ZVZhbHVlLT5hc09iamVjdCgpOworICAgIGlmICghaW5zcGVjdG9yU3RhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGluc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKG1vbml0b3Jp
bmdYSFJTdGF0ZU5hbWUsICZtX21vbml0b3JpbmdYSFIpOworICAgIGluc3BlY3RvclN0YXRlLT5n
ZXRCb29sZWFuKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU3RhdGVOYW1lLCAmbV9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCk7CisKKyAgICBib29sIHRpbWVsaW5lUHJvZmlsZXJFbmFibGVkID0gZmFs
c2U7CisgICAgaW5zcGVjdG9yU3RhdGUtPmdldEJvb2xlYW4odGltZWxpbmVQcm9maWxlckVuYWJs
ZWRTdGF0ZU5hbWUsICZ0aW1lbGluZVByb2ZpbGVyRW5hYmxlZCk7CisgICAgaWYgKHRpbWVsaW5l
UHJvZmlsZXJFbmFibGVkKQorICAgICAgICBzdGFydFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBl
bHNlCisgICAgICAgIHN0b3BUaW1lbGluZVByb2ZpbGVyKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6Z2V0U2V0dGluZ3MoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHNldHRpbmdz
KQogewogICAgICpzZXR0aW5ncyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgKCpz
ZXR0aW5ncyktPnNldFN0cmluZygiYXBwbGljYXRpb24iLCBzZXR0aW5nKGZyb250ZW5kU2V0dGlu
Z3NTZXR0aW5nTmFtZSgpKSk7CisgICAgKCpzZXR0aW5ncyktPnNldFN0cmluZygiYXBwbGljYXRp
b24iLCBzZXR0aW5nKGZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSkpOwogICAgICgqc2V0dGlu
Z3MpLT5zZXRTdHJpbmcoInNlc3Npb24iLCBtX3Nlc3Npb25TZXR0aW5ncy0+dG9KU09OU3RyaW5n
KCkpOwotICAgICgqc2V0dGluZ3MpLT5zZXRTdHJpbmcoImJhY2tlbmQiLCBnZXRCYWNrZW5kU2V0
dGluZ3MoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2RlKiBu
b2RlKQpAQCAtNDcxLDEzICs1MDAsMTQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRT
ZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6c2V0TW9uaXRvcmluZ1hIUihib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRl
KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChib29s
IGVuYWJsZSwgYm9vbCogbmV3U3RhdGUpCiB7Ci0gICAgKm5ld1N0YXRlID0gZW5hYmxlZDsKLSAg
ICBpZiAobV9tb25pdG9yaW5nWEhSID09IGVuYWJsZWQpCisgICAgKm5ld1N0YXRlID0gZW5hYmxl
OworICAgIGlmIChtX21vbml0b3JpbmdYSFIgPT0gZW5hYmxlKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9tb25pdG9yaW5nWEhSID0gZW5hYmxlZDsKLSAgICBzZXRTZXR0aW5nKG1vbml0b3JpbmdY
SFJTZXR0aW5nTmFtZSwgZW5hYmxlZCA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIG1fbW9uaXRv
cmluZ1hIUiA9IGVuYWJsZTsKKyAgICBzZXRTZXR0aW5nKG1vbml0b3JpbmdYSFJTZXR0aW5nTmFt
ZSwgZW5hYmxlID8gInRydWUiIDogImZhbHNlIik7CisgICAgc2F2ZUluc3BlY3RvclN0YXRlKCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKQEAgLTY4
Miw3ICs3MTIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVEZWJ1Z2dlcigp
CiAgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmlzRGVidWdnZXJBbHdheXNFbmFibGVk
KCkpCiAgICAgICAgIGVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGZhbHNlKTsKICAgICBlbHNl
IHsKLSAgICAgICAgU3RyaW5nIGRlYnVnZ2VyRW5hYmxlZCA9IHNldHRpbmcoZGVidWdnZXJFbmFi
bGVkU2V0dGluZ05hbWUpOworICAgICAgICBTdHJpbmcgZGVidWdnZXJFbmFibGVkID0gc2V0dGlu
ZyhkZWJ1Z2dlckFsd2F5c0VuYWJsZWRTZXR0aW5nTmFtZSk7CiAgICAgICAgIGlmIChkZWJ1Z2dl
ckVuYWJsZWQgPT0gInRydWUiIHx8IG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24pCiAgICAgICAg
ICAgICBlbmFibGVEZWJ1Z2dlcigpOwogICAgIH0KQEAgLTY5NSw3ICs3MjUsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVQcm9maWxlcigpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCiAgICAgbV9wcm9maWxlckFnZW50LT5zZXRGcm9udGVuZChtX2Zyb250ZW5k
LmdldCgpKTsKICAgICBpZiAoIVNjcmlwdFByb2ZpbGVyOjppc1Byb2ZpbGVyQWx3YXlzRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIFN0cmluZyBwcm9maWxlckVuYWJsZWRTZXR0aW5nID0gc2V0dGluZyhw
cm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSk7CisgICAgICAgIFN0cmluZyBwcm9maWxlckVuYWJs
ZWRTZXR0aW5nID0gc2V0dGluZyhwcm9maWxlckFsd2F5c0VuYWJsZWRTZXR0aW5nTmFtZSk7CiAg
ICAgICAgIGlmIChwcm9maWxlckVuYWJsZWRTZXR0aW5nID09ICJ0cnVlIikKICAgICAgICAgICAg
IGVuYWJsZVByb2ZpbGVyKCk7CiAgICAgfQpAQCAtMTEzMSwxMiArMTE2MSwyMiBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
ZnJvbnRlbmQuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFJlc291
cmNlVHJhY2tpbmcoYm9vbCBlbmFibGUsIGJvb2wgYWx3YXlzLCBib29sKiBuZXdTdGF0ZSkKK3Zv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0UmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoYm9vbCBl
bmFibGUpCit7CisgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFT
U0VSVChtX2luc3BlY3RlZFBhZ2UpOworICAgIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPSBl
bmFibGU7CisgICAgc2F2ZUluc3BlY3RvclN0YXRlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0UmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoYm9vbCBlbmFibGUsIGJvb2wgYWx3
YXlzLCBib29sKiBuZXdTdGF0ZSkKIHsKICAgICAqbmV3U3RhdGUgPSBlbmFibGU7CiAKICAgICBp
ZiAoYWx3YXlzKQotICAgICAgICBzZXRTZXR0aW5nKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0
dGluZ05hbWUsIGVuYWJsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgICAgICBzZXRTZXR0aW5n
KHJlc291cmNlVHJhY2tpbmdBbHdheXNFbmFibGVkU2V0dGluZ05hbWUsIGVuYWJsZSA/ICJ0cnVl
IiA6ICJmYWxzZSIpOwogCiAgICAgaWYgKG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQgPT0gZW5h
YmxlKQogICAgICAgICByZXR1cm47CkBAIC0xMTQ0LDIwICsxMTg0LDEwIEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0UmVzb3VyY2VUcmFja2luZyhib29sIGVuYWJsZSwgYm9vbCBhbHdh
eXMsIGJvb2wqIG5lCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAgICAgbV9yZXNvdXJj
ZVRyYWNraW5nRW5hYmxlZCA9IGVuYWJsZTsKIAotICAgIGlmIChlbmFibGUpIHsKLSAgICAgICAg
bV9jbGllbnQtPnJlc291cmNlVHJhY2tpbmdXYXNFbmFibGVkKCk7CisgICAgaWYgKGVuYWJsZSkK
ICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+cmVkaXJlY3RTY2hlZHVsZXIo
KS0+c2NoZWR1bGVSZWZyZXNoKHRydWUpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NsaWVudC0+
cmVzb3VyY2VUcmFja2luZ1dhc0Rpc2FibGVkKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6c2V0UmVzb3VyY2VUcmFja2luZyhib29sIGVuYWJsZSkKLXsKLSAgICBpZiAoIWVuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7Ci0g
ICAgbV9yZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IGVuYWJsZTsKKyAgICBzYXZlSW5zcGVjdG9y
U3RhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVTZXR0aW5nc0xv
YWRlZCgpCkBAIC0xMTY2LDE0ICsxMTk2LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5zdXJlU2V0dGluZ3NMb2FkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgbV9zZXR0aW5nc0xv
YWRlZCA9IHRydWU7CiAKLSAgICBTdHJpbmcgcmVzb3VyY2VUcmFja2luZyA9IHNldHRpbmcocmVz
b3VyY2VUcmFja2luZ0VuYWJsZWRTZXR0aW5nTmFtZSk7Ci0gICAgaWYgKHJlc291cmNlVHJhY2tp
bmcgPT0gInRydWUiKQorICAgIFN0cmluZyByZXNvdXJjZVRyYWNraW5nQWx3YXlzRW5hYmxlZCA9
IHNldHRpbmcocmVzb3VyY2VUcmFja2luZ0Fsd2F5c0VuYWJsZWRTZXR0aW5nTmFtZSk7CisgICAg
aWYgKHJlc291cmNlVHJhY2tpbmdBbHdheXNFbmFibGVkID09ICJ0cnVlIikKICAgICAgICAgbV9y
ZXNvdXJjZVRyYWNraW5nRW5hYmxlZCA9IHRydWU7Ci0gICAgbV9jbGllbnQtPnJlc291cmNlVHJh
Y2tpbmdXYXNFbmFibGVkKCk7CiAKLSAgICBTdHJpbmcgbW9uaXRvcmluZ1hIUiA9IHNldHRpbmco
bW9uaXRvcmluZ1hIUlNldHRpbmdOYW1lKTsKLSAgICBpZiAobW9uaXRvcmluZ1hIUiA9PSAidHJ1
ZSIpCisgICAgU3RyaW5nIG1vbml0b3JpbmdYSFJBbHdheXNFbmFibGVkID0gc2V0dGluZyhtb25p
dG9yaW5nWEhSU2V0dGluZ05hbWUpOworICAgIGlmIChtb25pdG9yaW5nWEhSQWx3YXlzRW5hYmxl
ZCA9PSAidHJ1ZSIpCiAgICAgICAgIG1fbW9uaXRvcmluZ1hIUiA9IHRydWU7CisKKyAgICBzYXZl
SW5zcGVjdG9yU3RhdGUoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRp
bWVsaW5lUHJvZmlsZXIoKQpAQCAtMTE4Nyw3ICsxMjE4LDggQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzdGFydFRpbWVsaW5lUHJvZmlsZXIoKQogICAgIG1fdGltZWxpbmVBZ2VudCA9IG5l
dyBJbnNwZWN0b3JUaW1lbGluZUFnZW50KG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmIChtX2Zy
b250ZW5kKQogICAgICAgICBtX2Zyb250ZW5kLT50aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgp
OwotICAgIG1fY2xpZW50LT50aW1lbGluZVByb2ZpbGVyV2FzU3RhcnRlZCgpOworCisgICAgc2F2
ZUluc3BlY3RvclN0YXRlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRp
bWVsaW5lUHJvZmlsZXIoKQpAQCAtMTIwMSw3ICsxMjMzLDggQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzdG9wVGltZWxpbmVQcm9maWxlcigpCiAgICAgbV90aW1lbGluZUFnZW50ID0gMDsK
ICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgbV9mcm9udGVuZC0+dGltZWxpbmVQcm9maWxl
cldhc1N0b3BwZWQoKTsKLSAgICBtX2NsaWVudC0+dGltZWxpbmVQcm9maWxlcldhc1N0b3BwZWQo
KTsKKworICAgIHNhdmVJbnNwZWN0b3JTdGF0ZSgpOwogfQogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CkBAIC0xNTczLDE0ICsxNjA2LDE0IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJvZmls
ZXJFbmFibGVkKCkgY29uc3QKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlUHJvZmls
ZXIoYm9vbCBhbHdheXMsIGJvb2wgc2tpcFJlY29tcGlsZSkKIHsKICAgICBpZiAoYWx3YXlzKQot
ICAgICAgICBzZXRTZXR0aW5nKHByb2ZpbGVyRW5hYmxlZFNldHRpbmdOYW1lLCAidHJ1ZSIpOwor
ICAgICAgICBzZXRTZXR0aW5nKHByb2ZpbGVyQWx3YXlzRW5hYmxlZFNldHRpbmdOYW1lLCAidHJ1
ZSIpOwogICAgIG1fcHJvZmlsZXJBZ2VudC0+ZW5hYmxlKHNraXBSZWNvbXBpbGUpOwogfQogCiB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2FibGVQcm9maWxlcihib29sIGFsd2F5cykKIHsK
ICAgICBpZiAoYWx3YXlzKQotICAgICAgICBzZXRTZXR0aW5nKHByb2ZpbGVyRW5hYmxlZFNldHRp
bmdOYW1lLCAiZmFsc2UiKTsKKyAgICAgICAgc2V0U2V0dGluZyhwcm9maWxlckFsd2F5c0VuYWJs
ZWRTZXR0aW5nTmFtZSwgImZhbHNlIik7CiAgICAgbV9wcm9maWxlckFnZW50LT5kaXNhYmxlKCk7
CiB9CiAjZW5kaWYKQEAgLTE1OTAsNyArMTYyMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQoYm9vbCBhbHdheXMpCiB7CiAgICAgQVNTRVJU
KCFkZWJ1Z2dlckVuYWJsZWQoKSk7CiAgICAgaWYgKGFsd2F5cykKLSAgICAgICAgc2V0U2V0dGlu
ZyhkZWJ1Z2dlckVuYWJsZWRTZXR0aW5nTmFtZSwgInRydWUiKTsKKyAgICAgICAgc2V0U2V0dGlu
ZyhkZWJ1Z2dlckFsd2F5c0VuYWJsZWRTZXR0aW5nTmFtZSwgInRydWUiKTsKIAogICAgIEFTU0VS
VChtX2luc3BlY3RlZFBhZ2UpOwogCkBAIC0xNjIxLDcgKzE2NTQsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcihib29sIGFsd2F5cykKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGFsd2F5cykKLSAgICAgICAgc2V0U2V0dGluZyhkZWJ1Z2dlckVuYWJsZWRT
ZXR0aW5nTmFtZSwgImZhbHNlIik7CisgICAgICAgIHNldFNldHRpbmcoZGVidWdnZXJBbHdheXNF
bmFibGVkU2V0dGluZ05hbWUsICJmYWxzZSIpOwogCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFn
ZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2MDUyM2I2
Li41NWI4NTU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0x
MjksNiArMTI5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2F2ZVNlc3Npb25TZXR0aW5ncyhjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGdldFNldHRpbmdzKFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
Kik7CiAKKyAgICB2b2lkIHJlc3RvcmVJbnNwZWN0b3JTdGF0ZShjb25zdCBTdHJpbmcmIGluc3Bl
Y3RvclN0YXRlKTsKKwogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBoaWdobGln
aHQoTm9kZSopOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwpAQCAtMTc0LDggKzE3Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcik7CiAgICAgdm9pZCBzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKIAotICAgIHZvaWQgc2V0UmVzb3VyY2VU
cmFja2luZyhib29sIGVuYWJsZSk7Ci0gICAgdm9pZCBzZXRSZXNvdXJjZVRyYWNraW5nKGJvb2wg
ZW5hYmxlLCBib29sIGFsd2F5cywgYm9vbCogbmV3U3RhdGUpOworICAgIHZvaWQgc2V0UmVzb3Vy
Y2VUcmFja2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0UmVzb3VyY2VUcmFj
a2luZ0VuYWJsZWQoYm9vbCBlbmFibGUsIGJvb2wgYWx3YXlzLCBib29sKiBuZXdTdGF0ZSk7CiAg
ICAgYm9vbCByZXNvdXJjZVRyYWNraW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3Vy
Y2VUcmFja2luZ0VuYWJsZWQ7IH0KIAogICAgIHZvaWQgZW5zdXJlU2V0dGluZ3NMb2FkZWQoKTsK
QEAgLTI3NSw4ICsyNzcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgaW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nTmFtZSgpOwogCiBwcml2YXRlOgotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcmIGZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpOwotICAgIFN0cmlu
ZyBnZXRCYWNrZW5kU2V0dGluZ3MoKTsKKyAgICB2b2lkIHNhdmVJbnNwZWN0b3JTdGF0ZSgpOwor
ICAgIHZvaWQgZ2V0SW5zcGVjdG9yU3RhdGUoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0YXRl
KTsKIAogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIGZyaWVuZCBjbGFz
cyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTI5Miw3ICsyOTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZW5hYmxlU2VhcmNoaW5nRm9yTm9kZSgpIHsgc2V0U2VhcmNoaW5nRm9yTm9k
ZSh0cnVlKTsgfQogICAgIHZvaWQgZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUoKSB7IHNldFNlYXJj
aGluZ0Zvck5vZGUoZmFsc2UpOyB9CiAKLSAgICB2b2lkIHNldE1vbml0b3JpbmdYSFIoYm9vbCBl
bmFibGVkLCBib29sKiBuZXdTdGF0ZSk7CisgICAgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxl
ZChib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0YXRlKTsKICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2
ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1lKTsKICAgICBJbnNwZWN0b3JET01BZ2VudCog
ZG9tQWdlbnQoKSB7IHJldHVybiBtX2RvbUFnZW50LmdldCgpOyB9CiAgICAgdm9pZCByZWxlYXNl
RnJvbnRlbmRMaWZldGltZUFnZW50cygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGVWaWV3LmpzCmluZGV4IDcyYTAxNzIuLjZmOGJkOGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTQwNSw3ICs0MDUsNyBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IubW9uaXRvcmluZ1hIUkVuYWJsZWQgPSBuZXdTdGF0ZTsKICAgICAgICAgfQotICAg
ICAgICB2YXIgaXRlbUFjdGlvbiA9IEluc3BlY3RvckJhY2tlbmQuc2V0TW9uaXRvcmluZ1hIUi5i
aW5kKEluc3BlY3RvckJhY2tlbmQsICFXZWJJbnNwZWN0b3IubW9uaXRvcmluZ1hIUkVuYWJsZWQs
IG1vbml0b3JpbmdYSFJXYXNDaGFuZ2VkKTsKKyAgICAgICAgdmFyIGl0ZW1BY3Rpb24gPSBJbnNw
ZWN0b3JCYWNrZW5kLnNldE1vbml0b3JpbmdYSFJFbmFibGVkLmJpbmQoSW5zcGVjdG9yQmFja2Vu
ZCwgIVdlYkluc3BlY3Rvci5tb25pdG9yaW5nWEhSRW5hYmxlZCwgbW9uaXRvcmluZ1hIUldhc0No
YW5nZWQpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJYTUxIdHRwUmVxdWVzdCBsb2dnaW5nIiksIGl0ZW1BY3Rpb24sIFdlYklu
c3BlY3Rvci5tb25pdG9yaW5nWEhSRW5hYmxlZCk7CiAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGVhciBDb25zb2xlIiksIHRoaXMucmVxdWVz
dENsZWFyTWVzc2FnZXMuYmluZCh0aGlzKSk7CiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZl
bnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1Bh
bmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCmlu
ZGV4IDBjNmFiZTAuLmYzMjliMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanMKQEAgLTc2NSwxMSArNzY1LDExIEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNvcnRpbmdTZWxlY3RF
bGVtZW50LnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZXMgPSB7fTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTE1hcCA9IHt9Owot
ICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRSZXNvdXJjZVRyYWNraW5nKGZhbHNlLCB0
cnVlLCBjYWxsYmFjayk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFJlc291cmNl
VHJhY2tpbmdFbmFibGVkKGZhbHNlLCB0cnVlLCBjYWxsYmFjayk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbi52aXNpYmxlID0gdHJ1ZTsK
ICAgICAgICAgICAgIHRoaXMuc29ydGluZ1NlbGVjdEVsZW1lbnQudmlzaWJsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFJlc291cmNlVHJhY2tpbmcodHJ1ZSwgISFv
cHRpb25hbEFsd2F5cywgY2FsbGJhY2spOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRSZXNvdXJjZVRyYWNraW5nRW5hYmxlZCh0cnVlLCAhIW9wdGlvbmFsQWx3YXlzLCBjYWxsYmFj
ayk7CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMKaW5kZXggNTJhOGJkMC4uNjNmMjY0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcwpAQCAtODIsMjEgKzgyLDkgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzLmlu
aXRpYWxpemUgPSBmdW5jdGlvbigpCiAgICAgICAgIFdlYkluc3BlY3Rvci5zZXNzaW9uU2V0dGlu
Z3MuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2FkZWQiKTsKICAgICB9CiAKLSAgICBmdW5j
dGlvbiBwb3B1bGF0ZUJhY2tlbmRTZXR0aW5ncyhzZXR0aW5nc1N0cmluZykKLSAgICB7Ci0gICAg
ICAgIHZhciBzZXR0aW5ncyA9IEpTT04ucGFyc2Uoc2V0dGluZ3NTdHJpbmcpOwotCi0gICAgICAg
IFdlYkluc3BlY3Rvci5tb25pdG9yaW5nWEhSRW5hYmxlZCA9IHNldHRpbmdzLm1vbml0b3JpbmdY
SFJFbmFibGVkOwotICAgICAgICBpZiAoc2V0dGluZ3MucmVzb3VyY2VUcmFja2luZ0VuYWJsZWQp
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZXNvdXJjZVRyYWNr
aW5nV2FzRW5hYmxlZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cGFuZWxzLnJlc291cmNlcy5yZXNvdXJjZVRyYWNraW5nV2FzRGlzYWJsZWQoKTsKLSAgICB9Ci0K
ICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFNldHRpbmdzKGZ1bmN0aW9uKHNldHRpbmdzKSB7CiAg
ICAgICAgIHBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyhzZXR0aW5ncy5hcHBsaWNhdGlvbik7
CiAgICAgICAgIHBvcHVsYXRlU2Vzc2lvblNldHRpbmdzKHNldHRpbmdzLnNlc3Npb24pOwotICAg
ICAgICBwb3B1bGF0ZUJhY2tlbmRTZXR0aW5ncyhzZXR0aW5ncy5iYWNrZW5kKTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggYWMzZjNm
Yy4uMGY4NTU0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBA
IC01ODMsNiArNTgzLDE2IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigp
CiAKICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5pbml0RXh0ZW5zaW9ucygpOwogCisgICAgZnVu
Y3Rpb24gcG9wdWxhdGVJbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JTdGF0ZSkKKyAgICB7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5tb25pdG9yaW5nWEhSRW5hYmxlZCA9IGluc3BlY3RvclN0YXRlLm1v
bml0b3JpbmdYSFJFbmFibGVkOworICAgICAgICBpZiAoaW5zcGVjdG9yU3RhdGUucmVzb3VyY2VU
cmFja2luZ0VuYWJsZWQpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNl
cy5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291cmNlcy5yZXNvdXJjZVRyYWNraW5nV2FzRGlzYWJs
ZWQoKTsKKyAgICB9CisgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRJbnNwZWN0b3JTdGF0ZShwb3B1
bGF0ZUluc3BlY3RvclN0YXRlKTsKKwogICAgIEluc3BlY3RvckJhY2tlbmQucG9wdWxhdGVTY3Jp
cHRPYmplY3RzKCk7CiAKICAgICAvLyBBcyBhIERPTUFnZW50IG1ldGhvZCwgdGhpcyBuZWVkcyB0
byBoYXBwZW4gYWZ0ZXIgdGhlIGZyb250ZW5kIGhhcyBsb2FkZWQgYW5kIHRoZSBhZ2VudCBpcyBh
dmFpbGFibGUuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0N2IwZTYzLi45ZGFjOTVlIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxMC0wOS0xNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3JpbmcuIGdldEJhY2tlbmRTZXR0aW5ncyB3YXMg
cmVuYW1lZCB0byBnZXRJbnNwZWN0b3JTdGF0ZS4KKworICAgICAgICBXZSBoYXZlIGEgbG90IG9m
IGZsYWdzIGluc2lkZSBJbnNwZWN0b3IuCisgICAgICAgIFNvbWUgb2YgdGhlbSBhcmUgc2V0dGlu
Z3MsIHRoZSBvdGhlcnMgYXJlIHRoZSBydW50aW1lIHN0YXRlIG9mIGluc3BlY3Rvci4KKyAgICAg
ICAgSXQnZCBiZSBiZXR0ZXIgdG8gdHJhbnNmZXIgdGhlc2UgZmxhZ3MgdG8gZnJvbnRlbmQgc2lk
ZSBhbmQgcGVyc2lzdC9yZXN0b3JlCisgICAgICAgIHRvL2Zyb20gYnJvd3NlciAoY2hyb21pdW0g
c3BlY2lmaWMpIHRvZ2V0aGVyIGFzIHRoZSBJbnNwZWN0b3Igc3RhdGUuCisgICAgICAgIEFzIHJl
c3VsdCB3ZSBjYW4gZHJvcCBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIHBlcnNpc3RpbmcvcmVzdG9y
aW5nIHRoZSBzdGF0ZSBvZgorICAgICAgICByZXNvdXJjZVRyYWNraW5nIGFuZCB0aW1lbGluZVBy
b2ZpbGVyIGFuZCBvdGhlciBpbnNwZWN0b3Igc3RhdGUgZmxhZ3MgaW4gdGhlIGZ1dHVyZS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU5NzQKKwor
ICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5zcGVjdG9yQ2xpZW50SW1wbDo6cGVyc2lzdEluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKiBz
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRSdW50
aW1lUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6cGVy
c2lzdEluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
aDoKKwogMjAxMC0wOS0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjY3NzQ5LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggNzZhY2JiMi4uMTExN2Fj
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0x
MDAsMjggKzEwMCwxMCBAQCBib29sIEluc3BlY3RvckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6cmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQo
KQordm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpzYXZlSW5zcGVjdG9yU3RhdGUoY29uc3QgV1RG
OjpTdHJpbmcmIGluc3BlY3RvclN0YXRlKQogewogICAgIGlmIChXZWJEZXZUb29sc0FnZW50SW1w
bCogYWdlbnQgPSBkZXZUb29sc0FnZW50KCkpCi0gICAgICAgIGFnZW50LT5yZXNvdXJjZVRyYWNr
aW5nV2FzRW5hYmxlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnJlc291cmNl
VHJhY2tpbmdXYXNEaXNhYmxlZCgpCi17Ci0gICAgaWYgKFdlYkRldlRvb2xzQWdlbnRJbXBsKiBh
Z2VudCA9IGRldlRvb2xzQWdlbnQoKSkKLSAgICAgICAgYWdlbnQtPnJlc291cmNlVHJhY2tpbmdX
YXNEaXNhYmxlZCgpOwotfQotCi12b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnRpbWVsaW5lUHJv
ZmlsZXJXYXNTdGFydGVkKCkKLXsKLSAgICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFnZW50
ID0gZGV2VG9vbHNBZ2VudCgpKQotICAgICAgICBhZ2VudC0+dGltZWxpbmVQcm9maWxlcldhc1N0
YXJ0ZWQoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjp0aW1lbGluZVByb2ZpbGVy
V2FzU3RvcHBlZCgpCi17Ci0gICAgaWYgKFdlYkRldlRvb2xzQWdlbnRJbXBsKiBhZ2VudCA9IGRl
dlRvb2xzQWdlbnQoKSkKLSAgICAgICAgYWdlbnQtPnRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVk
KCk7CisgICAgICAgIGFnZW50LT5zYXZlSW5zcGVjdG9yU3RhdGUoaW5zcGVjdG9yU3RhdGUpOwog
fQogCiBXZWJEZXZUb29sc0FnZW50SW1wbCogSW5zcGVjdG9yQ2xpZW50SW1wbDo6ZGV2VG9vbHNB
Z2VudCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmluZGV4IDM0
ZmNkYzMuLjU4NWNmZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1w
bC5oCkBAIC01OCwxMCArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VU
cmFja2luZ1dhc0Rpc2FibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRpbWVsaW5lUHJvZmlsZXJX
YXNTdGFydGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRpbWVsaW5lUHJvZmlsZXJXYXNTdG9wcGVk
KCk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbnNwZWN0b3JTdGF0ZShjb25zdCBXVEY6OlN0cmlu
ZyYpOwogcHJpdmF0ZToKICAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogZGV2VG9vbHNBZ2VudCgp
OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4
IDliYTYzZWMuLmUxZGJjNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2
VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNB
Z2VudEltcGwuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCkBAIC02OCw4ICs2Nyw2IEBAIHVzaW5nIFdlYkNvcmU6OkluamVjdGVkU2Ny
aXB0SG9zdDsKIHVzaW5nIFdlYkNvcmU6Okluc3BlY3RvckFycmF5OwogdXNpbmcgV2ViQ29yZTo6
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CiB1c2luZyBXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOwotdXNpbmcgV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0OwotdXNpbmcgV2ViQ29yZTo6
SW5zcGVjdG9yVmFsdWU7CiB1c2luZyBXZWJDb3JlOjpOb2RlOwogdXNpbmcgV2ViQ29yZTo6UGFn
ZTsKIHVzaW5nIFdlYkNvcmU6OlJlc291cmNlRXJyb3I7CkBAIC04MywxMCArODAsOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIga0Zyb250
ZW5kQ29ubmVjdGVkRmVhdHVyZU5hbWVbXSA9ICJmcm9udGVuZC1jb25uZWN0ZWQiOwotc3RhdGlj
IGNvbnN0IGNoYXIga1Jlc291cmNlVHJhY2tpbmdGZWF0dXJlTmFtZVtdID0gInJlc291cmNlLXRy
YWNraW5nIjsKLXN0YXRpYyBjb25zdCBjaGFyIGtUaW1lbGluZUZlYXR1cmVOYW1lW10gPSAidGlt
ZWxpbmUtcHJvZmlsZXIiOwogc3RhdGljIGNvbnN0IGNoYXIga0FwdUFnZW50RmVhdHVyZU5hbWVb
XSA9ICJhcHUtYWdlbnQiOworc3RhdGljIGNvbnN0IGNoYXIga0Zyb250ZW5kQ29ubmVjdGVkRmVh
dHVyZU5hbWVbXSA9ICJmcm9udGVuZC1jb25uZWN0ZWQiOworc3RhdGljIGNvbnN0IGNoYXIga0lu
c3BlY3RvclN0YXRlRmVhdHVyZU5hbWVbXSA9ICJpbnNwZWN0b3Itc3RhdGUiOwogCiBjbGFzcyBD
bGllbnRNZXNzYWdlTG9vcEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKIHB1YmxpYzoKQEAgLTI1MiwxMSArMjQ4LDkgQEAgdm9p
ZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2V0UnVudGltZVByb3BlcnR5KGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3QKIHsKICAgICBpZiAobmFtZSA9PSBrQXB1QWdlbnRGZWF0dXJl
TmFtZSkKICAgICAgICAgc2V0QXB1QWdlbnRFbmFibGVkKHZhbHVlID09ICJ0cnVlIik7Ci0gICAg
ZWxzZSBpZiAobmFtZSA9PSBrVGltZWxpbmVGZWF0dXJlTmFtZSkKLSAgICAgICAgc2V0VGltZWxp
bmVQcm9maWxpbmdFbmFibGVkKHZhbHVlID09ICJ0cnVlIik7Ci0gICAgZWxzZSBpZiAobmFtZSA9
PSBrUmVzb3VyY2VUcmFja2luZ0ZlYXR1cmVOYW1lKSB7CisgICAgZWxzZSBpZiAobmFtZSA9PSBr
SW5zcGVjdG9yU3RhdGVGZWF0dXJlTmFtZSkgewogICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVy
KiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICAgICAgaWMtPnNldFJlc291cmNlVHJh
Y2tpbmcodmFsdWUgPT0gInRydWUiKTsKKyAgICAgICAgaWMtPnJlc3RvcmVJbnNwZWN0b3JTdGF0
ZSh2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGtGcm9udGVuZENvbm5lY3RlZEZlYXR1
cmVOYW1lICYmICFpbnNwZWN0b3JDb250cm9sbGVyKCktPmhhc0Zyb250ZW5kKCkpIHsKICAgICAg
ICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+c2V0SW5qZWN0
ZWRTY3JpcHRTb3VyY2UodmFsdWUpOwogICAgICAgICBjb25uZWN0RnJvbnRlbmQodHJ1ZSk7CkBA
IC0yNzUsMTMgKzI2OSwxMyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRBcHVBZ2Vu
dEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICBpZiAoIW1fcmVzb3VyY2VUcmFja2luZ1dh
c0VuYWJsZWQpIHsKICAgICAgICAgICAgIC8vIFRPRE8oa25vcnRvbik6IEludHJvZHVjZSBzb21l
IGtpbmQgb2YgYWdlbnRzIGRlcGVuZGVuY3kgaGVyZSBzbyB0aGF0CiAgICAgICAgICAgICAvLyB1
c2VyIGNvdWxkIHR1cm4gb2ZmIHJlc291cmNlIHRyYWNraW5nIHdoaWxlIGFwdSBhZ2VudCBpcyBv
bi4KLSAgICAgICAgICAgIGljLT5zZXRSZXNvdXJjZVRyYWNraW5nKHRydWUpOworICAgICAgICAg
ICAgaWMtPnNldFJlc291cmNlVHJhY2tpbmdFbmFibGVkKHRydWUpOwogICAgICAgICB9CiAgICAg
ICAgIG1fZGVidWdnZXJBZ2VudEltcGwtPnNldEF1dG9Db250aW51ZU9uRXhjZXB0aW9uKHRydWUp
OwogICAgIH0gZWxzZSB7CiAgICAgICBpYy0+c3RvcFRpbWVsaW5lUHJvZmlsZXIoKTsKICAgICAg
IGlmICghbV9yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCkKLSAgICAgICAgICBpYy0+c2V0UmVz
b3VyY2VUcmFja2luZyhmYWxzZSk7CisgICAgICAgICAgaWMtPnNldFJlc291cmNlVHJhY2tpbmdF
bmFibGVkKGZhbHNlKTsKICAgICAgIG1fcmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQgPSBmYWxz
ZTsKICAgICB9CiAgICAgbV9jbGllbnQtPnJ1bnRpbWVQcm9wZXJ0eUNoYW5nZWQoCkBAIC00MDgs
MjQgKzQwMiw5IEBAIGJvb2wgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6cmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQoKQot
ewotICAgIG1fY2xpZW50LT5ydW50aW1lUHJvcGVydHlDaGFuZ2VkKGtSZXNvdXJjZVRyYWNraW5n
RmVhdHVyZU5hbWUsICJ0cnVlIik7Ci19Ci0KLXZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnJl
c291cmNlVHJhY2tpbmdXYXNEaXNhYmxlZCgpCi17Ci0gICAgbV9jbGllbnQtPnJ1bnRpbWVQcm9w
ZXJ0eUNoYW5nZWQoa1Jlc291cmNlVHJhY2tpbmdGZWF0dXJlTmFtZSwgImZhbHNlIik7Ci19Ci0K
LXZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnRpbWVsaW5lUHJvZmlsZXJXYXNTdGFydGVkKCkK
LXsKLSAgICBtX2NsaWVudC0+cnVudGltZVByb3BlcnR5Q2hhbmdlZChrVGltZWxpbmVGZWF0dXJl
TmFtZSwgInRydWUiKTsKLX0KLQotdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6dGltZWxpbmVQ
cm9maWxlcldhc1N0b3BwZWQoKQordm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2F2ZUluc3Bl
Y3RvclN0YXRlKGNvbnN0IFdURjo6U3RyaW5nJiBzdGF0ZSkKIHsKLSAgICBtX2NsaWVudC0+cnVu
dGltZVByb3BlcnR5Q2hhbmdlZChrVGltZWxpbmVGZWF0dXJlTmFtZSwgImZhbHNlIik7CisgICAg
bV9jbGllbnQtPnJ1bnRpbWVQcm9wZXJ0eUNoYW5nZWQoa0luc3BlY3RvclN0YXRlRmVhdHVyZU5h
bWUsIHN0YXRlKTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6ZXZhbHVhdGVJbldl
Ykluc3BlY3Rvcihsb25nIGNhbGxJZCwgY29uc3QgV2ViU3RyaW5nJiBzY3JpcHQpCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmggYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgKaW5kZXggMWQzMDZjNC4uOWEzMjI2
ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaApAQCAtOTMs
MTAgKzkzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXVEY6OlN0cmluZyYga2V5LCBX
VEY6OlN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3Qg
V1RGOjpTdHJpbmcmIGtleSwgY29uc3QgV1RGOjpTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
b3VyY2VUcmFja2luZ1dhc0Rpc2FibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRpbWVsaW5lUHJv
ZmlsZXJXYXNTdGFydGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRpbWVsaW5lUHJvZmlsZXJXYXNT
dG9wcGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbnNwZWN0b3JTdGF0ZShjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
V1RGOjpTdHJpbmcmKTsKIAogICAgIGludCBob3N0SWQoKSB7IHJldHVybiBtX2hvc3RJZDsgfQo=
</data>
<flag name="review"
          id="57525"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>