<?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>142432</bug_id>
          
          <creation_ts>2015-03-06 21:48:43 -0800</creation_ts>
          <short_desc>[Win] Revive WTF::WorkQueue on Windows</short_desc>
          <delta_ts>2015-03-08 20:24:59 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>142447</blocked>
    
    <blocked>142471</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075238</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-06 21:48:43 -0800</bug_when>
    <thetext>Revive the Windows WorkQueue implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075239</commentid>
    <comment_count>1</comment_count>
      <attachid>248143</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-06 22:07:05 -0800</bug_when>
    <thetext>Created attachment 248143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075292</commentid>
    <comment_count>2</comment_count>
      <attachid>248143</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-03-07 13:04:11 -0800</bug_when>
    <thetext>Comment on attachment 248143
Patch

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

&gt; Source/WTF/wtf/WorkQueue.h:79
&gt; +    void registerHandle(HANDLE, std::function&lt;void()&gt;);
&gt; +    void unregisterAndCloseHandle(HANDLE);

I think we can get rid of these - they were only used by IPC in WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075340</commentid>
    <comment_count>3</comment_count>
      <attachid>248143</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 20:50:46 -0800</bug_when>
    <thetext>Comment on attachment 248143
Patch

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

&gt;&gt; Source/WTF/wtf/WorkQueue.h:79
&gt;&gt; +    void unregisterAndCloseHandle(HANDLE);
&gt; 
&gt; I think we can get rid of these - they were only used by IPC in WK2.

I&apos;ll get rid of it. It&apos;s easy to retrieve if we need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075341</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-07 20:58:18 -0800</bug_when>
    <thetext>Committed r181220: &lt;http://trac.webkit.org/changeset/181220&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248143</attachid>
            <date>2015-03-06 22:07:05 -0800</date>
            <delta_ts>2015-03-07 08:53:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142432-20150306221554.patch</filename>
            <type>text/plain</type>
            <size>23015</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODEyMDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5dIFJldml2ZSBXVEY6OldvcmtRdWV1ZSBv
biBXaW5kb3dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDI0MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXZpdmUgdGhlIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YgV1RGOjpXb3JrUXVldWUuCisK
KyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAgICAgKiBXVEYudmN4cHJv
ai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAg
ICAgKiB3dGYvd2luL1dvcmtJdGVtV2luLmNwcDogQWRkZWQuCisgICAgICAgICogd3RmL3dpbi9X
b3JrSXRlbVdpbi5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHA6
IEFkZGVkLgorCiAyMDE1LTAzLTA2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IGNyYXNoZXMgc2VlbiBvbiB0aGUgdGhlIFdpbmRvd3MgYnVpbGRib3Rz
IGFmdGVyIG15IGxhc3QgcGF0Y2guCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oJ
KHJldmlzaW9uIDE4MTE5MikKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksMTAgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHd0Zlx1bmljb2RlXFVURjguY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cd3RmXHdpblxNYWluVGhyZWFkV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHd0Zlx3aW5cUnVuTG9vcFdpbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcd2luXFdvcmtJdGVtV2luLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHd0Zlx3aW5cV29ya1F1ZXVlV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHd0Zlx3aW5cV1RGRExMLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxX
b3JrUXVldWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFdURlRocmVh
ZERhdGEuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFNjaGVkdWxlUGFp
ckNGLmNwcCIgLz4KICAgPC9JdGVtR3JvdXA+CkBAIC0zMDYsNiArMzA5LDggQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxWZWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0ZlxWTVRhZ3MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0Zlx3
aW5cR0RJT2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcd2luXFdv
cmtJdGVtV2luLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcV29ya1F1ZXVl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcV1RGVGhyZWFkRGF0YS5oIiAv
PgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTc2OSw0ICs3NzQsNCBAQAogICA8
SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAv
PgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdy
b3VwPgotPC9Qcm9qZWN0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE4MTE5MikKKysrIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVy
cwkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDYgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0
dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJ
dGVtR3JvdXA+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJ3aW4iPgotICAgICAgPFVuaXF1ZUlkZW50
aWZpZXI+e2I3ZDc4N2NiLTJiMmItNDg5OC04ZDAzLWI5NDExNWU1OTZkMX08L1VuaXF1ZUlkZW50
aWZpZXI+Ci0gICAgPC9GaWx0ZXI+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJkdG9hIj4KICAgICAg
IDxVbmlxdWVJZGVudGlmaWVyPntlYWEzNjkzOS0xOTc2LTQ5NWYtYjllZC05MDA3NGVlNGYyYmV9
PC9VbmlxdWVJZGVudGlmaWVyPgogICAgIDwvRmlsdGVyPgpAQCAtMjgsNiArMjUsOSBAQAogICAg
IDxGaWx0ZXIgSW5jbHVkZT0id3RmXGdvYmplY3QiPgogICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+
e2VkZDZjY2M4LWU2ZWUtNDFlYy1hNThkLTk0MDRhMzBjMGM3ZX08L1VuaXF1ZUlkZW50aWZpZXI+
CiAgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJ3dGZcd2luIj4KKyAgICAgIDxV
bmlxdWVJZGVudGlmaWVyPntiN2Q3ODdjYi0yYjJiLTQ4OTgtOGQwMy1iOTQxMTVlNTk2ZDF9PC9V
bmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1H
cm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxkdG9hXGJpZ251bS1kdG9hLmNj
Ij4KQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgIDxGaWx0ZXI+dGV4dDwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHdpblxNYWluVGhyZWFk
V2luLmNwcCI+Ci0gICAgICA8RmlsdGVyPndpbjwvRmlsdGVyPgorICAgICAgPEZpbHRlcj53dGZc
d2luPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcdGhyZWFkc1x3aW5cQmluYXJ5U2VtYXBob3JlV2luLmNwcCI+CiAgICAgICA8RmlsdGVy
PnRocmVhZHNcd2luPC9GaWx0ZXI+CkBAIC0yMzUsNyArMjM1LDcgQEAKICAgICAgIDxGaWx0ZXI+
d3RmPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llx3dGZcd2luXFJ1bkxvb3BXaW4uY3BwIj4KLSAgICAgIDxGaWx0ZXI+d2luPC9GaWx0ZXI+Cisg
ICAgICA8RmlsdGVyPnd0Zlx3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHd0Zlxnb2JqZWN0XEdNYWluTG9vcFNvdXJjZS5jcHAiPgogICAg
ICAgPEZpbHRlcj53dGZcZ29iamVjdDwvRmlsdGVyPgpAQCAtMjQ4LDcgKzI0OCwxNiBAQAogICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZXIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXHdpblxXVEZETEwuY3BwIj4K
LSAgICAgIDxGaWx0ZXI+d2luPC9GaWx0ZXI+CisgICAgICA8RmlsdGVyPnd0Zlx3aW48L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxXb3Jr
UXVldWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcd2luXFdvcmtRdWV1ZVdpbi5jcHAiPgor
ICAgICAgPEZpbHRlcj53dGZcd2luPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcd2luXFdvcmtJdGVtV2luLmNwcCI+CisgICAgICA8Rmls
dGVyPnd0Zlx3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAg
IDxJdGVtR3JvdXA+CkBAIC02NzEsNyArNjgwLDcgQEAKICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcd2lu
XEdESU9iamVjdC5oIj4KLSAgICAgIDxGaWx0ZXI+d2luPC9GaWx0ZXI+CisgICAgICA8RmlsdGVy
Pnd0Zlx3aW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHd0Zlxnb2JqZWN0XEdsaWJVdGlsaXRpZXMuaCI+CiAgICAgICA8RmlsdGVyPnd0Zlxn
b2JqZWN0PC9GaWx0ZXI+CkBAIC03MDcsOSArNzE2LDE1IEBACiAgICAgICA8RmlsdGVyPnd0Zlxn
b2JqZWN0PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcUmVmQ291bnRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XFdvcmtRdWV1ZS5oIj4KKyAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcd2luXFdvcmtJdGVtV2luLmgiPgor
ICAgICAgPEZpbHRlcj53dGZcd2luPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRl
bUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxOb25lIEluY2x1ZGU9IldURlBvc3RCdWlsZC5j
bWQiIC8+CiAgICAgPE5vbmUgSW5jbHVkZT0iV1RGUHJlQnVpbGQuY21kIiAvPgogICA8L0l0ZW1H
cm91cD4KLTwvUHJvamVjdD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9Xb3JrUXVldWUuaAkocmV2aXNpb24gMTgxMTkyKQorKysgU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNlbGlmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRl
IDxEaXNwYXRjaFF1ZXVlRWZsLmg+CisjZWxpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi93aW4vV29y
a0l0ZW1XaW4uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTcwLDYgKzc0LDkgQEAg
cHVibGljOgogCiAjaWYgT1MoREFSV0lOKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hR
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorI2VsaWYgT1MoV0lORE9X
UykKKyAgICB2b2lkIHJlZ2lzdGVySGFuZGxlKEhBTkRMRSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShIQU5ETEUpOwogI2VsaWYgUExB
VEZPUk0oR1RLKQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2b2lkIHVu
cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKQEAgLTg0LDYgKzkxLDE5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwg
UU9TKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCisjaWYgT1MoV0lORE9XUykK
KyAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBoYW5kbGVDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBC
T09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOworICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIHRpbWVy
Q2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKTsKKyAgICBz
dGF0aWMgRFdPUkQgV0lOQVBJIHdvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKKwor
ICAgIGJvb2wgdHJ5UmVnaXN0ZXJBc1dvcmtUaHJlYWQoKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJB
c1dvcmtUaHJlYWQoKTsKKyAgICB2b2lkIHBlcmZvcm1Xb3JrT25SZWdpc3RlcmVkV29ya1RocmVh
ZCgpOworCisgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbVNvb24o
UGFzc1JlZlB0cjxIYW5kbGVXb3JrSXRlbT4pOworICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgdW5y
ZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOworI2VuZGlm
CisKICNpZiBPUyhEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQq
KTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKQEAgLTk1LDYgKzExNSwx
NiBAQCBwcml2YXRlOgogICAgIEdNYWluTG9vcFNvdXJjZSBtX3NvY2tldEV2ZW50U291cmNlOwog
I2VsaWYgUExBVEZPUk0oRUZMKQogICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rpc3BhdGNo
UXVldWU7CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIHZvbGF0aWxlIExPTkcgbV9pc1dvcmtUaHJl
YWRSZWdpc3RlcmVkOworCisgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKKyAgICBWZWN0
b3I8UmVmUHRyPFdvcmtJdGVtV2luPj4gbV93b3JrSXRlbVF1ZXVlOworCisgICAgTXV0ZXggbV9o
YW5kbGVzTG9jazsKKyAgICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4g
bV9oYW5kbGVzOworCisgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKICNlbmRpZgogfTsKIApJbmRl
eDogU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi93aW4vV29ya0l0ZW1XaW4uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dU
Ri93dGYvd2luL1dvcmtJdGVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBA
CisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrSXRlbVdpbi5oIgorCisjaW5jbHVkZSA8
V2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV29y
a1F1ZXVlLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitXb3JrSXRlbVdpbjo6V29ya0l0ZW1XaW4o
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1ZXVlKQorICAgIDog
bV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAsIG1fcXVldWUocXVldWUpCit7Cit9CisKK1JlZlB0
cjxXb3JrSXRlbVdpbj4gV29ya0l0ZW1XaW46OmNyZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb24sIFdvcmtRdWV1ZSogcXVldWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
b3JrSXRlbVdpbihmdW5jdGlvbiwgcXVldWUpKTsKK30KKworV29ya0l0ZW1XaW46On5Xb3JrSXRl
bVdpbigpCit7Cit9CisKK0hhbmRsZVdvcmtJdGVtOjpIYW5kbGVXb3JrSXRlbShIQU5ETEUgaGFu
ZGxlLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uLCBXb3JrUXVldWUqIHF1
ZXVlKQorICAgIDogV29ya0l0ZW1XaW4oZnVuY3Rpb24sIHF1ZXVlKQorICAgICwgbV9oYW5kbGUo
aGFuZGxlKQorICAgICwgbV93YWl0SGFuZGxlKDApCit7CisgICAgQVNTRVJUX0FSRyhoYW5kbGUs
IGhhbmRsZSk7Cit9CisKK1JlZlB0cjxIYW5kbGVXb3JrSXRlbT4gSGFuZGxlV29ya0l0ZW06OmNy
ZWF0ZUJ5QWRvcHRpbmdIYW5kbGUoSEFORExFIGhhbmRsZSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+JiBmdW5jdGlvbiwgV29ya1F1ZXVlKiBxdWV1ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhhbmRsZVdvcmtJdGVtKGhhbmRsZSwgZnVuY3Rpb24sIHF1ZXVlKSk7Cit9CisKK0hh
bmRsZVdvcmtJdGVtOjp+SGFuZGxlV29ya0l0ZW0oKQoreworICAgIDo6Q2xvc2VIYW5kbGUobV9o
YW5kbGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3dp
bi9Xb3JrSXRlbVdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3dpbi9Xb3JrSXRl
bVdpbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvd2luL1dvcmtJdGVtV2luLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogUG9ydGlvbnMgQ29weXJp
Z2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYg
V29ya0l0ZW1XaW5faAorI2RlZmluZSBXb3JrSXRlbVdpbl9oCisKKyNpbmNsdWRlIDxXaW5kb3dz
Lmg+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitj
bGFzcyBXb3JrUXVldWU7CisKK2NsYXNzIFdvcmtJdGVtV2luIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFdvcmtJdGVtV2luPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXb3Jr
SXRlbVdpbj4gY3JlYXRlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgV29ya1F1ZXVlKik7CisgICAg
dmlydHVhbCB+V29ya0l0ZW1XaW4oKTsKKworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYgZnVu
Y3Rpb24oKSB7IHJldHVybiBtX2Z1bmN0aW9uOyB9CisgICAgV29ya1F1ZXVlKiBxdWV1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcXVldWUuZ2V0KCk7IH0KKworcHJvdGVjdGVkOgorICAgIFdvcmtJdGVt
V2luKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgV29ya1F1ZXVlKik7CisKK3ByaXZhdGU6CisgICAg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
bV9xdWV1ZTsKK307CisKK2NsYXNzIEhhbmRsZVdvcmtJdGVtIDogcHVibGljIFdvcmtJdGVtV2lu
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBjcmVhdGVCeUFk
b3B0aW5nSGFuZGxlKEhBTkRMRSwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiwgV29ya1F1
ZXVlKik7CisgICAgdmlydHVhbCB+SGFuZGxlV29ya0l0ZW0oKTsKKworICAgIHZvaWQgc2V0V2Fp
dEhhbmRsZShIQU5ETEUgd2FpdEhhbmRsZSkgeyBtX3dhaXRIYW5kbGUgPSB3YWl0SGFuZGxlOyB9
CisgICAgSEFORExFIHdhaXRIYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX3dhaXRIYW5kbGU7IH0K
KworcHJpdmF0ZToKKyAgICBIYW5kbGVXb3JrSXRlbShIQU5ETEUsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiYsIFdvcmtRdWV1ZSopOworCisgICAgSEFORExFIG1faGFuZGxlOworICAgIEhB
TkRMRSBtX3dhaXRIYW5kbGU7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dURi93
dGYvd2luL1dvcmtRdWV1ZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2lu
L1dvcmtRdWV1ZVdpbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi93aW4vV29y
a1F1ZXVlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2NSBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoK
KyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoK
KyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvd2luL1dvcmtJ
dGVtV2luLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIFdvcmtRdWV1ZTo6aGFuZGxlQ2Fs
bGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKQoreworICAgIEFT
U0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CisgICAgQVNTRVJUX0FSRyh0aW1lck9yV2FpdEZp
cmVkLCAhdGltZXJPcldhaXRGaXJlZCk7CisKKyAgICBXb3JrSXRlbVdpbiogaXRlbSA9IHN0YXRp
Y19jYXN0PFdvcmtJdGVtV2luKj4oY29udGV4dCk7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcXVl
dWUgPSBpdGVtLT5xdWV1ZSgpOworCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrKHF1
ZXVlLT5tX3dvcmtJdGVtUXVldWVMb2NrKTsKKyAgICAgICAgcXVldWUtPm1fd29ya0l0ZW1RdWV1
ZS5hcHBlbmQoaXRlbSk7CisKKyAgICAgICAgLy8gSWYgbm8gb3RoZXIgdGhyZWFkIGlzIHBlcmZv
cm1pbmcgd29yaywgd2UgY2FuIGRvIGl0IG9uIHRoaXMgdGhyZWFkLgorICAgICAgICBpZiAoIXF1
ZXVlLT50cnlSZWdpc3RlckFzV29ya1RocmVhZCgpKSB7CisgICAgICAgICAgICAvLyBTb21lIG90
aGVyIHRocmVhZCBpcyBwZXJmb3JtaW5nIHdvcmsuIFNpbmNlIHdlIGhvbGQgdGhlIHF1ZXVlIGxv
Y2ssIHdlIGNhbiBiZSBzdXJlCisgICAgICAgICAgICAvLyB0aGF0IHRoZSB3b3JrIHRocmVhZCBp
cyBub3QgZXhpdGluZyBkdWUgdG8gYW4gZW1wdHkgcXVldWUgYW5kIHdpbGwgcHJvY2VzcyB0aGUg
d29yaworICAgICAgICAgICAgLy8gaXRlbSB3ZSBqdXN0IGFkZGVkIHRvIGl0LiBJZiB3ZSB3ZXJl
bid0IGhvbGRpbmcgdGhlIGxvY2sgd2UnZCBoYXZlIHRvIHNpZ25hbAorICAgICAgICAgICAgLy8g
bV9wZXJmb3JtV29ya0V2ZW50IHRvIG1ha2Ugc3VyZSB0aGUgd29yayBpdGVtIGdvdCBwaWNrZWQg
dXAuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBxdWV1ZS0+
cGVyZm9ybVdvcmtPblJlZ2lzdGVyZWRXb3JrVGhyZWFkKCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVl
OjpyZWdpc3RlckhhbmRsZShIQU5ETEUgaGFuZGxlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVu
Y3Rpb24pCit7CisgICAgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBoYW5kbGVJdGVtID0gSGFuZGxl
V29ya0l0ZW06OmNyZWF0ZUJ5QWRvcHRpbmdIYW5kbGUoaGFuZGxlLCBmdW5jdGlvbiwgdGhpcyk7
CisgICAgcmVmKCk7CisKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9oYW5kbGVz
TG9jayk7CisgICAgICAgIEFTU0VSVF9BUkcoaGFuZGxlLCAhbV9oYW5kbGVzLmNvbnRhaW5zKGhh
bmRsZSkpOworICAgICAgICBtX2hhbmRsZXMuc2V0KGhhbmRsZSwgaGFuZGxlSXRlbSk7CisgICAg
fQorCisgICAgSEFORExFIHdhaXRIYW5kbGU7CisgICAgaWYgKCE6OlJlZ2lzdGVyV2FpdEZvclNp
bmdsZU9iamVjdCgmd2FpdEhhbmRsZSwgaGFuZGxlLCBoYW5kbGVDYWxsYmFjaywgaGFuZGxlSXRl
bS5nZXQoKSwgSU5GSU5JVEUsIFdUX0VYRUNVVEVERUZBVUxUKSkgeworICAgICAgICBEV09SRCBl
cnJvciA9IDo6R2V0TGFzdEVycm9yKCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKyAgICBoYW5kbGVJdGVtLT5zZXRXYWl0SGFuZGxlKHdhaXRIYW5kbGUpOworfQorCit2
b2lkIFdvcmtRdWV1ZTo6dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKEhBTkRMRSBoYW5kbGUpCit7
CisgICAgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPiBpdGVtOworICAgIHsKKyAgICAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1faGFuZGxlc0xvY2spOworICAgICAgICBBU1NFUlRfQVJHKGhhbmRsZSwg
bV9oYW5kbGVzLmNvbnRhaW5zKGhhbmRsZSkpOworICAgICAgICBpdGVtID0gbV9oYW5kbGVzLnRh
a2UoaGFuZGxlKTsKKyAgICB9CisKKyAgICB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtU29v
bihpdGVtLnJlbGVhc2UoKSk7Cit9CisKK0RXT1JEIFdvcmtRdWV1ZTo6d29ya1RocmVhZENhbGxi
YWNrKHZvaWQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUX0FSRyhjb250ZXh0LCBjb250ZXh0KTsK
KworICAgIFdvcmtRdWV1ZSogcXVldWUgPSBzdGF0aWNfY2FzdDxXb3JrUXVldWUqPihjb250ZXh0
KTsKKworICAgIGlmICghcXVldWUtPnRyeVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcXVldWUtPnBlcmZvcm1Xb3JrT25SZWdpc3RlcmVkV29ya1RocmVh
ZCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGVyZm9ybVdvcmtPblJl
Z2lzdGVyZWRXb3JrVGhyZWFkKCkKK3sKKyAgICBBU1NFUlQobV9pc1dvcmtUaHJlYWRSZWdpc3Rl
cmVkKTsKKworICAgIG1fd29ya0l0ZW1RdWV1ZUxvY2subG9jaygpOworCisgICAgd2hpbGUgKCFt
X3dvcmtJdGVtUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8V29ya0l0
ZW1XaW4+PiB3b3JrSXRlbVF1ZXVlOworICAgICAgICBtX3dvcmtJdGVtUXVldWUuc3dhcCh3b3Jr
SXRlbVF1ZXVlKTsKKworICAgICAgICAvLyBBbGxvdyBtb3JlIHdvcmsgdG8gYmUgc2NoZWR1bGVk
IHdoaWxlIHdlJ3JlIG5vdCB1c2luZyB0aGUgcXVldWUgZGlyZWN0bHkuCisgICAgICAgIG1fd29y
a0l0ZW1RdWV1ZUxvY2sudW5sb2NrKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya0l0ZW0gOiB3
b3JrSXRlbVF1ZXVlKQorICAgICAgICAgICAgd29ya0l0ZW0tPmZ1bmN0aW9uKCkoKTsKKyAgICAg
ICAgbV93b3JrSXRlbVF1ZXVlTG9jay5sb2NrKCk7CisgICAgfQorCisgICAgLy8gT25lIGludmFy
aWFudCB3ZSBtYWludGFpbiBpcyB0aGF0IGFueSB3b3JrIHNjaGVkdWxlZCB3aGlsZSBhIHdvcmsg
dGhyZWFkIGlzIHJlZ2lzdGVyZWQgd2lsbAorICAgIC8vIGJlIGhhbmRsZWQgYnkgdGhhdCB3b3Jr
IHRocmVhZC4gVW5yZWdpc3RlciBhcyB0aGUgd29yayB0aHJlYWQgd2hpbGUgdGhlIHF1ZXVlIGxv
Y2sgaXMgc3RpbGwKKyAgICAvLyBoZWxkIHNvIHRoYXQgbm8gd29yayBjYW4gYmUgc2NoZWR1bGVk
IHdoaWxlIHdlJ3JlIHN0aWxsIHJlZ2lzdGVyZWQuCisgICAgdW5yZWdpc3RlckFzV29ya1RocmVh
ZCgpOworCisgICAgbV93b3JrSXRlbVF1ZXVlTG9jay51bmxvY2soKTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7
CisgICAgbV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkID0gMDsKKyAgICBtX3RpbWVyUXVldWUgPSA6
OkNyZWF0ZVRpbWVyUXVldWUoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGltZXJRdWV1
ZSwgIjo6Q3JlYXRlVGltZXJRdWV1ZSBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6OkdldExhc3RF
cnJvcigpKTsKK30KKworYm9vbCBXb3JrUXVldWU6OnRyeVJlZ2lzdGVyQXNXb3JrVGhyZWFkKCkK
K3sKKyAgICBMT05HIHJlc3VsdCA9IDo6SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoJm1faXNX
b3JrVGhyZWFkUmVnaXN0ZXJlZCwgMSwgMCk7CisgICAgQVNTRVJUKCFyZXN1bHQgfHwgcmVzdWx0
ID09IDEpOworICAgIHJldHVybiAhcmVzdWx0OworfQorCit2b2lkIFdvcmtRdWV1ZTo6dW5yZWdp
c3RlckFzV29ya1RocmVhZCgpCit7CisgICAgTE9ORyByZXN1bHQgPSA6OkludGVybG9ja2VkQ29t
cGFyZUV4Y2hhbmdlKCZtX2lzV29ya1RocmVhZFJlZ2lzdGVyZWQsIDAsIDEpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gMSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQoreworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBNdXRleExvY2tl
ciBsb2NrKG1faGFuZGxlc0xvY2spOworICAgIEFTU0VSVChtX2hhbmRsZXMuaXNFbXB0eSgpKTsK
KyNlbmRpZgorCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgYW55IHRpbWVy
LXF1ZXVlIHRpbWVycyB0aGF0IGZpcmUgYWZ0ZXIgdGhpcyBwb2ludCBkb24ndCB0cnkgdG8KKyAg
ICAvLyBhY2Nlc3MgdGhpcyBXb3JrUXVldWUgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDQ2OTA+Lgor
ICAgIDo6RGVsZXRlVGltZXJRdWV1ZUV4KG1fdGltZXJRdWV1ZSwgMCk7Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fd29ya0l0ZW1RdWV1ZUxvY2spOworICAgIHJlZigpOworICAg
IG1fd29ya0l0ZW1RdWV1ZS5hcHBlbmQoV29ya0l0ZW1XaW46OmNyZWF0ZShmdW5jdGlvbiwgdGhp
cykpOworCisgICAgLy8gU3Bhd24gYSB3b3JrIHRocmVhZCB0byBwZXJmb3JtIHRoZSB3b3JrIHdl
IGp1c3QgYWRkZWQuIEFzIGFuIG9wdGltaXphdGlvbiwgd2UgYXZvaWQKKyAgICAvLyBzcGF3bmlu
ZyB0aGUgdGhyZWFkIGlmIGEgd29yayB0aHJlYWQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLiBUaGlz
IHByZXZlbnRzIG11bHRpcGxlIHdvcmsKKyAgICAvLyB0aHJlYWRzIGZyb20gYmVpbmcgc3Bhd25l
ZCBpbiBtb3N0IGNhc2VzLiAoTm90ZSB0aGF0IHdoZW4gYSB3b3JrIHRocmVhZCBoYXMgYmVlbiBz
cGF3bmVkIGJ1dAorICAgIC8vIGhhc24ndCByZWdpc3RlcmVkIGl0c2VsZiB5ZXQsIG1faXNXb3Jr
VGhyZWFkUmVnaXN0ZXJlZCB3aWxsIGJlIGZhbHNlIGFuZCB3ZSdsbCBlbmQgdXAKKyAgICAvLyBz
cGF3bmluZyBhIHNlY29uZCB3b3JrIHRocmVhZCBoZXJlLiBCdXQgd29yayB0aHJlYWQgcmVnaXN0
cmF0aW9uIHByb2Nlc3Mgd2lsbCBlbnN1cmUgdGhhdAorICAgIC8vIG9ubHkgb25lIHRocmVhZCBh
Y3R1YWxseSBlbmRzIHVwIHBlcmZvcm1pbmcgd29yay4pCisgICAgaWYgKCFtX2lzV29ya1RocmVh
ZFJlZ2lzdGVyZWQpCisgICAgICAgIDo6UXVldWVVc2VyV29ya0l0ZW0od29ya1RocmVhZENhbGxi
YWNrLCB0aGlzLCBXVF9FWEVDVVRFREVGQVVMVCk7Cit9CisKK3N0cnVjdCBUaW1lckNvbnRleHQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGltZXJDb250ZXh0PiB7CisgICAgc3RhdGlj
IFJlZlB0cjxUaW1lckNvbnRleHQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1l
ckNvbnRleHQpOyB9CisKKyAgICBXb3JrUXVldWUqIHF1ZXVlOworICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBmdW5jdGlvbjsKKyAgICBNdXRleCB0aW1lck11dGV4OworICAgIEhBTkRMRSB0aW1l
cjsKKworcHJpdmF0ZToKKyAgICBUaW1lckNvbnRleHQoKQorICAgICAgICA6IHF1ZXVlKG51bGxw
dHIpCisgICAgICAgICwgdGltZXIoMCkKKyAgICB7CisgICAgfQorfTsKKwordm9pZCBXb3JrUXVl
dWU6OnRpbWVyQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVk
KQoreworICAgIEFTU0VSVF9BUkcoY29udGV4dCwgY29udGV4dCk7CisgICAgQVNTRVJUX1VOVVNF
RCh0aW1lck9yV2FpdEZpcmVkLCB0aW1lck9yV2FpdEZpcmVkKTsKKworICAgIC8vIEJhbGFuY2Vk
IGJ5IGxlYWtSZWYgaW4gc2NoZWR1bGVXb3JrQWZ0ZXJEZWxheS4KKyAgICBSZWZQdHI8VGltZXJD
b250ZXh0PiB0aW1lckNvbnRleHQgPSBhZG9wdFJlZihzdGF0aWNfY2FzdDxUaW1lckNvbnRleHQq
Pihjb250ZXh0KSk7CisKKyAgICB0aW1lckNvbnRleHQtPnF1ZXVlLT5kaXNwYXRjaCh0aW1lckNv
bnRleHQtPmZ1bmN0aW9uKTsKKworICAgIE11dGV4TG9ja2VyIGxvY2sodGltZXJDb250ZXh0LT50
aW1lck11dGV4KTsKKyAgICBBU1NFUlQodGltZXJDb250ZXh0LT50aW1lcik7CisgICAgQVNTRVJU
KHRpbWVyQ29udGV4dC0+cXVldWUtPm1fdGltZXJRdWV1ZSk7CisgICAgaWYgKCE6OkRlbGV0ZVRp
bWVyUXVldWVUaW1lcih0aW1lckNvbnRleHQtPnF1ZXVlLT5tX3RpbWVyUXVldWUsIHRpbWVyQ29u
dGV4dC0+dGltZXIsIDApKSB7CisgICAgICAgIC8vIEdldHRpbmcgRVJST1JfSU9fUEVORElORyBo
ZXJlIG1lYW5zIHRoYXQgdGhlIHRpbWVyIHdpbGwgYmUgZGVzdHJveWVkIG9uY2UgdGhlIGNhbGxi
YWNrIGlzIGRvbmUgZXhlY3V0aW5nLgorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKDo6R2V0
TGFzdEVycm9yKCkgPT0gRVJST1JfSU9fUEVORElORywgIjo6RGVsZXRlVGltZXJRdWV1ZVRpbWVy
IGZhaWxlZCB3aXRoIGVycm9yICVsdSIsIDo6R2V0TGFzdEVycm9yKCkpOworICAgIH0KK30KKwor
dm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGR1
cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7CisgICAgQVNTRVJUKG1f
dGltZXJRdWV1ZSk7CisgICAgcmVmKCk7CisKKyAgICBSZWZQdHI8VGltZXJDb250ZXh0PiBjb250
ZXh0ID0gVGltZXJDb250ZXh0OjpjcmVhdGUoKTsKKyAgICBjb250ZXh0LT5xdWV1ZSA9IHRoaXM7
CisgICAgY29udGV4dC0+ZnVuY3Rpb24gPSBmdW5jdGlvbjsKKworICAgIHsKKyAgICAgICAgLy8g
VGhlIHRpbWVyIGNhbGxiYWNrIGNvdWxkIGZpcmUgYmVmb3JlIDo6Q3JlYXRlVGltZXJRdWV1ZVRp
bWVyIGV2ZW4gcmV0dXJucywgc28gd2UgcHJvdGVjdAorICAgICAgICAvLyBjb250ZXh0LT50aW1l
ciB3aXRoIGEgbXV0ZXggdG8gZW5zdXJlIHRoZSB0aW1lciBjYWxsYmFjayBkb2Vzbid0IGFjY2Vz
cyBpdCBiZWZvcmUgdGhlCisgICAgICAgIC8vIHRpbWVyIGhhbmRsZSBoYXMgYmVlbiBzdG9yZWQg
aW4gaXQuCisgICAgICAgIE11dGV4TG9ja2VyIGxvY2soY29udGV4dC0+dGltZXJNdXRleCk7CisK
KyAgICAgICAgLy8gU2luY2Ugb3VyIHRpbWVyIGNhbGxiYWNrIGlzIHF1aWNrLCB3ZSBjYW4gZXhl
Y3V0ZSBpbiB0aGUgdGltZXIgdGhyZWFkIGl0c2VsZiBhbmQgYXZvaWQKKyAgICAgICAgLy8gYW4g
ZXh0cmEgdGhyZWFkIHN3aXRjaCBvdmVyIHRvIGEgd29ya2VyIHRocmVhZC4KKyAgICAgICAgaW50
NjRfdCBtaWxsaXNlY29uZHMgPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9u
bzo6bWlsbGlzZWNvbmRzPihkdXJhdGlvbikuY291bnQoKTsKKyAgICAgICAgaWYgKCE6OkNyZWF0
ZVRpbWVyUXVldWVUaW1lcigmY29udGV4dC0+dGltZXIsIG1fdGltZXJRdWV1ZSwgdGltZXJDYWxs
YmFjaywgY29udGV4dC5nZXQoKSwgY2xhbXBUbzxEV09SRD4obWlsbGlzZWNvbmRzKSwgMCwgV1Rf
RVhFQ1VURUlOVElNRVJUSFJFQUQpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGZhbHNlLCAiOjpDcmVhdGVUaW1lclF1ZXVlVGltZXIgZmFpbGVkIHdpdGggZXJyb3IgJWx1Iiwg
OjpHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBUaGUgdGltZXIgY2FsbGJhY2sgd2lsbCBoYW5kbGUgZGVzdHJveWluZyBjb250
ZXh0LgorICAgIGNvbnRleHQucmVsZWFzZSgpLmxlYWtSZWYoKTsKK30KKwordm9pZCBXb3JrUXVl
dWU6OnVucmVnaXN0ZXJXYWl0QW5kRGVzdHJveUl0ZW1Tb29uKFBhc3NSZWZQdHI8SGFuZGxlV29y
a0l0ZW0+IGl0ZW0pCit7CisgICAgLy8gV2UncmUgZ29pbmcgdG8gbWFrZSBhIGJsb2NraW5nIGNh
bGwgdG8gOjpVbnJlZ2lzdGVyV2FpdEV4IGJlZm9yZSBjbG9zaW5nIHRoZSBoYW5kbGUuIChUaGUK
KyAgICAvLyBibG9ja2luZyB2ZXJzaW9uIG9mIDo6VW5yZWdpc3RlcldhaXRFeCBpcyBtdWNoIHNp
bXBsZXIgdGhhbiB0aGUgbm9uLWJsb2NraW5nIHZlcnNpb24uKSBJZiB3ZQorICAgIC8vIGRvIHRo
aXMgb24gdGhlIGN1cnJlbnQgdGhyZWFkLCB3ZSdsbCBkZWFkbG9jayBpZiB3ZSdyZSBjdXJyZW50
bHkgaW4gYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IKKyAgICAvLyB0aGUgd2FpdCB3ZSdyZSB1bnJl
Z2lzdGVyaW5nLiBTbyBpbnN0ZWFkIHdlIGRvIGl0IGFzeW5jaHJvbm91c2x5IG9uIHNvbWUgb3Ro
ZXIgd29ya2VyIHRocmVhZC4KKworICAgIDo6UXVldWVVc2VyV29ya0l0ZW0odW5yZWdpc3Rlcldh
aXRBbmREZXN0cm95SXRlbUNhbGxiYWNrLCBpdGVtLmxlYWtSZWYoKSwgV1RfRVhFQ1VURURFRkFV
TFQpOworfQorCitEV09SRCBXSU5BUEkgV29ya1F1ZXVlOjp1bnJlZ2lzdGVyV2FpdEFuZERlc3Ry
b3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCkKK3sKKyAgICBBU1NFUlRfQVJHKGNvbnRleHQs
IGNvbnRleHQpOworICAgIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4gaXRlbSA9IGFkb3B0UmVmKHN0
YXRpY19jYXN0PEhhbmRsZVdvcmtJdGVtKj4oY29udGV4dCkpOworCisgICAgLy8gTm93IHRoYXQg
d2Uga25vdyB3ZSdyZSBub3QgaW4gYSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIHdhaXQgd2Un
cmUgdW5yZWdpc3RlcmluZywgd2UgY2FuCisgICAgLy8gbWFrZSBhIGJsb2NraW5nIGNhbGwgdG8g
OjpVbnJlZ2lzdGVyV2FpdEV4LgorICAgIGlmICghOjpVbnJlZ2lzdGVyV2FpdEV4KGl0ZW0tPndh
aXRIYW5kbGUoKSwgSU5WQUxJRF9IQU5ETEVfVkFMVUUpKSB7CisgICAgICAgIERXT1JEIGVycm9y
ID0gOjpHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>
<flag name="review"
          id="273059"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>