<?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>151831</bug_id>
          
          <creation_ts>2015-12-03 15:27:27 -0800</creation_ts>
          <short_desc>Hook up request and show for typing candidates in WK1</short_desc>
          <delta_ts>2015-12-07 12:37:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1146098</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-12-03 15:27:27 -0800</bug_when>
    <thetext>Hook up request and show for typing candidates in WK1

rdar://problem/23751214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146106</commentid>
    <comment_count>1</comment_count>
      <attachid>266569</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-12-03 15:42:56 -0800</bug_when>
    <thetext>Created attachment 266569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146107</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-03 15:44:53 -0800</bug_when>
    <thetext>Attachment 266569 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:1138:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:1189:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 10 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>1146111</commentid>
    <comment_count>3</comment_count>
      <attachid>266571</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-12-03 15:54:22 -0800</bug_when>
    <thetext>Created attachment 266571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146113</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-03 15:56:26 -0800</bug_when>
    <thetext>Attachment 266571 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:1138:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:1189:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 10 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>1146939</commentid>
    <comment_count>5</comment_count>
      <attachid>266571</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-12-07 12:20:57 -0800</bug_when>
    <thetext>Comment on attachment 266571
Patch

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

The patch looks good to me.

&gt; Source/WebCore/page/EditorClient.h:191
&gt; +    virtual int requestCandidatesForSelection(const VisibleSelection&amp;) = 0;

Why having an int return type since the only place this is called in Editor doesn&apos;t check the return value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146949</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-12-07 12:37:59 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 266571 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266571&amp;action=review
&gt; 
&gt; The patch looks good to me.
&gt; 
&gt; &gt; Source/WebCore/page/EditorClient.h:191
&gt; &gt; +    virtual int requestCandidatesForSelection(const VisibleSelection&amp;) = 0;
&gt; 
&gt; Why having an int return type since the only place this is called in Editor
&gt; doesn&apos;t check the return value?

Thanks Enrica! I removed the return value.

http://trac.webkit.org/changeset/193645</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266569</attachid>
            <date>2015-12-03 15:42:56 -0800</date>
            <delta_ts>2015-12-03 15:54:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>19766</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MzM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTEyLTAzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBIb29rIHVwIHJlcXVlc3QgYW5kIHNo
b3cgZm9yIHR5cGluZyBjYW5kaWRhdGVzIGluIFdLMQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxODMxCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIzNzUxMjE0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBTUEkgdGhhdCBpcyBuZWVkZWQuCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaDogQWRkZWQuCisKKyAgICAgICAgUmVx
dWVzdCBjYW5kaWRhdGVzIGZvciBlZGl0YWJsZSBjb250ZW50IHdoZW5ldmVyIHNlbGVjdGlvbiBj
aGFuZ2VzLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisKKyAgICAgICAgSW1wbGVtZW50
IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uIG9uIHRoZSBFZGl0b3JDbGllbnQuCisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlcXVlc3RDYW5kaWRhdGVzRm9y
U2VsZWN0aW9uKToKKwogMjAxNS0xMi0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBPYmplY3RpdmUtQyBHQyBzdXBwb3J0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxOTI5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1NjksNiArMzU2OSw3IEBACiAJCTkzM0Ex
NEFBMEI3RDFEMDkwMEE1M0ZGRCAvKiBET01UZXh0RXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMTRBOTBCN0QxRDA5MDBBNTNGRkQgLyog
RE9NVGV4dEV2ZW50Lm1tICovOyB9OwogCQk5MzNBMTRCODBCN0QxRDUyMDBBNTNGRkQgLyogSlNU
ZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMzQTE0QjYwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmNwcCAqLzsgfTsKIAkJ
OTMzQTE0QjkwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMTRCNzBCN0QxRDUyMDBBNTNGRkQg
LyogSlNUZXh0RXZlbnQuaCAqLzsgfTsKKwkJOTMzQzdBNzUxQzBGQkM0NDAwMzRGQjk3IC8qIE5T
U3BlbGxDaGVja2VyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzNDN0E3NDFDMEZCQzQ0MDAzNEZCOTcgLyogTlNTcGVsbENoZWNrZXJTUEkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzQzQ0I4
MTEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQzQ0I3RjEyRjI1RTUxMDAzM0M1RUUgLyog
VGV4dENvZGVjVVRGOC5jcHAgKi87IH07CiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBU
ZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9Owog
CQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQy
QjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwpAQCAtMTEw
OTQsNiArMTEwOTUsNyBAQAogCQk5MzNBMTRBOTBCN0QxRDA5MDBBNTNGRkQgLyogRE9NVGV4dEV2
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVGV4dEV2
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNBMTRCNjBCN0QxRDUyMDBB
NTNGRkQgLyogSlNUZXh0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNB
MTRCNzBCN0QxRDUyMDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTMzQzdBNzQxQzBGQkM0NDAwMzRGQjk3IC8qIE5TU3BlbGxDaGVja2VyU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU3BlbGxDaGVja2VyU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDNDQjdGMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29k
ZWNVVEY4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDb2Rl
Y1VURjguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQzQ0I4MDEyRjI1RTUx
MDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0Q29kZWNVVEY4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDQy
QzlEMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg3MzgsNiArMTg3NDAsNyBAQAogCQkJCUY0MEVB
OEFBMUI4NjdENjUwMENFNTU4MSAvKiBOU1Njcm9sbGluZ0lucHV0RmlsdGVyU1BJLmggKi8sCiAJ
CQkJMkRDQjgzNzcxOUY5OUJCQTAwQTdGQkU0IC8qIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEku
aCAqLywKIAkJCQkyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVNQ
SS5oICovLAorCQkJCTkzM0M3QTc0MUMwRkJDNDQwMDM0RkI5NyAvKiBOU1NwZWxsQ2hlY2tlclNQ
SS5oICovLAogCQkJCTJENzdBQzI4MUJGMkI5ODYwMDcyNDcwQSAvKiBOU1RleHRGaW5kZXJTUEku
aCAqLywKIAkJCQkyRDc3QUMyQzFCRjJCOUEwMDA3MjQ3MEEgLyogTlNWaWV3U1BJLmggKi8sCiAJ
CQkJMkQwQ0Y4MTYxQkNGNURFMTAwN0E0OTM3IC8qIE5TV2luZG93U1BJLmggKi8sCkBAIC0yNzc2
Myw2ICsyNzc2Niw3IEBACiAJCQkJODNDMUQ0MzAxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdMaW5ldG9Ib3Jpem9udGFsQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMTE3OEQ1
QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvUmVs
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzNDN0E3NTFDMEZCQzQ0MDAzNEZCOTcgLyogTlNTcGVs
bENoZWNrZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTdEMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFE
NDMzMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQzFENDM0MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGlu
ZXRvVmVydGljYWxSZWwuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjY0LDYgKzMyNjQsMTEgQEAgdm9pZCBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oYwogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
Y2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oJm1fZnJhbWUpOwogCisjaWYgUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAor
ICAgIGlmIChjbGllbnQoKSAmJiBjYW5FZGl0KCkpCisgICAgICAgIGNsaWVudCgpLT5yZXF1ZXN0
Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExB
VEZPUk0oSU9TKQogICAgIGlmIChzaG91bGREZXRlY3RUZWxlcGhvbmVOdW1iZXJzKCkpCiAgICAg
ICAgIG1fdGVsZXBob25lTnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDAp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTkyOTg5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MzcsNiArNTM3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sKSBvdmVycmlkZSB7IH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICB2aXJ0dWFsIGludCBy
ZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRW1wdHlUZXh0Q2hl
Y2tlckNsaWVudCBtX3RleHRDaGVja2VyQ2xpZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDYgKzE4NiwxMCBAQCBwdWJsaWM6
CiAgICAgLy8gU3VwcG9ydCBmb3IgZ2xvYmFsIHNlbGVjdGlvbnMsIHVzZWQgb24gcGxhdGZvcm1z
IGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0CiAgICAgLy8gc2VsZWN0aW9uIGFz
IGEgdHlwZSBvZiBjbGlwYm9hcmQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzR2xvYmFsU2Vs
ZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICB2aXJ0dWFsIGludCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgPSAwOwor
I2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL05T
U3BlbGxDaGVja2VyU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisjaWZuZGVmIE5TU3BlbGxDaGVja2VyU1BJX2gKKyNkZWZpbmUgTlNTcGVsbENoZWNrZXJT
UElfaAorCisjaWYgIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisK
Ky8vIEZJWE1FOiBUaGlzIGhlYWRlciBzaG91bGQgaW5jbHVkZSBzeXN0ZW0gaGVhZGVycyB3aGVu
IHBvc3NpYmxlLgorCitAaW50ZXJmYWNlIE5TU3BlbGxDaGVja2VyICgpCistIChOU0ludGVnZXIp
cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3RlZFJhbmdlOihOU1JhbmdlKXNlbGVjdGVkUmFuZ2Ug
aW5TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nVG9DaGVjayB0eXBlczooTlNUZXh0Q2hlY2tpbmdU
eXBlcyljaGVja2luZ1R5cGVzIG9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4g
KilvcHRpb25zIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6KE5TSW50ZWdlcil0YWcgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TSW50ZWdlciBzZXF1ZW5jZU51bWJlciwgTlNBcnJheTxOU1Rl
eHRDaGVja2luZ1Jlc3VsdCAqPiAqY2FuZGlkYXRlcykpY29tcGxldGlvbkhhbmRsZXI7CistICh2
b2lkKXNob3dDYW5kaWRhdGVzOihOU0FycmF5PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICopY2Fu
ZGlkYXRlcyBmb3JTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGluUmVjdDooTlNSZWN0KXJlY3RP
ZlR5cGVkU3RyaW5nIHZpZXc6KE5TVmlldyAqKXZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TVGV4dENoZWNraW5nUmVzdWx0ICphY2NlcHRlZENhbmRpZGF0ZSkpY29tcGxldGlvbkJs
b2NrOworQGVuZAorCisjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDIwMDAKKworI2VuZGlmIC8vIE5TU3BlbGxDaGVja2VyU1BJX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
LDYgKzE0OSwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRl
KGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pikg
b3ZlcnJpZGU7CisKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwCisgICAgdmlydHVhbCBpbnQgcmVxdWVzdENhbmRpZGF0ZXNGb3JT
ZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpIG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRTaG93VW5pY29kZU1lbnUoKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTkzMzgwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMTItMDMgIEJldGggRGFraW4gIDxi
ZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIEhvb2sgdXAgcmVxdWVzdCBhbmQgc2hvdyBmb3Ig
dHlwaW5nIGNhbmRpZGF0ZXMgaW4gV0sxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTE4MzEKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjM3NTEyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1lbWJlciB2YXJpYWJsZXMgdG8gV2ViRWRpdG9y
Q2xpZW50LiBPbmUgaXMgYSBXZWFrUHRyRmFjdG9yeSBmb3IgdGhlIAorICAgICAgICBhc3luY2hy
b25vdXMgaGFuZGxlcnMsIGFuZCB0aGUgb3RoZXIgY2FjaGVzIHRoZSBWaXNpYmxlU2VsZWN0aW9u
IGF0IHRoZSB0aW1lIAorICAgICAgICBjYW5kaWRhdGVzIHdlcmUgcmVxdWVzdGVkIHNvIHRoYXQg
d2UgY2FuIG1ha2Ugc3VyZSB0aGUgY2FuZGlkYXRlcyBhcmUgc3RpbGwgCisgICAgICAgIHZhbGlk
IG9uY2Ugd2UgcmVjZWl2ZSB0aGVtLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6V2ViRWRpdG9yQ2xpZW50KToKKworICAgICAgICBD
YWxsIFtOU1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGVkUmFuZ2VdIHdp
dGggdGhlIGFwcHJvcHJpYXRlIAorICAgICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbik6CisKKyAgICAgICAgVHdv
IGhlbHBlcnMgdG8gY29tcHV0ZSBpbmZvcm1hdGlvbiB0aGF0IHdlIG5lZWQgZm9yIGJvdGggb2Yg
dGhlIGhhbmRsZXJzIAorICAgICAgICBiZWxvdy4KKyAgICAgICAgKGNhbmRpZGF0ZVJhbmdlRm9y
U2VsZWN0aW9uKToKKyAgICAgICAgKGNhbmRpZGF0ZVdvdWxkUmVwbGFjZVRleHQpOgorCisgICAg
ICAgIEluIHRoaXMgaGFuZGxlciwgd2UganVzdCBuZWVkIHRvIGNhbGwgW05TU3BlbGxDaGVja2Vy
IHNob3dDYW5kaWRhdGVzXSB3aXRoIAorICAgICAgICB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVy
cy4KKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyk6
CisKKyAgICAgICAgT25jZSBhIGNhbmRpZGF0ZSBpcyBhY2NlcHRlZCwgaXQgc2hvdWxkIGJlIGlu
c2VydGVkIGluIHRoZSByaWdodCB3YXkuCisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmhhbmRs
ZUFjY2VwdGVkQ2FuZGlkYXRlKToKKwogMjAxNS0xMi0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBPYmplY3RpdmUtQyBHQyBzdXBwb3J0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEx
IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1RleHRDaGVja2VyQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24u
aD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvV2Vha1B0ci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY3LDYgKzE2
OSwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wgZW5hYmxlZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdD4pIG92ZXJyaWRl
OwogCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMAorICAgIHZpcnR1YWwgaW50IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9u
KGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGhh
bmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMoTlNJbnRlZ2VyLCBOU0FycmF5PE5TVGV4dENoZWNraW5n
UmVzdWx0ICo+ICopOworICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoTlNUZXh0Q2hl
Y2tpbmdSZXN1bHQgKik7CisjZW5kaWYKKwogICAgIHZvaWQgcmVnaXN0ZXJVbmRvT3JSZWRvU3Rl
cChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiwgYm9vbCBpc1JlZG8pOwogCiAgICAgV2Vi
VmlldyAqbV93ZWJWaWV3OwpAQCAtMTc3LDYgKzE4NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9kZWxheWluZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zOwogICAgIGJvb2wgbV9oYXNEZWxh
eWVkQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbjsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbiBtX2xhc3RTZWxlY3Rpb25Gb3JSZXF1ZXN0ZWRDYW5kaWRhdGVzOworCisg
ICAgV2Vha1B0ckZhY3Rvcnk8V2ViRWRpdG9yQ2xpZW50PiBtX3dlYWtQdHJGYWN0b3J5OwogfTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkocmV2aXNpb24gMTkyOTg5KQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCwxOCArNTQsMjUgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXJjaGl2ZVJl
c291cmNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50RnJhZ21lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TFRleHRBcmVhRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNT
cGVsbENoZWNrZXJTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3BlbGxDaGVja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0
eWxlUHJvcGVydGllcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVW5kb1N0ZXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xOTUsNiArMjAy
LDcgQEAgV2ViRWRpdG9yQ2xpZW50OjpXZWJFZGl0b3JDbGllbnQoV2ViVmlldwogICAgICwgbV9k
ZWxheWluZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKDApCiAgICAgLCBtX2hhc0RlbGF5ZWRD
b250ZW50Q2hhbmdlTm90aWZpY2F0aW9uKDApCiAjZW5kaWYKKyAgICAsIG1fd2Vha1B0ckZhY3Rv
cnkodGhpcykKIHsKIH0KIApAQCAtMTEwOSw2ICsxMTE3LDExNCBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6c2V0SW5wdXRNZXRob2RTdGF0CiB7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCitpbnQgV2ViRWRpdG9yQ2xp
ZW50OjpyZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24pCit7CisgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIG1fbGFzdFNlbGVjdGlvbkZvclJlcXVlc3RlZENhbmRpZGF0ZXMg
PSBzZWxlY3Rpb247CisKKyAgICBWaXNpYmxlUG9zaXRpb24gc2VsZWN0aW9uU3RhcnQgPSBzZWxl
Y3Rpb24udmlzaWJsZVN0YXJ0KCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvbkVuZCA9
IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7CisKKyAgICAvLyBVc2UgdGhlIHN1cnJvdW5kaW5nIHBh
cmFncmFwaHMgb2YgdGV4dCBhcyBjb250ZXh0LgorICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3Jh
cGhTdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3RhcnQpOworICAgIFZpc2libGVQ
b3NpdGlvbiBwYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpOworCisg
ICAgaW50IGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9uU3RhcnQpLmdldCgpKTsKKyAgICBp
bnQgbGVuZ3RoVG9TZWxlY3Rpb25FbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VS
YW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9uRW5kKS5nZXQoKSk7CisgICAgTlNSYW5nZSBy
YW5nZUZvckNhbmRpZGF0ZXMgPSBOU01ha2VSYW5nZShsZW5ndGhUb1NlbGVjdGlvblN0YXJ0LCBs
ZW5ndGhUb1NlbGVjdGlvbkVuZCAtIGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQpOworCisgICAgU3Ry
aW5nIGZ1bGxQbGFpblRleHRTdHJpbmdPZlBhcmFncmFwaCA9IHBsYWluVGV4dChtYWtlUmFuZ2Uo
cGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCkuZ2V0KCkpOworCisgICAgTlNUZXh0Q2hlY2tp
bmdUeXBlcyBjaGVja2luZ1R5cGVzID0gTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBOU1Rl
eHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCB8IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247
CisgICAgYXV0byB3ZWFrRWRpdG9yID0gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7
CisgICAgcmV0dXJuIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZXF1ZXN0
Q2FuZGlkYXRlc0ZvclNlbGVjdGVkUmFuZ2U6cmFuZ2VGb3JDYW5kaWRhdGVzIGluU3RyaW5nOmZ1
bGxQbGFpblRleHRTdHJpbmdPZlBhcmFncmFwaCB0eXBlczpjaGVja2luZ1R5cGVzIG9wdGlvbnM6
bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBjb21w
bGV0aW9uSGFuZGxlcjpbd2Vha0VkaXRvcl0oTlNJbnRlZ2VyIHNlcXVlbmNlTnVtYmVyLCBOU0Fy
cmF5PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICpjYW5kaWRhdGVzKSB7CisgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBpZiAo
IXdlYWtFZGl0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha0Vk
aXRvci0+aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhzZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRl
cyk7CisgICAgICAgIH0pOworICAgIH1dOworfQorCitzdGF0aWMgUmVmUHRyPFJhbmdlPiBjYW5k
aWRhdGVSYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24s
IEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSA/IHdvcmRS
YW5nZUZyb21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkgOiBmcmFtZS0+c2VsZWN0aW9uKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKK30KKworc3RhdGljIGJvb2wgY2FuZGlkYXRlV291bGRSZXBs
YWNlVGV4dChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgLy8gSWYg
dGhlIGNoYXJhY3RlciBiZWhpbmQgdGhlIGNhcmV0IGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBp
cyBhbnl0aGluZyBidXQgYSBzcGFjZSBvciBhIG5ld2xpbmUgdGhlbiB3ZSBzaG91bGQKKyAgICAv
LyByZXBsYWNlIHRoZSB3aG9sZSBjdXJyZW50IHdvcmQgd2l0aCB0aGUgY2FuZGlkYXRlLgorICAg
IFVDaGFyMzIgY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24sIGNoYXJhY3RlckJlZm9yZVNlbGVjdGlv
biwgdHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gMDsKKyAgICBjaGFyYWN0ZXJzQXJvdW5k
UG9zaXRpb24oc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBjaGFyYWN0ZXJBZnRlclNlbGVjdGlv
biwgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24p
OworICAgIHJldHVybiAhKGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9PSAnXDAnIHx8IGNoYXJh
Y3RlckJlZm9yZVNlbGVjdGlvbiA9PSAnXG4nIHx8IGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9
PSAnICcpOworfQorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlUmVxdWVzdGVkQ2FuZGlk
YXRlcyhOU0ludGVnZXIgc2VxdWVuY2VOdW1iZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1
bHQgKj4gKmNhbmRpZGF0ZXMpCit7CisgICAgRnJhbWUqIGZyYW1lID0gY29yZShbbV93ZWJWaWV3
IF9zZWxlY3RlZE9yTWFpbkZyYW1lXSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOworICAgIGlmIChzZWxlY3Rpb24gIT0gbV9sYXN0U2VsZWN0aW9u
Rm9yUmVxdWVzdGVkQ2FuZGlkYXRlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZUZvckN1cnJlbnRseVR5cGVkU3RyaW5nID0gY2FuZGlkYXRlUmFuZ2VGb3JTZWxl
Y3Rpb24oc2VsZWN0aW9uLCBmcmFtZSk7CisgICAgTlNTdHJpbmcgKmN1cnJlbnRseVR5cGVkU3Ry
aW5nOworICAgIGlmIChyYW5nZUZvckN1cnJlbnRseVR5cGVkU3RyaW5nICYmIGNhbmRpZGF0ZVdv
dWxkUmVwbGFjZVRleHQoc2VsZWN0aW9uKSkKKyAgICAgICAgY3VycmVudGx5VHlwZWRTdHJpbmcg
PSBwbGFpblRleHQocmFuZ2VGb3JDdXJyZW50bHlUeXBlZFN0cmluZy5nZXQoKSk7CisgICAgZWxz
ZQorICAgICAgICBjdXJyZW50bHlUeXBlZFN0cmluZyA9IEAiIjsKKworICAgIFJlZlB0cjxSYW5n
ZT4gc2VsZWN0ZWRSYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1h
bGl6ZWRSYW5nZSgpOworICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSW50UmVjdCByZWN0Rm9yU2VsZWN0aW9uQ2FuZGlkYXRlczsKKyAgICBWZWN0b3I8Rmxv
YXRRdWFkPiBxdWFkczsKKyAgICBzZWxlY3RlZFJhbmdlLT5hYnNvbHV0ZVRleHRRdWFkcyhxdWFk
cyk7CisgICAgaWYgKCFxdWFkcy5pc0VtcHR5KCkpCisgICAgICAgIHJlY3RGb3JTZWxlY3Rpb25D
YW5kaWRhdGVzID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNs
b3NpbmdCb3VuZGluZ0JveCgpKTsKKworICAgIGF1dG8gd2Vha0VkaXRvciA9IG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOworICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxD
aGVja2VyXSBzaG93Q2FuZGlkYXRlczpjYW5kaWRhdGVzIGZvclN0cmluZzpjdXJyZW50bHlUeXBl
ZFN0cmluZyBpblJlY3Q6cmVjdEZvclNlbGVjdGlvbkNhbmRpZGF0ZXMgdmlldzptX3dlYlZpZXcg
Y29tcGxldGlvbkhhbmRsZXI6W3dlYWtFZGl0b3JdKE5TVGV4dENoZWNraW5nUmVzdWx0ICphY2Nl
cHRlZENhbmRpZGF0ZSkgeworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgaWYgKCF3ZWFrRWRpdG9yKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHdlYWtFZGl0b3ItPmhhbmRsZUFjY2VwdGVkQ2FuZGlk
YXRlKGFjY2VwdGVkQ2FuZGlkYXRlKTsKKyAgICAgICAgfSk7CisgICAgfV07CisKK30KKwordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKE5TVGV4dENoZWNraW5n
UmVzdWx0ICphY2NlcHRlZENhbmRpZGF0ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtt
X3dlYlZpZXcgX3NlbGVjdGVkT3JNYWluRnJhbWVdKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CisgICAgaWYgKHNlbGVjdGlvbiAhPSBtX2xhc3RT
ZWxlY3Rpb25Gb3JSZXF1ZXN0ZWRDYW5kaWRhdGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8UmFuZ2U+IGNhbmRpZGF0ZVJhbmdlID0gY2FuZGlkYXRlUmFuZ2VGb3JTZWxlY3Rpb24o
c2VsZWN0aW9uLCBmcmFtZSk7CisKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlQ29tcG9z
aXRpb25TZWxlY3Rpb25DaGFuZ2UodHJ1ZSk7CisKKyAgICBpZiAoY2FuZGlkYXRlV291bGRSZXBs
YWNlVGV4dChzZWxlY3Rpb24pKQorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShjYW5kaWRhdGVSYW5nZS5nZXQoKSwgVVBTVFJFQU0sIHRydWUpOworCisgICAgZnJh
bWUtPmVkaXRvcigpLmluc2VydFRleHQoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnRTdHJp
bmcsIDApOworICAgIGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0KFN0cmluZygiICIpLCAwKTsK
KyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2Uo
ZmFsc2UpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKwogI2lmICFQTEFURk9STShJT1MpCiBAaW50ZXJmYWNl
IFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgOiBOU09iamVjdAogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266571</attachid>
            <date>2015-12-03 15:54:22 -0800</date>
            <delta_ts>2015-12-07 12:20:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>19799</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MzM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE1LTEyLTAzICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBIb29rIHVwIHJlcXVlc3QgYW5kIHNo
b3cgZm9yIHR5cGluZyBjYW5kaWRhdGVzIGluIFdLMQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxODMxCisgICAgICAgIC1hbmQgY29ycmVzcG9uZGlu
Zy0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIzNzUxMjE0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBTUEkgdGhhdCBpcyBuZWVkZWQuCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL3NwaS9tYWMvTlNTcGVsbENoZWNrZXJTUEkuaDogQWRkZWQuCisKKyAgICAgICAgUmVx
dWVzdCBjYW5kaWRhdGVzIGZvciBlZGl0YWJsZSBjb250ZW50IHdoZW5ldmVyIHNlbGVjdGlvbiBj
aGFuZ2VzLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisKKyAgICAgICAgSW1wbGVtZW50
IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uIG9uIHRoZSBFZGl0b3JDbGllbnQuCisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnQ6OnJlcXVlc3RDYW5kaWRhdGVzRm9y
U2VsZWN0aW9uKToKKwogMjAxNS0xMi0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBPYmplY3RpdmUtQyBHQyBzdXBwb3J0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxOTI5ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM1NjksNiArMzU2OSw3IEBACiAJCTkzM0Ex
NEFBMEI3RDFEMDkwMEE1M0ZGRCAvKiBET01UZXh0RXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMTRBOTBCN0QxRDA5MDBBNTNGRkQgLyog
RE9NVGV4dEV2ZW50Lm1tICovOyB9OwogCQk5MzNBMTRCODBCN0QxRDUyMDBBNTNGRkQgLyogSlNU
ZXh0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMzQTE0QjYwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmNwcCAqLzsgfTsKIAkJ
OTMzQTE0QjkwQjdEMUQ1MjAwQTUzRkZEIC8qIEpTVGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzNBMTRCNzBCN0QxRDUyMDBBNTNGRkQg
LyogSlNUZXh0RXZlbnQuaCAqLzsgfTsKKwkJOTMzQzdBNzUxQzBGQkM0NDAwMzRGQjk3IC8qIE5T
U3BlbGxDaGVja2VyU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzNDN0E3NDFDMEZCQzQ0MDAzNEZCOTcgLyogTlNTcGVsbENoZWNrZXJTUEkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzQzQ0I4
MTEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQzQ0I3RjEyRjI1RTUxMDAzM0M1RUUgLyog
VGV4dENvZGVjVVRGOC5jcHAgKi87IH07CiAJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVFRSAvKiBU
ZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzQzQ0I4MDEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovOyB9Owog
CQk5MzQ0MkM5RTBEMkIzMzVDMDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlEMEQy
QjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovOyB9OwpAQCAtMTEw
OTQsNiArMTEwOTUsNyBAQAogCQk5MzNBMTRBOTBCN0QxRDA5MDBBNTNGRkQgLyogRE9NVGV4dEV2
ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVGV4dEV2
ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNBMTRCNjBCN0QxRDUyMDBB
NTNGRkQgLyogSlNUZXh0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzNB
MTRCNzBCN0QxRDUyMDBBNTNGRkQgLyogSlNUZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNUZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTMzQzdBNzQxQzBGQkM0NDAwMzRGQjk3IC8qIE5TU3BlbGxDaGVja2VyU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TU3BlbGxDaGVja2VyU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDNDQjdGMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29k
ZWNVVEY4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRDb2Rl
Y1VURjguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzQzQ0I4MDEyRjI1RTUx
MDAzM0M1RUUgLyogVGV4dENvZGVjVVRGOC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0Q29kZWNVVEY4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNDQy
QzlEMEQyQjMzNUMwMDMzOEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg3MzgsNiArMTg3NDAsNyBAQAogCQkJCUY0MEVB
OEFBMUI4NjdENjUwMENFNTU4MSAvKiBOU1Njcm9sbGluZ0lucHV0RmlsdGVyU1BJLmggKi8sCiAJ
CQkJMkRDQjgzNzcxOUY5OUJCQTAwQTdGQkU0IC8qIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTUEku
aCAqLywKIAkJCQkyRENCODM3ODE5Rjk5QkJBMDBBN0ZCRTQgLyogTlNTaGFyaW5nU2VydmljZVNQ
SS5oICovLAorCQkJCTkzM0M3QTc0MUMwRkJDNDQwMDM0RkI5NyAvKiBOU1NwZWxsQ2hlY2tlclNQ
SS5oICovLAogCQkJCTJENzdBQzI4MUJGMkI5ODYwMDcyNDcwQSAvKiBOU1RleHRGaW5kZXJTUEku
aCAqLywKIAkJCQkyRDc3QUMyQzFCRjJCOUEwMDA3MjQ3MEEgLyogTlNWaWV3U1BJLmggKi8sCiAJ
CQkJMkQwQ0Y4MTYxQkNGNURFMTAwN0E0OTM3IC8qIE5TV2luZG93U1BJLmggKi8sCkBAIC0yNzc2
Myw2ICsyNzc2Niw3IEBACiAJCQkJODNDMUQ0MzAxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhT
ZWdMaW5ldG9Ib3Jpem9udGFsQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQzMTE3OEQ1
QUI1MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTgzQzFENDMyMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvUmVs
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzNDN0E3NTFDMEZCQzQ0MDAzNEZCOTcgLyogTlNTcGVs
bENoZWNrZXJTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTdEMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFE
NDMzMTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzQzFENDM0MTc4RDVBQjUwMDE0MUU2OCAvKiBTVkdQYXRoU2VnTGlu
ZXRvVmVydGljYWxSZWwuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjY0LDYgKzMyNjQsMTEgQEAgdm9pZCBFZGl0b3I6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oYwogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
Y2xpZW50KCktPnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oJm1fZnJhbWUpOwogCisjaWYgUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAor
ICAgIGlmIChjbGllbnQoKSAmJiBjYW5FZGl0KCkpCisgICAgICAgIGNsaWVudCgpLT5yZXF1ZXN0
Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiAhUExB
VEZPUk0oSU9TKQogICAgIGlmIChzaG91bGREZXRlY3RUZWxlcGhvbmVOdW1iZXJzKCkpCiAgICAg
ICAgIG1fdGVsZXBob25lTnVtYmVyRGV0ZWN0aW9uVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDAp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTkyOTg5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MzcsNiArNTM3LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKSBvdmVycmlkZSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sKSBvdmVycmlkZSB7IH0KIAorI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICB2aXJ0dWFsIGludCBy
ZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRW1wdHlUZXh0Q2hl
Y2tlckNsaWVudCBtX3RleHRDaGVja2VyQ2xpZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDYgKzE4NiwxMCBAQCBwdWJsaWM6
CiAgICAgLy8gU3VwcG9ydCBmb3IgZ2xvYmFsIHNlbGVjdGlvbnMsIHVzZWQgb24gcGxhdGZvcm1z
IGxpa2UgdGhlIFggV2luZG93IFN5c3RlbSB0aGF0IHRyZWF0CiAgICAgLy8gc2VsZWN0aW9uIGFz
IGEgdHlwZSBvZiBjbGlwYm9hcmQuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzR2xvYmFsU2Vs
ZWN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKKyAgICB2aXJ0dWFsIGludCByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgPSAwOwor
I2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL05T
U3BlbGxDaGVja2VyU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL21hYy9OU1NwZWxsQ2hlY2tlclNQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisjaWZuZGVmIE5TU3BlbGxDaGVja2VyU1BJX2gKKyNkZWZpbmUgTlNTcGVsbENoZWNrZXJT
UElfaAorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMAorCisvLyBGSVhNRTogVGhpcyBoZWFkZXIgc2hvdWxkIGluY2x1ZGUgc3lz
dGVtIGhlYWRlcnMgd2hlbiBwb3NzaWJsZS4KKworQGludGVyZmFjZSBOU1NwZWxsQ2hlY2tlciAo
KQorLSAoTlNJbnRlZ2VyKXJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0ZWRSYW5nZTooTlNSYW5n
ZSlzZWxlY3RlZFJhbmdlIGluU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZ1RvQ2hlY2sgdHlwZXM6
KE5TVGV4dENoZWNraW5nVHlwZXMpY2hlY2tpbmdUeXBlcyBvcHRpb25zOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopb3B0aW9ucyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOihOU0ludGVn
ZXIpdGFnIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0ludGVnZXIgc2VxdWVuY2VOdW1i
ZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKmNhbmRpZGF0ZXMpKWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClzaG93Q2FuZGlkYXRlczooTlNBcnJheTxOU1RleHRDaGVja2lu
Z1Jlc3VsdCAqPiAqKWNhbmRpZGF0ZXMgZm9yU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBpblJl
Y3Q6KE5TUmVjdClyZWN0T2ZUeXBlZFN0cmluZyB2aWV3OihOU1ZpZXcgKil2aWV3IGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1RleHRDaGVja2luZ1Jlc3VsdCAqYWNjZXB0ZWRDYW5kaWRh
dGUpKWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDIwMDAKKworI2VuZGlmIC8vIE5T
U3BlbGxDaGVja2VyU1BJX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTky
OTg5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSwxMSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pikgb3ZlcnJpZGU7CisKKyNpZiBQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCisgICAg
dmlydHVhbCBpbnQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6
VmlzaWJsZVNlbGVjdGlvbiYpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93VW5pY29kZU1lbnUoKSBv
dmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTkzMzgwKQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MzYgQEAKKzIwMTUtMTItMDMgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEhvb2sgdXAgcmVxdWVzdCBhbmQgc2hvdyBmb3IgdHlwaW5nIGNhbmRpZGF0ZXMgaW4gV0sx
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE4MzEK
KyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjM3
NTEyMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG1lbWJlciB2YXJpYWJsZXMgdG8gV2ViRWRpdG9yQ2xpZW50LiBPbmUgaXMgYSBXZWFrUHRy
RmFjdG9yeSBmb3IgdGhlIAorICAgICAgICBhc3luY2hyb25vdXMgaGFuZGxlcnMsIGFuZCB0aGUg
b3RoZXIgY2FjaGVzIHRoZSBWaXNpYmxlU2VsZWN0aW9uIGF0IHRoZSB0aW1lIAorICAgICAgICBj
YW5kaWRhdGVzIHdlcmUgcmVxdWVzdGVkIHNvIHRoYXQgd2UgY2FuIG1ha2Ugc3VyZSB0aGUgY2Fu
ZGlkYXRlcyBhcmUgc3RpbGwgCisgICAgICAgIHZhbGlkIG9uY2Ugd2UgcmVjZWl2ZSB0aGVtLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVu
dDo6V2ViRWRpdG9yQ2xpZW50KToKKworICAgICAgICBDYWxsIFtOU1NwZWxsQ2hlY2tlciByZXF1
ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGVkUmFuZ2VdIHdpdGggdGhlIGFwcHJvcHJpYXRlIAorICAg
ICAgICBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2FuZGlk
YXRlc0ZvclNlbGVjdGlvbik6CisKKyAgICAgICAgVHdvIGhlbHBlcnMgdG8gY29tcHV0ZSBpbmZv
cm1hdGlvbiB0aGF0IHdlIG5lZWQgZm9yIGJvdGggb2YgdGhlIGhhbmRsZXJzIAorICAgICAgICBi
ZWxvdy4KKyAgICAgICAgKGNhbmRpZGF0ZVJhbmdlRm9yU2VsZWN0aW9uKToKKyAgICAgICAgKGNh
bmRpZGF0ZVdvdWxkUmVwbGFjZVRleHQpOgorCisgICAgICAgIEluIHRoaXMgaGFuZGxlciwgd2Ug
anVzdCBuZWVkIHRvIGNhbGwgW05TU3BlbGxDaGVja2VyIHNob3dDYW5kaWRhdGVzXSB3aXRoIAor
ICAgICAgICB0aGUgYXBwcm9wcmlhdGUgcGFyYW1ldGVycy4KKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyk6CisKKyAgICAgICAgT25jZSBhIGNhbmRp
ZGF0ZSBpcyBhY2NlcHRlZCwgaXQgc2hvdWxkIGJlIGluc2VydGVkIGluIHRoZSByaWdodCB3YXku
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKToKKwog
MjAxNS0xMi0wMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBPYmplY3RpdmUtQyBHQyBzdXBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gMTky
OTg5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDExIEBACiAKICNpbXBvcnQgPFdlYkNvcmUv
RWRpdG9yQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Cisj
aW1wb3J0IDx3dGYvV2Vha1B0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgog
CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTY3LDYgKzE2OSwxMiBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVxdWVzdD4pIG92ZXJyaWRlOwogCisjaWYgUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAorICAgIHZpcnR1YWwg
aW50IHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlZpc2libGVT
ZWxlY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZVJlcXVlc3RlZENhbmRpZGF0ZXMo
TlNJbnRlZ2VyLCBOU0FycmF5PE5TVGV4dENoZWNraW5nUmVzdWx0ICo+ICopOworICAgIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKik7CisjZW5kaWYK
KwogICAgIHZvaWQgcmVnaXN0ZXJVbmRvT3JSZWRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVu
ZG9TdGVwPiwgYm9vbCBpc1JlZG8pOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwpAQCAtMTc3
LDYgKzE4NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kZWxheWluZ0NvbnRlbnRDaGFuZ2VO
b3RpZmljYXRpb25zOwogICAgIGJvb2wgbV9oYXNEZWxheWVkQ29udGVudENoYW5nZU5vdGlmaWNh
dGlvbjsKICNlbmRpZgorCisgICAgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiBtX2xhc3RTZWxl
Y3Rpb25Gb3JSZXF1ZXN0ZWRDYW5kaWRhdGVzOworCisgICAgV2Vha1B0ckZhY3Rvcnk8V2ViRWRp
dG9yQ2xpZW50PiBtX3dlYWtQdHJGYWN0b3J5OwogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQkocmV2aXNpb24gMTkyOTg5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxOCArNTQs
MjUgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MTmFtZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdl
YkFyY2hpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNTcGVsbENoZWNrZXJTUEkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZl
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3Bl
bGxDaGVja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVW5kb1N0ZXAuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xOTUsNiArMjAyLDcgQEAgV2ViRWRpdG9yQ2xpZW50OjpX
ZWJFZGl0b3JDbGllbnQoV2ViVmlldwogICAgICwgbV9kZWxheWluZ0NvbnRlbnRDaGFuZ2VOb3Rp
ZmljYXRpb25zKDApCiAgICAgLCBtX2hhc0RlbGF5ZWRDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9u
KDApCiAjZW5kaWYKKyAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKIHsKIH0KIApAQCAtMTEw
OSw2ICsxMTE3LDExNCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0
CiB7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMjAwCitpbnQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2FuZGlkYXRlc0Zv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgUmVm
UHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7
CisgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1fbGFz
dFNlbGVjdGlvbkZvclJlcXVlc3RlZENhbmRpZGF0ZXMgPSBzZWxlY3Rpb247CisKKyAgICBWaXNp
YmxlUG9zaXRpb24gc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7Cisg
ICAgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbi52aXNpYmxlRW5kKCk7
CisKKyAgICAvLyBVc2UgdGhlIHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4dCBhcyBjb250
ZXh0LgorICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydCA9IHN0YXJ0T2ZQYXJhZ3Jh
cGgoc2VsZWN0aW9uU3RhcnQpOworICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhFbmQgPSBl
bmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpOworCisgICAgaW50IGxlbmd0aFRvU2VsZWN0aW9u
U3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFy
dCwgc2VsZWN0aW9uU3RhcnQpLmdldCgpKTsKKyAgICBpbnQgbGVuZ3RoVG9TZWxlY3Rpb25FbmQg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2Vs
ZWN0aW9uRW5kKS5nZXQoKSk7CisgICAgTlNSYW5nZSByYW5nZUZvckNhbmRpZGF0ZXMgPSBOU01h
a2VSYW5nZShsZW5ndGhUb1NlbGVjdGlvblN0YXJ0LCBsZW5ndGhUb1NlbGVjdGlvbkVuZCAtIGxl
bmd0aFRvU2VsZWN0aW9uU3RhcnQpOworCisgICAgU3RyaW5nIGZ1bGxQbGFpblRleHRTdHJpbmdP
ZlBhcmFncmFwaCA9IHBsYWluVGV4dChtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFw
aEVuZCkuZ2V0KCkpOworCisgICAgTlNUZXh0Q2hlY2tpbmdUeXBlcyBjaGVja2luZ1R5cGVzID0g
TlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBOU1RleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVu
dCB8IE5TVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgYXV0byB3ZWFrRWRpdG9yID0g
bV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7CisgICAgcmV0dXJuIFtbTlNTcGVsbENo
ZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGVkUmFu
Z2U6cmFuZ2VGb3JDYW5kaWRhdGVzIGluU3RyaW5nOmZ1bGxQbGFpblRleHRTdHJpbmdPZlBhcmFn
cmFwaCB0eXBlczpjaGVja2luZ1R5cGVzIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhU
YWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBjb21wbGV0aW9uSGFuZGxlcjpbd2Vha0VkaXRv
cl0oTlNJbnRlZ2VyIHNlcXVlbmNlTnVtYmVyLCBOU0FycmF5PE5TVGV4dENoZWNraW5nUmVzdWx0
ICo+ICpjYW5kaWRhdGVzKSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBpZiAoIXdlYWtFZGl0b3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2Vha0VkaXRvci0+aGFuZGxlUmVxdWVzdGVkQ2Fu
ZGlkYXRlcyhzZXF1ZW5jZU51bWJlciwgY2FuZGlkYXRlcyk7CisgICAgICAgIH0pOworICAgIH1d
OworfQorCitzdGF0aWMgUmVmUHRyPFJhbmdlPiBjYW5kaWRhdGVSYW5nZUZvclNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBy
ZXR1cm4gc2VsZWN0aW9uLmlzQ2FyZXQoKSA/IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihzZWxlY3Rp
b24uc3RhcnQoKSkgOiBmcmFtZS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKK30K
Kworc3RhdGljIGJvb2wgY2FuZGlkYXRlV291bGRSZXBsYWNlVGV4dChjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgLy8gSWYgdGhlIGNoYXJhY3RlciBiZWhpbmQgdGhl
IGNhcmV0IGluIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBhbnl0aGluZyBidXQgYSBzcGFjZSBv
ciBhIG5ld2xpbmUgdGhlbiB3ZSBzaG91bGQKKyAgICAvLyByZXBsYWNlIHRoZSB3aG9sZSBjdXJy
ZW50IHdvcmQgd2l0aCB0aGUgY2FuZGlkYXRlLgorICAgIFVDaGFyMzIgY2hhcmFjdGVyQWZ0ZXJT
ZWxlY3Rpb24sIGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiwgdHdvQ2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uID0gMDsKKyAgICBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oc2VsZWN0aW9uLnZpc2li
bGVTdGFydCgpLCBjaGFyYWN0ZXJBZnRlclNlbGVjdGlvbiwgY2hhcmFjdGVyQmVmb3JlU2VsZWN0
aW9uLCB0d29DaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pOworICAgIHJldHVybiAhKGNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbiA9PSAnXDAnIHx8IGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9PSAn
XG4nIHx8IGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9PSAnICcpOworfQorCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6aGFuZGxlUmVxdWVzdGVkQ2FuZGlkYXRlcyhOU0ludGVnZXIgc2VxdWVuY2VO
dW1iZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKmNhbmRpZGF0ZXMpCit7Cisg
ICAgRnJhbWUqIGZyYW1lID0gY29yZShbbV93ZWJWaWV3IF9zZWxlY3RlZE9yTWFpbkZyYW1lXSk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAg
IGlmIChzZWxlY3Rpb24gIT0gbV9sYXN0U2VsZWN0aW9uRm9yUmVxdWVzdGVkQ2FuZGlkYXRlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZUZvckN1cnJlbnRseVR5
cGVkU3RyaW5nID0gY2FuZGlkYXRlUmFuZ2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uLCBmcmFtZSk7
CisgICAgTlNTdHJpbmcgKmN1cnJlbnRseVR5cGVkU3RyaW5nOworICAgIGlmIChyYW5nZUZvckN1
cnJlbnRseVR5cGVkU3RyaW5nICYmIGNhbmRpZGF0ZVdvdWxkUmVwbGFjZVRleHQoc2VsZWN0aW9u
KSkKKyAgICAgICAgY3VycmVudGx5VHlwZWRTdHJpbmcgPSBwbGFpblRleHQocmFuZ2VGb3JDdXJy
ZW50bHlUeXBlZFN0cmluZy5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBjdXJyZW50bHlUeXBl
ZFN0cmluZyA9IEAiIjsKKworICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IGZyYW1l
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgIGlmICgh
c2VsZWN0ZWRSYW5nZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCByZWN0Rm9yU2Vs
ZWN0aW9uQ2FuZGlkYXRlczsKKyAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKKyAgICBzZWxl
Y3RlZFJhbmdlLT5hYnNvbHV0ZVRleHRRdWFkcyhxdWFkcyk7CisgICAgaWYgKCFxdWFkcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJlY3RGb3JTZWxlY3Rpb25DYW5kaWRhdGVzID0gZnJhbWUtPnZpZXco
KS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKTsKKwor
ICAgIGF1dG8gd2Vha0VkaXRvciA9IG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOwor
ICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBzaG93Q2FuZGlkYXRlczpj
YW5kaWRhdGVzIGZvclN0cmluZzpjdXJyZW50bHlUeXBlZFN0cmluZyBpblJlY3Q6cmVjdEZvclNl
bGVjdGlvbkNhbmRpZGF0ZXMgdmlldzptX3dlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6W3dlYWtF
ZGl0b3JdKE5TVGV4dENoZWNraW5nUmVzdWx0ICphY2NlcHRlZENhbmRpZGF0ZSkgeworICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAg
ICAgaWYgKCF3ZWFrRWRpdG9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IHdlYWtFZGl0b3ItPmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGFjY2VwdGVkQ2FuZGlkYXRlKTsK
KyAgICAgICAgfSk7CisgICAgfV07CisKK30KKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRs
ZUFjY2VwdGVkQ2FuZGlkYXRlKE5TVGV4dENoZWNraW5nUmVzdWx0ICphY2NlcHRlZENhbmRpZGF0
ZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFttX3dlYlZpZXcgX3NlbGVjdGVkT3JNYWlu
RnJhbWVdKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CisgICAgaWYgKHNlbGVjdGlvbiAhPSBtX2xhc3RTZWxlY3Rpb25Gb3JSZXF1ZXN0ZWRDYW5k
aWRhdGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8UmFuZ2U+IGNhbmRpZGF0ZVJh
bmdlID0gY2FuZGlkYXRlUmFuZ2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uLCBmcmFtZSk7CisKKyAg
ICBmcmFtZS0+ZWRpdG9yKCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UodHJ1
ZSk7CisKKyAgICBpZiAoY2FuZGlkYXRlV291bGRSZXBsYWNlVGV4dChzZWxlY3Rpb24pKQorICAg
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShjYW5kaWRhdGVSYW5nZS5n
ZXQoKSwgVVBTVFJFQU0sIHRydWUpOworCisgICAgZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHQo
YWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnRTdHJpbmcsIDApOworICAgIGZyYW1lLT5lZGl0
b3IoKS5pbnNlcnRUZXh0KFN0cmluZygiICIpLCAwKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0
SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoZmFsc2UpOworfQorI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAK
KwogI2lmICFQTEFURk9STShJT1MpCiBAaW50ZXJmYWNlIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNw
b25kZXIgOiBOU09iamVjdAogewo=
</data>
<flag name="review"
          id="291587"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>