<?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>147986</bug_id>
          
          <creation_ts>2015-08-13 12:49:46 -0700</creation_ts>
          <short_desc>WTF should have a compact Condition object to use with Lock</short_desc>
          <delta_ts>2015-08-13 13:42:51 -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 Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147841</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117330</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-13 12:49:46 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117339</commentid>
    <comment_count>1</comment_count>
      <attachid>258920</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-13 13:15:52 -0700</bug_when>
    <thetext>Created attachment 258920
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117343</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-13 13:19:12 -0700</bug_when>
    <thetext>Attachment 258920 did not pass style-queue:


ERROR: Source/WTF/wtf/ParkingLot.cpp:561:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Condition.cpp:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Condition.cpp:109:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Condition.cpp:136:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Condition.cpp:143:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Condition.cpp:250:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117352</commentid>
    <comment_count>3</comment_count>
      <attachid>258920</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-13 13:28:19 -0700</bug_when>
    <thetext>Comment on attachment 258920
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117363</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-08-13 13:42:51 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/188400</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258920</attachid>
            <date>2015-08-13 13:15:52 -0700</date>
            <delta_ts>2015-08-13 13:28:19 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33815</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxODgzOTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA4LTEzICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV1RGIHNob3VsZCBoYXZlIGEgY29tcGFjdCBDb25kaXRp
b24gb2JqZWN0IHRvIHVzZSB3aXRoIExvY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Nzk4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgYSBjb25kaXRpb24gdmFyaWFibGUgaW1wbGVtZW50YXRp
b24gYmFzZWQgb24gUGFya2luZ0xvdCwgY2FsbGVkIHNpbXBseSBXVEY6OkNvbmRpdGlvbi4KKyAg
ICAgICAgSXQgY2FuIGJlIHVzZWQgd2l0aCBXVEY6OkxvY2sgb3IgYWN0dWFsbHkgYW55IGxvY2sg
aW1wbGVtZW50YXRpb24uIEl0IHNob3VsZCBldmVuIHdvcmsgd2l0aAorICAgICAgICBXVEY6OlNw
aW5Mb2NrLCBXVEY6Ok11dGV4LCBvciBzdGQ6Om11dGV4LiBCZXN0IG9mIGFsbCwgQ29uZGl0aW9u
IG9ubHkgcmVxdWlyZXMgb25lIGJ5dGUuCisKKyAgICAgICAgUGFya2luZ0xvdCBhbG1vc3QgY29u
dGFpbmVkIGFsbCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBuZWVkZWQgdG8gaW1wbGVtZW5ldCB3YWl0
L25vdGlmeS4gV2UKKyAgICAgICAgY291bGQgaGF2ZSBpbXBsZW1lbnRlZCBDb25kaXRpb24gdXNp
bmcgYSAzMi1iaXQgKG9yIGV2ZW4gNjQtYml0KSB2ZXJzaW9uIHRoYXQgcHJvdGVjdHMKKyAgICAg
ICAgYWdhaW5zdCBhIG5vdGlmeSB0aGF0IGhhcHBlbnMganVzdCBiZWZvcmUgd2UgcGFyay4gQnV0
LCB0aGlzIGNoYW5nZXMgdGhlIFBhcmtpbmdMb3QgQVBJIHRvCisgICAgICAgIGdpdmUgdXMgdGhl
IGFiaWxpdHkgdG8gcnVuIHNvbWUgY29kZSBiZXR3ZWVuIHdoZW4gUGFya2luZ0xvdCBlbnF1ZXVl
cyB0aGUgY3VycmVudCB0aHJlYWQKKyAgICAgICAgYW5kIHdoZW4gaXQgYWN0dWFsbHkgc2xlZXBz
LiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIG5vIGxvY2tzIGhlbGQsIHNvIGl0IGNhbiBj
YWxsCisgICAgICAgIHVubG9jaygpIG9uIGFueSBraW5kIG9mIGxvY2ssIHNvIGxvbmcgYXMgdGhh
dCBsb2NrJ3MgdW5sb2NrKCkgbWV0aG9kIGRvZXNuJ3QgcmVjdXJzZSBpbnRvCisgICAgICAgIFBh
cmtpbmdMb3Q6OnBhcmtDb25kaXRpb25hbGx5KCkuIFRoYXQgc2VlbXMgdW5saWtlbHk7IHVubG9j
aygpIGlzIG1vcmUgbGlrZWx5IHRvIGNhbGwKKyAgICAgICAgUGFya2luZ0xvdDo6dW5wYXJrT25l
KCkgb3IgdW5wYXJrQWxsKCkuIFdURjo6TG9jayB3aWxsIG5ldmVyIGNhbGwgcGFya0NvbmRpdGlv
bmFsbHkoKQorICAgICAgICBpbnNpZGUgdW5sb2NrKCksIHNvIFdURjo6TG9jayBpcyBkZWZpbml0
ZWx5IGFwcHJvcHJpYXRlIGZvciB1c2Ugd2l0aCBDb25kaXRpb24uCisKKyAgICAgICAgQ29uZGl0
aW9uIHN1cHBvcnRzIG1vc3Qgb2YgdGhlIEFQSSB0aGF0IHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxl
IHN1cHBvcnRzLiBJdCBkb2VzIHNvbWUKKyAgICAgICAgdGhpbmdzIHRvIHRyeSB0byByZWR1Y2Ug
Zm9vdGd1biBwb3RlbnRpYWwuIFRoZSBwcmVmZXJyZWQgdGltZW91dCBmb3JtIGlzIHdhaXRVbnRp
bCgpIHdoaWNoCisgICAgICAgIHRha2VzIGFuIGFic29sdXRlIHRpbWUgZnJvbSB0aGUgc3RlYWR5
X2Nsb2NrLiBUaGUgb25seSByZWxhdGl2ZSB0aW1lb3V0IGZvcm0gYWxzbyB0YWtlcyBhCisgICAg
ICAgIHByZWRpY2F0ZSBjYWxsYmFjaywgc28gaXQncyBpbXBvc3NpYmxlIHRvIHdyaXRlIHRoZSBz
dWJ0bHkgaW5jb3JyZWN0CisgICAgICAgICJ3aGlsZSAoLi4uKSB3YWl0X2ZvciguLi4pIiBpZGlv
bS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgYWN0dWFsbHkgaW50cm9kdWNlIGFueSB1
c2VzIG9mIFdURjo6Q29uZGl0aW9uIG90aGVyIHRoYW4gdGhlIHVuaXQgdGVzdHMuCisgICAgICAg
IEknbGwgc3RhcnQgc3dpdGNoaW5nIGNvZGUgb3ZlciB0byB1c2luZyBXVEY6OkNvbmRpdGlvbiBp
biBhbm90aGVyIHBhdGNoLgorCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6Cisg
ICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9Db25kaXRpb24uaDogQWRkZWQuCisgICAgICAg
IChXVEY6OkNvbmRpdGlvbjo6Q29uZGl0aW9uKToKKyAgICAgICAgKFdURjo6Q29uZGl0aW9uOjp3
YWl0VW50aWwpOgorICAgICAgICAoV1RGOjpDb25kaXRpb246OndhaXRGb3IpOgorICAgICAgICAo
V1RGOjpDb25kaXRpb246OndhaXQpOgorICAgICAgICAoV1RGOjpDb25kaXRpb246Om5vdGlmeU9u
ZSk6CisgICAgICAgIChXVEY6OkNvbmRpdGlvbjo6bm90aWZ5QWxsKToKKyAgICAgICAgKiB3dGYv
TG9jay5jcHA6CisgICAgICAgIChXVEY6OkxvY2tCYXNlOjp1bmxvY2tTbG93KTogTWFrZSB0aGlz
IHVzZWZ1bCBhc3NlcnRpb24gYmUgYSByZWxlYXNlIGFzc2VydGlvbi4gSXQgY2F0Y2hlcyBjYXNl
cyB3aGVyZSB5b3UgdW5sb2NrIHRoZSBsb2NrIGV2ZW4gdGhvdWdoIHlvdSBkb24ndCBob2xkIGl0
LgorICAgICAgICAqIHd0Zi9QYXJraW5nTG90LmNwcDoKKyAgICAgICAgKFdURjo6UGFya2luZ0xv
dDo6cGFya0NvbmRpdGlvbmFsbHkpOiBBZGQgdGhlIGJlZm9yZVNsZWVwKCkgY2FsbGJhY2suCisg
ICAgICAgIChXVEY6OlBhcmtpbmdMb3Q6OnVucGFya09uZSk6CisgICAgICAgICogd3RmL1Bhcmtp
bmdMb3QuaDoKKyAgICAgICAgKFdURjo6UGFya2luZ0xvdDo6Y29tcGFyZUFuZFBhcmspOgorCiAy
MDE1LTA4LTEyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIFdURjo6T3B0aW9uYWwgaW4gV2luZG93RmVhdHVyZXMKSW5kZXg6IFNvdXJjZS9XVEYv
V1RGLnZjeHByb2ovV1RGLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYudmN4
cHJvai9XVEYudmN4cHJvagkocmV2aXNpb24gMTg4MzczKQorKysgU291cmNlL1dURi9XVEYudmN4
cHJvai9XVEYudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQ2hlY2tlZEFyaXRobWV0aWMuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxDaGVja2VkQm9vbGVhbi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cd3RmXENvbXBpbGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlx3dGZcQ29uZGl0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3
dGZcQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cd3RmXENyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcQ3VycmVudFRpbWUuaCIgLz4KSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg4MzczKQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQAogCQkwRkM0NDg4MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0NDg4MjE2RkU5RkUx
MDA4NDRCRTkgLyogUHJvY2Vzc0lELmggKi87IH07CiAJCTBGQzRFREU2MTY5NjE0OTYwMEY2NTA0
MSAvKiBDb21tYVByaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGQzRFREU1MTY5NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLzsg
fTsKIAkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgxQUM0MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKKwkJMEZEQjY5OEUxQjdDNjQzQTAwMEMxMDc4IC8qIENvbmRpdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQjY5OEQxQjdDNjQz
QTAwMEMxMDc4IC8qIENvbmRpdGlvbi5oICovOyB9OwogCQkwRkREQkZBNzE2NjZERkEzMDBDNTVG
RUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50
U3RyZWFtLmNwcCAqLzsgfTsKIAkJMEZEREJGQTgxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1By
aW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkREQkZBNjE2NjZERkEzMDBDNTVGRUYgLyogU3RyaW5nUHJpbnRTdHJlYW0uaCAqLzsgfTsK
IAkJMEZFMTY0NkExQjZGRkM5NjAwNDAwRTdDIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMTY0NjgxQjZGRkM5NjAwNDAwRTdDIC8q
IExvY2suY3BwICovOyB9OwpAQCAtMzI3LDYgKzMyOCw3IEBACiAJCTBGQzQ0ODgyMTZGRTlGRTEw
MDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJvY2Vzc0lELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzRFREU1MTY5NjE0
OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbWFQcmludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgx
QUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZEQjY5OEQxQjdDNjQzQTAwMEMxMDc4IC8qIENvbmRpdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZEREJGQTUxNjY2REZBMzAwQzU1RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ1ByaW50U3RyZWFt
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEREJGQTYxNjY2REZBMzAwQzU1
RkVGIC8qIFN0cmluZ1ByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmluZ1ByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
RTE2NDY4MUI2RkZDOTYwMDQwMEU3QyAvKiBMb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IExvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzMwLDYgKzczMiw3IEBACiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0
aW9uVGhyZWFkLmNwcCAqLywKIAkJCQkwRjhGMkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGls
YXRpb25UaHJlYWQuaCAqLywKIAkJCQlBOEE0NzI3MDE1MUE4MjVBMDA0MTIzRkYgLyogQ29tcGls
ZXIuaCAqLywKKwkJCQkwRkRCNjk4RDFCN0M2NDNBMDAwQzEwNzggLyogQ29uZGl0aW9uLmggKi8s
CiAJCQkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
Y3BwICovLAogCQkJCUUxNTU1NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRp
bGl0aWVzLmggKi8sCiAJCQkJQThBNDcyNzMxNTFBODI1QTAwNDEyM0ZGIC8qIENyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tTnVtYmVyLmNwcCAqLywKQEAgLTExODUsNiArMTE4OCw3IEBACiAJCQkJQThB
NDc0MjMxNTFBODI1QjAwNDEyM0ZGIC8qIFNpbXBsZVN0YXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEE0NzQyNDE1MUE4MjVCMDA0MTIzRkYgLyogU2luZ2x5TGlua2VkTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTc0ODc0NTMxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2gu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGREI2OThFMUI3QzY0M0EwMDBDMTA3OCAvKiBDb25kaXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDI2MTUxQTgyNUIwMDQxMjNGRiAvKiBTcGVj
dHJ1bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0MjgxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
YWNrQm91bmRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRURBQ0QzRTE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTg4MzczKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEwLDYgKzEwLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgQnl0ZU9yZGVy
LmgKICAgICBDb21waWxhdGlvblRocmVhZC5oCiAgICAgQ29tcGlsZXIuaAorICAgIENvbmRpdGlv
bi5oCiAgICAgQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oCiAgICAgQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuaAogICAgIEN1cnJlbnRUaW1lLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Nv
bmRpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NvbmRpdGlvbi5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dURi93dGYvQ29uZGl0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBXVEZfQ29uZGl0aW9uX2gKKyNkZWZpbmUgV1RGX0NvbmRpdGlvbl9oCisK
KyNpbmNsdWRlIDxjaHJvbm8+CisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxtdXRl
eD4KKyNpbmNsdWRlIDx3dGYvUGFya2luZ0xvdC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xh
c3MgQ29uZGl0aW9uIHsKK3B1YmxpYzoKKyAgICBDb25kaXRpb24oKSB7IH0KKworICAgIC8vIFdh
aXQgb24gYSBwYXJraW5nIHF1ZXVlLCB1c2luZyB0aGUgZ2l2ZW4gbG9jayBhbmQgdW5sb2NrIGNh
bGxiYWNrcy4gSXQgd2lsbCB1bmxvY2sgdGhlCisgICAgLy8gbG9jayBqdXN0IGJlZm9yZSBwYXJr
aW5nLCBhbmQgcmVsb2NrIGl0IHVwb24gd2FrZXVwLiBSZXR1cm5zIHRydWUgaWYgd2Ugd29rZSB1
cCB3YXMgZHVlIHRvCisgICAgLy8gc29tZSBjYWxsIHRvIG5vdGlmeU9uZSgpIG9yIG5vdGlmeUFs
bCgpLiBSZXR1cm5zIGZhbHNlIGlmIHdlIHdva2UgdXAgZHVlIHRvIGEgdGltZW91dC4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZT4KKyAgICBib29sIHdhaXRVbnRpbCgKKyAgICAgICAg
TG9ja1R5cGUmIGxvY2ssIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgdGlt
ZW91dCkKKyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gUGFya2luZ0xvdDo6cGFya0NvbmRp
dGlvbmFsbHkoCisgICAgICAgICAgICAmbV9kdW1teSwKKyAgICAgICAgICAgIFtdICgpIC0+IGJv
b2wgeyByZXR1cm4gdHJ1ZTsgfSwKKyAgICAgICAgICAgIFsmbG9ja10gKCkgeyBsb2NrLnVubG9j
aygpOyB9LAorICAgICAgICAgICAgdGltZW91dCk7CisgICAgICAgIGxvY2subG9jaygpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIFdhaXQgdW50aWwgdGhlIGdpdmVu
IHByZWRpY2F0ZSBpcyBzYXRpc2ZpZWQuIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBzYXRpc2ZpZWQg
aW4gdGhlIGVuZC4KKyAgICAvLyBNYXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB0aW1lb3V0LgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZSBGdW5jdG9yPgorICAgIGJvb2wg
d2FpdFVudGlsKAorICAgICAgICBMb2NrVHlwZSYgbG9jaywgc3RkOjpjaHJvbm86OnN0ZWFkeV9j
bG9jazo6dGltZV9wb2ludCB0aW1lb3V0LCBjb25zdCBGdW5jdG9yJiBwcmVkaWNhdGUpCisgICAg
eworICAgICAgICB3aGlsZSAoIXByZWRpY2F0ZSgpKSB7CisgICAgICAgICAgICBpZiAoIXdhaXRV
bnRpbChsb2NrLCB0aW1lb3V0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlKCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gV2FpdCB1
bnRpbCB0aGUgZ2l2ZW4gcHJlZGljYXRlIGlzIHNhdGlzZmllZC4gUmV0dXJucyB0cnVlIGlmIGl0
IGlzIHNhdGlzZmllZCBpbiB0aGUgZW5kLgorICAgIC8vIE1heSByZXR1cm4gZWFybHkgZHVlIHRv
IHRpbWVvdXQuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGUsIHR5cGVuYW1lIER1cmF0
aW9uVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4KKyAgICBib29sIHdhaXRGb3IoCisgICAgICAgIExv
Y2tUeXBlJiBsb2NrLCBjb25zdCBEdXJhdGlvblR5cGUmIHJlbGF0aXZlVGltZW91dCwgY29uc3Qg
RnVuY3RvciYgcHJlZGljYXRlKQorICAgIHsKKyAgICAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9j
bG9jazo6dGltZV9wb2ludCBhYnNvbHV0ZVRpbWVvdXQgPQorICAgICAgICAgICAgc3RkOjpjaHJv
bm86OnN0ZWFkeV9jbG9jazo6bm93KCkgKworICAgICAgICAgICAgc3RkOjpjaHJvbm86OmR1cmF0
aW9uX2Nhc3Q8c3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6ZHVyYXRpb24+KHJlbGF0aXZlVGlt
ZW91dCk7CisKKyAgICAgICAgcmV0dXJuIHdhaXRVbnRpbChsb2NrLCBhYnNvbHV0ZVRpbWVvdXQs
IHByZWRpY2F0ZSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+Cisg
ICAgdm9pZCB3YWl0KExvY2tUeXBlJiBsb2NrKQorICAgIHsKKyAgICAgICAgd2FpdFVudGlsKGxv
Y2ssIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQ6Om1heCgpKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMb2NrVHlwZSwgdHlwZW5hbWUgRnVuY3Rvcj4KKyAg
ICB2b2lkIHdhaXQoTG9ja1R5cGUmIGxvY2ssIGNvbnN0IEZ1bmN0b3ImIHByZWRpY2F0ZSkKKyAg
ICB7CisgICAgICAgIHdoaWxlICghcHJlZGljYXRlKCkpCisgICAgICAgICAgICB3YWl0KGxvY2sp
OworICAgIH0KKworICAgIHZvaWQgbm90aWZ5T25lKCkKKyAgICB7CisgICAgICAgIFBhcmtpbmdM
b3Q6OnVucGFya09uZSgmbV9kdW1teSk7CisgICAgfQorICAgIAorICAgIHZvaWQgbm90aWZ5QWxs
KCkKKyAgICB7CisgICAgICAgIFBhcmtpbmdMb3Q6OnVucGFya0FsbCgmbV9kdW1teSk7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICAKKyAgICB1aW50OF90IG1fZHVtbXk7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFdURl9Db25kaXRpb25faAorCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9Mb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Mb2NrLmNw
cAkocmV2aXNpb24gMTg4Mzc0KQorKysgU291cmNlL1dURi93dGYvTG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBMb2NrQmFzZTo6dW5sb2NrU2xvdygpCiAgICAg
Ly8gYmUgaGVsZCBhbmQgcGFya2VkIGlmIHNvbWVvbmUgYXR0ZW1wdHMgdG8gbG9jayBqdXN0IGFz
IHdlIGFyZSB1bmxvY2tpbmcuCiAgICAgZm9yICg7OykgewogICAgICAgICB1aW50OF90IG9sZEJ5
dGVWYWx1ZSA9IG1fYnl0ZS5sb2FkKCk7Ci0gICAgICAgIEFTU0VSVChvbGRCeXRlVmFsdWUgPT0g
aXNIZWxkQml0IHx8IG9sZEJ5dGVWYWx1ZSA9PSAoaXNIZWxkQml0IHwgaGFzUGFya2VkQml0KSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9sZEJ5dGVWYWx1ZSA9PSBpc0hlbGRCaXQgfHwgb2xk
Qnl0ZVZhbHVlID09IChpc0hlbGRCaXQgfCBoYXNQYXJrZWRCaXQpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChvbGRCeXRlVmFsdWUgPT0gaXNIZWxkQml0KSB7CiAgICAgICAgICAgICBpZiAobV9i
eXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoaXNIZWxkQml0LCAwKSkKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1BhcmtpbmdMb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BhcmtpbmdM
b3QuY3BwCShyZXZpc2lvbiAxODgzNzQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTA3LDEzICs1MDcsMjAgQEAgYm9vbCBkZXF1ZXVlKAogCiB9
IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotYm9vbCBQYXJraW5nTG90OjpwYXJrQ29uZGl0aW9u
YWxseShjb25zdCB2b2lkKiBhZGRyZXNzLCBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gdmFsaWRhdGlv
bikKK2Jvb2wgUGFya2luZ0xvdDo6cGFya0NvbmRpdGlvbmFsbHkoCisgICAgY29uc3Qgdm9pZCog
YWRkcmVzcywKKyAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gdmFsaWRhdGlvbiwKKyAgICBzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gYmVmb3JlU2xlZXAsCisgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9j
bG9jazo6dGltZV9wb2ludCB0aW1lb3V0KQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBk
YXRhTG9nKHRvU3RyaW5nKGN1cnJlbnRUaHJlYWQoKSwgIjogcGFya2luZy5cbiIpKTsKICAgICAK
ICAgICBUaHJlYWREYXRhKiBtZSA9IG15VGhyZWFkRGF0YSgpOwogCisgICAgLy8gR3VhcmQgYWdh
aW5zdCBzb21lb25lIGNhbGxpbmcgcGFya0NvbmRpdGlvbmFsbHkoKSByZWN1cnNpdmVseSBmcm9t
IGJlZm9yZVNsZWVwKCkuCisgICAgUkVMRUFTRV9BU1NFUlQoIW1lLT5hZGRyZXNzKTsKKwogICAg
IGJvb2wgcmVzdWx0ID0gZW5xdWV1ZSgKICAgICAgICAgYWRkcmVzcywKICAgICAgICAgWyZdICgp
IC0+IFRocmVhZERhdGEqIHsKQEAgLTUyNywxNiArNTM0LDQ5IEBAIGJvb2wgUGFya2luZ0xvdDo6
cGFya0NvbmRpdGlvbmFsbHkoY29uc3QKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3Vy
cmVudFRocmVhZCgpLCAiOiBwYXJraW5nIHNlbGY6ICIsIFJhd1BvaW50ZXIobWUpLCAiXG4iKSk7
CisgICAgYmVmb3JlU2xlZXAoKTsKKworICAgIGJvb2wgZGlkR2V0RGVxdWV1ZWQ7CiAgICAgewog
ICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtZS0+cGFya2luZ0xv
Y2spOwotICAgICAgICB3aGlsZSAobWUtPmFkZHJlc3MpCi0gICAgICAgICAgICBtZS0+cGFya2lu
Z0NvbmRpdGlvbi53YWl0KGxvY2tlcik7CisgICAgICAgIHdoaWxlIChtZS0+YWRkcmVzcyAmJiBz
dGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSA8IHRpbWVvdXQpCisgICAgICAgICAgICBt
ZS0+cGFya2luZ0NvbmRpdGlvbi53YWl0X3VudGlsKGxvY2tlciwgdGltZW91dCk7CisgICAgICAg
IEFTU0VSVCghbWUtPmFkZHJlc3MgfHwgbWUtPmFkZHJlc3MgPT0gYWRkcmVzcyk7CisgICAgICAg
IGRpZEdldERlcXVldWVkID0gIW1lLT5hZGRyZXNzOwogICAgIH0KLSAgICBpZiAodmVyYm9zZSkK
LSAgICAgICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IHVucGFya2VkIHNl
bGY6ICIsIFJhd1BvaW50ZXIobWUpLCAiXG4iKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KGRpZEdldERlcXVldWVkKSB7CisgICAgICAgIC8vIEdyZWF0ISBXZSBhY3R1YWxseSBnb3QgZGVx
dWV1ZWQgcmF0aGVyIHRoYW4gdGhlIHRpbWVvdXQgZXhwaXJpbmcuCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIEhhdmUgdG8gcmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBx
dWV1ZSBzaW5jZSB3ZSB0aW1lZCBvdXQgYW5kIG5vYm9keSBoYXMgZGVxdWV1ZWQgdXMgeWV0Lgor
CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdlIGdldCB1bnBhcmtlZCByaWdodCBoZXJlLCBq
dXN0IGJlZm9yZSBkZXF1ZXVlKCkgZ3JhYnMgYSBsb2NrLiBJdCdzCisgICAgLy8gcHJvYmFibHkg
d29ydGh3aGlsZSB0byBkZXRlY3Qgd2hlbiB0aGlzIGhhcHBlbnMsIGFuZCByZXR1cm4gdHJ1ZSBp
biB0aGF0IGNhc2UsIHRvIGVuc3VyZQorICAgIC8vIHRoYXQgd2hlbiB3ZSByZXR1cm4gZmFsc2Ug
aXQgcmVhbGx5IG1lYW5zIHRoYXQgbm8gdW5wYXJrIGNvdWxkIGhhdmUgYmVlbiByZXNwb25zaWJs
ZSBmb3IgdXMKKyAgICAvLyB3YWtpbmcgdXAsIGFuZCB0aGF0IGlmIGFuIHVucGFyayBjYWxsIGRp
ZCBoYXBwZW4sIGl0IHdva2Ugc29tZW9uZSBlbHNlIHVwLgorICAgIGJvb2wgZGlkRmluZCA9IGZh
bHNlOworICAgIGRlcXVldWUoCisgICAgICAgIGFkZHJlc3MsIEJ1Y2tldE1vZGU6Oklnbm9yZUVt
cHR5LAorICAgICAgICBbJl0gKFRocmVhZERhdGEqIGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IG1lKSB7CisgICAgICAgICAgICAgICAgZGlkRmluZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIERlcXVldWVSZXN1bHQ6OlJlbW92ZUFuZFN0b3A7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gRGVxdWV1ZVJlc3VsdDo6SWdub3JlOworICAgICAg
ICB9LAorICAgICAgICBbXSAoYm9vbCkgeyB9KTsKKworICAgIEFTU0VSVCghbWUtPm5leHRJblF1
ZXVlKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG5vIG1hdHRlciB3aGF0LCBtZS0+YWRkcmVz
cyBpcyBudWxsIGFmdGVyIHRoaXMgcG9pbnQuCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8c3RkOjptdXRleD4gbG9ja2VyKG1lLT5wYXJraW5nTG9jayk7CisgICAgICAgIG1lLT5hZGRy
ZXNzID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSB3ZXJlIG5vdCBmb3VuZCBpbiB0
aGUgc2VhcmNoIGFib3ZlLCB0aGVuIHdlIGtub3cgdGhhdCBzb21lb25lIHVucGFya2VkIHVzLgor
ICAgIHJldHVybiAhZGlkRmluZDsKIH0KIAogYm9vbCBQYXJraW5nTG90Ojp1bnBhcmtPbmUoY29u
c3Qgdm9pZCogYWRkcmVzcykKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmgJKHJldmlzaW9uIDE4ODM3NCkK
KysrIFNvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBXVEZfUGFya2luZ0xvdF9oCiAjZGVmaW5lIFdURl9QYXJraW5nTG90
X2gKIAorI2luY2x1ZGUgPGNocm9ubz4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUg
PHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMzksMTAgKzQw
LDIzIEBAIGNsYXNzIFBhcmtpbmdMb3QgewogcHVibGljOgogICAgIC8vIFBhcmtzIHRoZSB0aHJl
YWQgaW4gYSBxdWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGFkZHJlc3MsIHdoaWNoIGNh
bm5vdCBiZSBudWxsLiBUaGUKICAgICAvLyBwYXJraW5nIG9ubHkgc3VjY2VlZHMgaWYgdGhlIHZh
bGlkYXRpb24gZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoaWxlIHRoZSBxdWV1ZSBsb2NrIGlzIGhl
bGQuCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB0aHJlYWQgYWN0dWFsbHkgc2xlcHQsIG9y
IGZhbHNlIGlmIGl0IHJldHVybmVkIHF1aWNrbHkgYmVjYXVzZSBvZgotICAgIC8vIHZhbGlkYXRp
b24gZmFpbHVyZS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgcGFya0NvbmRp
dGlvbmFsbHkoY29uc3Qgdm9pZCogYWRkcmVzcywgc3RkOjpmdW5jdGlvbjxib29sKCk+IHZhbGlk
YXRpb24pOworICAgIC8vIElmIHZhbGlkYXRpb24gcmV0dXJucyBmYWxzZSwgaXQgd2lsbCB1bmxv
Y2sgdGhlIGludGVybmFsIHBhcmtpbmcgcXVldWUgYW5kIHRoZW4gaXQgd2lsbAorICAgIC8vIHJl
dHVybiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2UuIElmIHZhbGlkYXRpb24gcmV0dXJucyB0
cnVlLCBpdCB3aWxsIGVucXVldWUgdGhlIHRocmVhZCwKKyAgICAvLyB1bmxvY2sgdGhlIHBhcmtp
bmcgcXVldWUgbG9jaywgY2FsbCB0aGUgYmVmb3JlU2xlZXAgZnVuY3Rpb24sIGFuZCB0aGVuIGl0
IHdpbGwgc2xlZXAgc28gbG9uZworICAgIC8vIGFzIHRoZSB0aHJlYWQgY29udGludWVzIHRvIGJl
IG9uIHRoZSBxdWV1ZSBhbmQgdGhlIHRpbWVvdXQgaGFzbid0IGZpcmVkLiBGaW5hbGx5LCB0aGlz
CisgICAgLy8gcmV0dXJucyB0cnVlIGlmIHdlIGFjdHVhbGx5IGdvdCB1bnBhcmtlZCBvciBmYWxz
ZSBpZiB0aGUgdGltZW91dCB3YXMgaGl0LiBOb3RlIHRoYXQKKyAgICAvLyBiZWZvcmVTbGVlcCBp
cyBjYWxsZWQgd2l0aCBubyBsb2NrcyBoZWxkLCBzbyBpdCdzIE9LIHRvIGRvIHByZXR0eSBtdWNo
IGFueXRoaW5nIHNvIGxvbmcgYXMKKyAgICAvLyB5b3UgZG9uJ3QgcmVjdXJzaXZlbHkgY2FsbCBw
YXJrQ29uZGl0aW9uYWxseSgpLiBZb3UgY2FuIGNhbGwgdW5wYXJrT25lKCkvdW5wYXJrQWxsKCkg
dGhvdWdoLgorICAgIC8vIEl0J3MgdXNlZnVsIHRvIHVzZSBiZWZvcmVTbGVlcCgpIHRvIHVubG9j
ayBzb21lIG11dGV4IGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorICAgIC8vIENvbmRpdGlvbjo6
d2FpdCgpLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBwYXJrQ29uZGl0aW9u
YWxseSgKKyAgICAgICAgY29uc3Qgdm9pZCogYWRkcmVzcywKKyAgICAgICAgc3RkOjpmdW5jdGlv
bjxib29sKCk+IHZhbGlkYXRpb24sCisgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBiZWZv
cmVTbGVlcCwKKyAgICAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCB0
aW1lb3V0KTsKIAorICAgIC8vIFNpbXBsZSB2ZXJzaW9uIG9mIHBhcmtDb25kaXRpb25hbGx5KCkg
dGhhdCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIGNhc2U6IHlvdSB3YW50IHRvIHBhcmsKKyAgICAv
LyBpbmRlZmluaXRlbHkgc28gbG9uZyBhcyB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIGFkZHJlc3Mg
aGFzbid0IGNoYW5nZWQuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAg
ICBzdGF0aWMgYm9vbCBjb21wYXJlQW5kUGFyayhjb25zdCBBdG9taWM8VD4qIGFkZHJlc3MsIFUg
ZXhwZWN0ZWQpCiAgICAgewpAQCAtNTEsNyArNjUsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBb
YWRkcmVzcywgZXhwZWN0ZWRdICgpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgIFUgdmFsdWUg
PSBhZGRyZXNzLT5sb2FkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09IGV4cGVj
dGVkOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgW10gKCkg
eyB9LAorICAgICAgICAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludDo6
bWF4KCkpOwogICAgIH0KIAogICAgIC8vIFVucGFya3Mgb25lIHRocmVhZCBmcm9tIHRoZSBxdWV1
ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGFkZHJlc3MsIHdoaWNoIGNhbm5vdCBiZSBudWxs
LgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTg4MzkyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTUtMDgtMTMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBXVEYgc2hvdWxkIGhhdmUgYSBjb21wYWN0IENvbmRpdGlvbiBvYmplY3QgdG8g
dXNlIHdpdGggTG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3OTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgdGVzdCBmb3IgV1RGOjpDb25kaXRpb24uCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEkudmN4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0xv
Y2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuTG9ja1Rlc3QpOiBDaGFuZ2UgdGhl
IG5hbWUgb2YgdGhlIHRocmVhZC4KKwogMjAxNS0wOC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNob3J0ZW4gYW5vdGhlciB0ZXN0LiBJ
dCdzIHRpbWluZyBvdXQgaW4gZGVidWcgb24gc29tZSBib3QuCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4ODM3MykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgc2V0KFRlc3RX
VEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzQ29udHJvbGxlci5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQXRvbWljU3RyaW5nLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DU3RyaW5nLmNwcAorICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS52Y3hwcm9qL1Rlc3RXZWJLaXRBUEku
dmN4cHJvagkocmV2aXNpb24gMTg4MzczKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnZjeHByb2ovVGVzdFdlYktpdEFQSS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/
eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFy
Z2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iMTQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1p
Y3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9
IlByb2plY3RDb25maWd1cmF0aW9ucyI+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1
ZGU9IkRlYnVnU3VmZml4fFdpbjMyIj4KQEAgLTMxMiw2ICszMTIsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXGNmXFJldGFpblB0ci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcY2ZcUmV0YWluUHRySGFzaGluZy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxUZXN0c1xXVEZcQ2hlY2tlZEFyaXRobWV0aWNPcGVy
YXRpb25zLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxDb25k
aXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXENTdHJp
bmcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cVGVzdHNcV1RGXERhdGVNYXRo
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFRlc3RzXFdURlxEZXF1ZS5jcHAi
IC8+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg4MzczKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKIAkJMEYxMzlFNzkxQTQyNDU3MDAwRjU5
MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZv
cm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKIAkJMEYzQjk0QTcxQTc3MjY3NDAwREUzMjcyIC8q
IFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I5NEE1MUE3NzI2NkMwMERFMzI3MiAvKiBXS1dlYlZp
ZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi87IH07CiAJCTBGRTQ0Nzk5MUI3NkYxRUIwMDk0OThF
QiAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRTQ0Nzk3MUI3NkYxRTMwMDk0OThFQiAvKiBQYXJraW5nTG90LmNwcCAqLzsg
fTsKKwkJMEZFQUUzNjkxQjdEMTlEMjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBRTM2NzFCN0QxOUNCMDBD
RTE3RjIgLyogQ29uZGl0aW9uLmNwcCAqLzsgfTsKIAkJMEZGQzQ1QTYxQjczRUJFQjAwODVCRDYy
IC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGQzQ1QTQxQjczRUJFMjAwODVCRDYyIC8qIExvY2suY3BwICovOyB9OwogCQkxQTAyQzg3
MDEyNUQ0Q0ZEMDBFM0Y0QkQgLyogZmluZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDJDODRCMTI1RDRBNUUwMEUzRjRCRCAvKiBm
aW5kLmh0bWwgKi87IH07CiAJCTFBNTBBQTIwMUEyQTUxRkMwMEY0QzM0NSAvKiBjbG9zZS1mcm9t
LXdpdGhpbi1jcmVhdGUtcGFnZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTBBQTFGMUEyQTRFQTUwMEY0QzM0NSAvKiBjbG9zZS1m
cm9tLXdpdGhpbi1jcmVhdGUtcGFnZS5odG1sICovOyB9OwpAQCAtNDMxLDYgKzQzMiw3IEBACiAJ
CTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVkQmxhY2tUcmVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNkM0Q0UxNDEwMzRBRDAwNUI3RjBDIC8qIE1ldGFBbGxvY2F0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWV0YUFsbG9jYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTQ0Nzk3MUI3NkYxRTMwMDk0
OThFQiAvKiBQYXJraW5nTG90LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhcmtpbmdMb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkVBRTM2
NzFCN0QxOUNCMDBDRTE3RjIgLyogQ29uZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbmRpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRkM0NUE0MUI3M0VCRTIwMDg1QkQ2MiAvKiBMb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRVbml0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IxMTIxNUU0NUVBQjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwOTEsNiArMTA5Myw3IEBACiAJCQkJQkMwMjlCMUExNDg2QjIzODAwODE3
REE5IC8qIG5zICovLAogCQkJCTI2RjFCNDQyMTVDQTQzNEYwMEQxRTRCRiAvKiBBdG9taWNTdHJp
bmcuY3BwICovLAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGht
ZXRpY09wZXJhdGlvbnMuY3BwICovLAorCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBD
b25kaXRpb24uY3BwICovLAogCQkJCTI2QTJDNzJFMTVFMkU3M0MwMDVCMUExNCAvKiBDU3RyaW5n
LmNwcCAqLywKIAkJCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21GaWx0ZXIuY3Bw
ICovLAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBA
IC0xNDk0LDYgKzE0OTcsNyBAQAogCQkJCTdDQ0U3RUJGMUE0MTFBN0UwMDQ0N0M0QyAvKiBFbGVt
ZW50QXRQb2ludEluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFRjFBNDEx
QUU2MDA0NDdDNEMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUYwMUE0MTFBRTYwMDQ0N0M0QyAvKiBFdmFs
dWF0ZUphdmFTY3JpcHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZFQUUzNjkxQjdEMTlEMjAw
Q0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGMTFBNDEx
QUU2MDA0NDdDNEMgLyogRmFpbGVkTG9hZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VG
MzFBNDExQUU2MDA0NDdDNEMgLyogRmluZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VG
NDFBNDExQUU2MDA0NDdDNEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dGhyZWFkPgorI2luY2x1ZGUgPHd0Zi9D
b25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CituYW1lc3BhY2UgeworCitjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKworZW51bSBOb3Rp
ZnlTdHlsZSB7CisgICAgQWx3YXlzTm90aWZ5T25lLAorICAgIFRhY3RpY2FsbHlOb3RpZnlBbGwK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIHdhaXQoQ29uZGl0aW9uJiBj
b25kaXRpb24sIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4mIGxvY2tlciwgY29uc3QgRnVuY3RvciYg
cHJlZGljYXRlLCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRpbWVvdXQpCit7CisgICAgaWYg
KHRpbWVvdXQgPT0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6bWF4KCkpCisgICAgICAgIGNv
bmRpdGlvbi53YWl0KGxvY2tlciwgcHJlZGljYXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8g
VGhpcyB0ZXN0cyB0aW1lb3V0cyBpbiB0aGUgc2Vuc2UgdGhhdCBpdCB2ZXJpZmllcyB0aGF0IHdl
IGNhbiBjYWxsIHdhaXQoKSBhZ2FpbiBhZnRlciBhCisgICAgICAgIC8vIHRpbWVvdXQgaGFwcGVu
ZWQuIFRoYXQncyBhIG5vbi10cml2aWFsIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkgc2luY2UgdXBv
biB0aW1lb3V0IHRoZQorICAgICAgICAvLyBQYXJraW5nTG90IGhhcyB0byByZW1vdmUgdXMgZnJv
bSB0aGUgcXVldWUuCisgICAgICAgIHdoaWxlICghcHJlZGljYXRlKCkpCisgICAgICAgICAgICBj
b25kaXRpb24ud2FpdEZvcihsb2NrZXIsIHRpbWVvdXQsIHByZWRpY2F0ZSk7CisgICAgfQorfQor
Cit2b2lkIG5vdGlmeShOb3RpZnlTdHlsZSBub3RpZnlTdHlsZSwgQ29uZGl0aW9uJiBjb25kaXRp
b24sIGJvb2wgc2hvdWxkTm90aWZ5KQoreworICAgIHN3aXRjaCAobm90aWZ5U3R5bGUpIHsKKyAg
ICBjYXNlIEFsd2F5c05vdGlmeU9uZToKKyAgICAgICAgY29uZGl0aW9uLm5vdGlmeU9uZSgpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRhY3RpY2FsbHlOb3RpZnlBbGw6CisgICAgICAgIGlm
IChzaG91bGROb3RpZnkpCisgICAgICAgICAgICBjb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBydW5UZXN0KAorICAgIHVuc2lnbmVkIG51bVBy
b2R1Y2VycywKKyAgICB1bnNpZ25lZCBudW1Db25zdW1lcnMsCisgICAgdW5zaWduZWQgbWF4UXVl
dWVTaXplLAorICAgIHVuc2lnbmVkIG51bU1lc3NhZ2VzUGVyUHJvZHVjZXIsCisgICAgTm90aWZ5
U3R5bGUgbm90aWZ5U3R5bGUsCisgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyB0aW1lb3V0
ID0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6bWF4KCksCisgICAgc3RkOjpjaHJvbm86Om1p
Y3Jvc2Vjb25kcyBkZWxheSA9IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM6Onplcm8oKSkKK3sK
KyAgICBEZXF1ZTx1bnNpZ25lZD4gcXVldWU7CisgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRy
dWU7CisgICAgTG9jayBsb2NrOworICAgIENvbmRpdGlvbiBlbXB0eUNvbmRpdGlvbjsKKyAgICBD
b25kaXRpb24gZnVsbENvbmRpdGlvbjsKKworICAgIFZlY3RvcjxUaHJlYWRJZGVudGlmaWVyPiBj
b25zdW1lclRocmVhZHM7CisgICAgVmVjdG9yPFRocmVhZElkZW50aWZpZXI+IHByb2R1Y2VyVGhy
ZWFkczsKKworICAgIFZlY3Rvcjx1bnNpZ25lZD4gcmVjZWl2ZWQ7CisgICAgTG9jayByZWNlaXZl
ZExvY2s7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtQ29uc3VtZXJzOyBpLS07KSB7
CisgICAgICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSWRlbnRpZmllciA9IGNyZWF0ZVRocmVh
ZCgKKyAgICAgICAgICAgICJDb25zdW1lciB0aHJlYWQiLAorICAgICAgICAgICAgWyZdICgpIHsK
KyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvdWxkTm90aWZ5ID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TG9jaz4gbG9ja2VyKGxvY2spOworICAgICAgICAgICAgICAgICAgICAgICAg
d2FpdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUNvbmRpdGlvbiwgbG9ja2Vy
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2codG9TdHJpbmcoY3VycmVudFRocmVhZCgpLCAiOiBDaGVja2luZyBj
b25zdW1wdGlvbiBwcmVkaWNhdGUgd2l0aCBzaG91bGRDb250aW51ZSA9ICIsIHNob3VsZENvbnRp
bnVlLCAiLCBxdWV1ZS5zaXplKCkgPT0gIiwgcXVldWUuc2l6ZSgpLCAiXG4iKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhc2hvdWxkQ29udGludWUgfHwgIXF1ZXVl
LmlzRW1wdHkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFz
aG91bGRDb250aW51ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RpZnkgPSBxdWV1ZS5zaXplKCkgPT0gbWF4UXVl
dWVTaXplOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcXVldWUudGFrZUZpcnN0
KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbm90aWZ5KG5v
dGlmeVN0eWxlLCBmdWxsQ29uZGl0aW9uLCBzaG91bGROb3RpZnkpOworCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrZXIocmVjZWl2ZWRMb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFw
cGVuZChyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSk7CisgICAgICAgIGNvbnN1bWVyVGhyZWFkcy5hcHBlbmQodGhyZWFkSWRl
bnRpZmllcik7CisgICAgfQorCisgICAgc3RkOjp0aGlzX3RocmVhZDo6c2xlZXBfZm9yKGRlbGF5
KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IG51bVByb2R1Y2VyczsgaS0tOykgeworICAgICAg
ICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElkZW50aWZpZXIgPSBjcmVhdGVUaHJlYWQoCisgICAg
ICAgICAgICAiUHJvZHVjZXIgVGhyZWFkIiwKKyAgICAgICAgICAgIFsmXSAoKSB7CisgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU1lc3NhZ2VzUGVyUHJvZHVjZXI7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZE5vdGlmeSA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPExvY2s+IGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbENvbmRpdGlvbiwgbG9ja2VyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZyh0b1N0cmluZyhjdXJyZW50VGhyZWFkKCksICI6IENoZWNraW5nIHByb2R1Y3Rp
b24gcHJlZGljYXRlIHdpdGggc2hvdWxkQ29udGludWUgPSAiLCBzaG91bGRDb250aW51ZSwgIiwg
cXVldWUuc2l6ZSgpID09ICIsIHF1ZXVlLnNpemUoKSwgIlxuIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcXVldWUuc2l6ZSgpIDwgbWF4UXVldWVTaXplOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGltZW91dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RpZnkgPSBxdWV1ZS5p
c0VtcHR5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoaSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbm90aWZ5KG5vdGlmeVN0eWxl
LCBlbXB0eUNvbmRpdGlvbiwgc2hvdWxkTm90aWZ5KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgcHJvZHVjZXJUaHJlYWRzLmFwcGVuZCh0aHJlYWRJZGVudGlm
aWVyKTsKKyAgICB9CisKKyAgICBmb3IgKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSWRlbnRpZmll
ciA6IHByb2R1Y2VyVGhyZWFkcykKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhy
ZWFkSWRlbnRpZmllcik7CisKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBs
b2NrZXIobG9jayk7CisgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7CisgICAgfQorICAg
IGVtcHR5Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworCisgICAgZm9yIChUaHJlYWRJZGVudGlmaWVy
IHRocmVhZElkZW50aWZpZXIgOiBjb25zdW1lclRocmVhZHMpCisgICAgICAgIHdhaXRGb3JUaHJl
YWRDb21wbGV0aW9uKHRocmVhZElkZW50aWZpZXIpOworCisgICAgRVhQRUNUX0VRKG51bVByb2R1
Y2VycyAqIG51bU1lc3NhZ2VzUGVyUHJvZHVjZXIsIHJlY2VpdmVkLnNpemUoKSk7CisgICAgc3Rk
Ojpzb3J0KHJlY2VpdmVkLmJlZ2luKCksIHJlY2VpdmVkLmVuZCgpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIG1lc3NhZ2VJbmRleCA9IDA7IG1lc3NhZ2VJbmRleCA8IG51bU1lc3NhZ2VzUGVyUHJvZHVj
ZXI7ICsrbWVzc2FnZUluZGV4KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgcHJvZHVjZXJJbmRl
eCA9IDA7IHByb2R1Y2VySW5kZXggPCBudW1Qcm9kdWNlcnM7ICsrcHJvZHVjZXJJbmRleCkKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShtZXNzYWdlSW5kZXgsIHJlY2VpdmVkW21lc3NhZ2VJbmRleCAq
IG51bVByb2R1Y2VycyArIHByb2R1Y2VySW5kZXhdKTsKKyAgICB9Cit9CisKK30gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQorCitURVNUKFdURl9Db25kaXRpb24sIE9uZVByb2R1Y2VyT25lQ29uc3Vt
ZXJPbmVTbG90KQoreworICAgIHJ1blRlc3QoMSwgMSwgMSwgMTAwMDAwLCBUYWN0aWNhbGx5Tm90
aWZ5QWxsKTsKK30KKworVEVTVChXVEZfQ29uZGl0aW9uLCBPbmVQcm9kdWNlck9uZUNvbnN1bWVy
T25lU2xvdFRpbWVvdXQpCit7CisgICAgcnVuVGVzdCgKKyAgICAgICAgMSwgMSwgMSwgMTAwMDAw
LCBUYWN0aWNhbGx5Tm90aWZ5QWxsLAorICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
KDEwMDAwKSwKKyAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcygxMDAwMDAwKSk7Cit9
CisKK1RFU1QoV1RGX0NvbmRpdGlvbiwgT25lUHJvZHVjZXJPbmVDb25zdW1lckh1bmRyZWRTbG90
cykKK3sKKyAgICBydW5UZXN0KDEsIDEsIDEwMCwgMTAwMDAwMCwgVGFjdGljYWxseU5vdGlmeUFs
bCk7Cit9CisKK1RFU1QoV1RGX0NvbmRpdGlvbiwgVGVuUHJvZHVjZXJzT25lQ29uc3VtZXJPbmVT
bG90KQoreworICAgIHJ1blRlc3QoMTAsIDEsIDEsIDEwMDAwLCBUYWN0aWNhbGx5Tm90aWZ5QWxs
KTsKK30KKworVEVTVChXVEZfQ29uZGl0aW9uLCBUZW5Qcm9kdWNlcnNPbmVDb25zdW1lckh1bmRy
ZWRTbG90c05vdGlmeUFsbCkKK3sKKyAgICBydW5UZXN0KDEwLCAxLCAxMDAsIDEwMDAwLCBUYWN0
aWNhbGx5Tm90aWZ5QWxsKTsKK30KKworVEVTVChXVEZfQ29uZGl0aW9uLCBUZW5Qcm9kdWNlcnNP
bmVDb25zdW1lckh1bmRyZWRTbG90c05vdGlmeU9uZSkKK3sKKyAgICBydW5UZXN0KDEwLCAxLCAx
MDAsIDEwMDAwLCBBbHdheXNOb3RpZnlPbmUpOworfQorCitURVNUKFdURl9Db25kaXRpb24sIE9u
ZVByb2R1Y2VyVGVuQ29uc3VtZXJzT25lU2xvdCkKK3sKKyAgICBydW5UZXN0KDEsIDEwLCAxLCAx
MDAwMCwgVGFjdGljYWxseU5vdGlmeUFsbCk7Cit9CisKK1RFU1QoV1RGX0NvbmRpdGlvbiwgT25l
UHJvZHVjZXJUZW5Db25zdW1lcnNIdW5kcmVkU2xvdHNOb3RpZnlBbGwpCit7CisgICAgcnVuVGVz
dCgxLCAxMCwgMTAwLCAxMDAwMDAsIFRhY3RpY2FsbHlOb3RpZnlBbGwpOworfQorCitURVNUKFdU
Rl9Db25kaXRpb24sIE9uZVByb2R1Y2VyVGVuQ29uc3VtZXJzSHVuZHJlZFNsb3RzTm90aWZ5T25l
KQoreworICAgIHJ1blRlc3QoMSwgMTAsIDEwMCwgMTAwMDAwLCBBbHdheXNOb3RpZnlPbmUpOwor
fQorCitURVNUKFdURl9Db25kaXRpb24sIFRlblByb2R1Y2Vyc1RlbkNvbnN1bWVyc09uZVNsb3Qp
Cit7CisgICAgcnVuVGVzdCgxMCwgMTAsIDEsIDUwMDAwLCBUYWN0aWNhbGx5Tm90aWZ5QWxsKTsK
K30KKworVEVTVChXVEZfQ29uZGl0aW9uLCBUZW5Qcm9kdWNlcnNUZW5Db25zdW1lcnNIdW5kcmVk
U2xvdHNOb3RpZnlBbGwpCit7CisgICAgcnVuVGVzdCgxMCwgMTAsIDEwMCwgNTAwMDAsIFRhY3Rp
Y2FsbHlOb3RpZnlBbGwpOworfQorCitURVNUKFdURl9Db25kaXRpb24sIFRlblByb2R1Y2Vyc1Rl
bkNvbnN1bWVyc0h1bmRyZWRTbG90c05vdGlmeU9uZSkKK3sKKyAgICBydW5UZXN0KDEwLCAxMCwg
MTAwLCA1MDAwMCwgQWx3YXlzTm90aWZ5T25lKTsKK30KKworVEVTVChXVEZfQ29uZGl0aW9uLCBU
aW1lb3V0VGltZXNPdXQpCit7CisgICAgTG9jayBsb2NrOworICAgIENvbmRpdGlvbiBjb25kaXRp
b247CisKKyAgICBsb2NrLmxvY2soKTsKKyAgICBib29sIHJlc3VsdCA9IGNvbmRpdGlvbi53YWl0
Rm9yKAorICAgICAgICBsb2NrLCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzKDEwMDAwKSwgW10g
KCkgLT4gYm9vbCB7IHJldHVybiBmYWxzZTsgfSk7CisgICAgbG9jay51bmxvY2soKTsKKworICAg
IEVYUEVDVF9FUShmYWxzZSwgcmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Mb2NrLmNwcAkocmV2aXNp
b24gMTg4Mzc0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBydW5Mb2NrVGVzdCh1bnNpZ25lZCBu
dW1UaHJlYWRHcm91cAogCiAgICAgICAgIGZvciAodW5zaWduZWQgdGhyZWFkSW5kZXggPSBudW1U
aHJlYWRzUGVyR3JvdXA7IHRocmVhZEluZGV4LS07KSB7CiAgICAgICAgICAgICB0aHJlYWRzW3Ro
cmVhZEdyb3VwSW5kZXggKiBudW1UaHJlYWRzUGVyR3JvdXAgKyB0aHJlYWRJbmRleF0gPSBjcmVh
dGVUaHJlYWQoCi0gICAgICAgICAgICAgICAgIkJlbmNobWFyayB0aHJlYWQiLAorICAgICAgICAg
ICAgICAgICJMb2NrIHRlc3QgdGhyZWFkIiwKICAgICAgICAgICAgICAgICBbdGhyZWFkR3JvdXBJ
bmRleCwgJmxvY2tzLCAmd29yZHMsIG51bUl0ZXJhdGlvbnMsIHdvcmtQZXJDcml0aWNhbFNlY3Rp
b25dICgpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSXRlcmF0
aW9uczsgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgbG9ja3NbdGhyZWFkR3JvdXBJ
bmRleF0ubG9jaygpOwo=
</data>
<flag name="review"
          id="284108"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>