<?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>69230</bug_id>
          
          <creation_ts>2011-10-02 16:41:56 -0700</creation_ts>
          <short_desc>Strength reduce Mac only Frame::searchForLabelsBeforeElement and Frame::matchLabelsAgainstElement into callers</short_desc>
          <delta_ts>2011-10-02 17:39:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476732</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-02 16:41:56 -0700</bug_when>
    <thetext>Strength reduce Mac only Frame::searchForLabelsBeforeElement and Frame::matchLabelsAgainstElement into callers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476733</commentid>
    <comment_count>1</comment_count>
      <attachid>109431</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-02 16:44:38 -0700</bug_when>
    <thetext>Created attachment 109431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476740</commentid>
    <comment_count>2</comment_count>
      <attachid>109431</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-10-02 17:33:25 -0700</bug_when>
    <thetext>Comment on attachment 109431
Patch

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

&gt; Source/WebKit/mac/WebView/WebHTMLRepresentation.mm:537
&gt; +    // FIXME: This code is mirrored in Frame.cpp. It would be nice to make the Mac code call the platform-agnostic
&gt; +    // code, which would require converting the NSArray of NSStrings to a Vector of Strings somewhere along the way.

Is this comment still relevant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476741</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-02 17:39:40 -0700</bug_when>
    <thetext>Committed r96480: &lt;http://trac.webkit.org/changeset/96480&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109431</attachid>
            <date>2011-10-02 16:44:38 -0700</date>
            <delta_ts>2011-10-02 17:33:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69230-20111002164437.patch</filename>
            <type>text/plain</type>
            <size>31574</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMDIgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBTdHJlbmd0aCByZWR1Y2UgTWFjIG9ubHkg
RnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQgYW5kIEZyYW1lOjptYXRjaExhYmVs
c0FnYWluc3RFbGVtZW50IGludG8gY2FsbGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuaDoKKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbToKKwogMjAxMS0xMC0wMiAgWmVu
byBBbGJpc3NlciAgPHplbm8uYWxiaXNzZXJAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0sy
XVtNYWNdIFdlYktpdDIgZG9lcyBub3QgYnVpbGQgb24gbWFjIGFmdGVyIG1lcmdlIG9mIFF0NSBy
ZWZhY3RvciBicmFuY2guCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gOTY0Nzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDYgKzEzNiw4IEBAIF9fWk4zSlNDOEJpbmRpbmdzOEluc3RhbmNlMTZuZXdSdW50aW1lT2IKIF9f
Wk4zV1RGMTBTdHJpbmdJbXBsY3ZQOE5TU3RyaW5nRXYKIF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNT
dHJpbmcKIF9fWk4zV1RGNlN0cmluZ0MxRVBLMTBfX0NGU3RyaW5nCitfX1pON1dlYkNvcmUxMENs
aWVudFJlY3RDMUVSS05TXzdJbnRSZWN0RQorX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFdgog
X19aTjdXZWJDb3JlMTBDcmVkZW50aWFsQzFFUktOM1dURjZTdHJpbmdFUzRfTlNfMjFDcmVkZW50
aWFsUGVyc2lzdGVuY2VFCiBfX1pON1dlYkNvcmUxMENyZWRlbnRpYWxDMUV2CiBfX1pON1dlYkNv
cmUxMEZsb2F0UG9pbnRDMUVSS05TXzhJbnRQb2ludEUKQEAgLTE0NiwxNCArMTQ4LDEyIEBAIF9f
Wk43V2ViQ29yZTEwTW91c2VFdmVudEMxRVJLTjNXVEYxMkF0b20KIF9fWk43V2ViQ29yZTEwU2Ny
b2xsVmlldzE3c2V0VXNlRml4ZWRMYXlvdXRFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MThz
ZXRGaXhlZExheW91dFNpemVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmll
dzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgorX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRT
Y3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5kb3dS
ZXNpemVyUmVjdENoYW5nZWRFdgogX19aTjdXZWJDb3JlMTBkZWxldGVGaWxlRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTBoYW5kQ3Vyc29yRXYKIF9fWk43V2ViQ29yZTEwc2V0Q29va2ll
c0VQTlNfOERvY3VtZW50RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
MHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKLV9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYK
LV9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFCi1fX1pON1dlYkNvcmU0
dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMENsaWVu
dFJlY3RFCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUDdDR0ltYWdlUE5TXzEzSW1hZ2VP
YnNlcnZlckUKIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhRXYKIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhRU4zV1RGMTBQYXNzT3duUHRySU5TXzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKQEAg
LTIxMSwxMiArMjExLDEyIEBAIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1DMUVSS05TXzRLVVJM
RVIKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1DMUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJ
dGVtRDFFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0RGlzYWJsZWRFYgorX19aTjdX
ZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0RGlzYWJsZWRFYgogX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNzZXRDYXBh
Y2l0aWVzRWpqagogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0ZXZpY3RSZXNvdXJjZXNFdgog
X19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNXVEY3SGFz
aFNldElOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0eU9yaWdp
bkhhc2hFTlMxXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hl
MjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQotX19aTjdX
ZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0RGlzYWJsZWRFYgogX19aTjdXZWJDb3JlMTFSZW5kZXJM
YXllcjE5c2Nyb2xsUmVjdFRvVmlzaWJsZUVSS05TXzdJbnRSZWN0RVJLTlNfMTVTY3JvbGxBbGln
bm1lbnRFUzZfCiBfX1pON1dlYkNvcmUxMWdsb2JhbFBvaW50RVJLOF9OU1BvaW50UDhOU1dpbmRv
dwogX19aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2CkBAIC0zNzMsNyArMzczLDYgQEAgX19aTjdX
ZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTE3d2lsbEVuZExpdgogX19aTjdXZWJDb3JlMTRTY3JvbGxh
YmxlQXJlYTE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNvcmUxNFNjcm9sbGFibGVB
cmVhMjhzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RQogX19aTjdX
ZWJDb3JlMTRTY3JvbGxiYXJUaGVtZTExbmF0aXZlVGhlbWVFdgotX19aTjdXZWJDb3JlMTBTY3Jv
bGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjE0dGhyZWFkc2FmZUNvcHlFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE2
Y3JlYXRlRnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCkBAIC00ODgs
OCArNDg3LDggQEAgX19aTjdXZWJDb3JlMTZUaHJlYWRHbG9iYWxEYXRhQzFFdgogX19aTjdXZWJD
b3JlMTZUaHJlYWRHbG9iYWxEYXRhRDFFdgogX19aTjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9u
MjJleHBhbmRVc2luZ0dyYW51bGFyaXR5RU5TXzE1VGV4dEdyYW51bGFyaXR5RQogX19aTjdXZWJD
b3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFUEtOU181UmFuZ2VFTlNfOUVBZmZpbml0eUViCi1fX1pO
N1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25DMUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9f
Wk43V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbkMxRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FUzNf
YgorX19aTjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFUktOU18xNVZpc2libGVQb3NpdGlv
bkViCiBfX1pON1dlYkNvcmUxNmNvbG9yRnJvbU5TQ29sb3JFUDdOU0NvbG9yCiBfX1pON1dlYkNv
cmUxNmNyZWF0ZUZ1bGxNYXJrdXBFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVs
bE1hcmt1cEVQS05TXzVSYW5nZUUKQEAgLTUwNiw2ICs1MDUsOCBAQCBfX1pON1dlYkNvcmUxN0Rl
dmljZU9yaWVudGF0aW9uNmNyZWF0ZUViCiBfX1pON1dlYkNvcmUxN0dseXBoUGFnZVRyZWVOb2Rl
MTh0cmVlR2x5cGhQYWdlQ291bnRFdgogX19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2
c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVFdgogX19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJv
bGxlcjMzcmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlRXYKK19fWk43V2ViQ29yZTE3
UmVndWxhckV4cHJlc3Npb25DMUVSS04zV1RGNlN0cmluZ0VOUzFfMTlUZXh0Q2FzZVNlbnNpdGl2
aXR5RQorX19aTjdXZWJDb3JlMTdSZWd1bGFyRXhwcmVzc2lvbkQxRXYKIF9fWk43V2ViQ29yZTE3
Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVy
ZUVQS05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTduYW1lRm9yQ3Vyc29yVHlwZUVOU182
Q3Vyc29yNFR5cGVFCiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3Ry
aW5nRVJpCkBAIC03MTAsNiArNzExLDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0YXJ0
TWVkaWFFYgogX19aTjdXZWJDb3JlNFBhZ2UxNnNldERlZmVyc0xvYWRpbmdFYgogX19aTjdXZWJD
b3JlNFBhZ2UxN3dpbGxNb3ZlT2Zmc2NyZWVuRXYKIF9fWk43V2ViQ29yZTRQYWdlMThyZW1vdmVT
Y2hlZHVsZVBhaXJFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTY2hlZHVsZVBhaXJFRUUKK19fWk43
V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JFZlJLTlNfOEludFBvaW50RQogX19aTjdX
ZWJDb3JlNFBhZ2UxOXZpc2l0ZWRTdGF0ZUNoYW5nZWRFUE5TXzlQYWdlR3JvdXBFeQogX19aTjdX
ZWJDb3JlNFBhZ2UyMHNldERldmljZVNjYWxlRmFjdG9yRWYKIF9fWk43V2ViQ29yZTRQYWdlMjB1
bm1hcmtBbGxUZXh0TWF0Y2hlc0V2CkBAIC03MjAsNyArNzIyLDYgQEAgX19aTjdXZWJDb3JlNFBh
Z2UyN3NldEphdmFTY3JpcHRVUkxzQXJlQQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhU
TUxUb2tlbml6ZXJDaHVua1NpemVFaQogX19aTjdXZWJDb3JlNFBhZ2UzMXNldEN1c3RvbUhUTUxU
b2tlbml6ZXJUaW1lRGVsYXlFZAogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xp
ZW50Q2FsbHNFbmFibGVkRWIKLV9fWk43V2ViQ29yZTRQYWdlMThzZXRQYWdlU2NhbGVGYWN0b3JF
ZlJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNFBhZ2UzN3NldEluTG93UXVhbGl0eUltYWdl
SW50ZXJwb2xhdGlvbk1vZGVFYgogX19aTjdXZWJDb3JlNFBhZ2U2Z29CYWNrRXYKIF9fWk43V2Vi
Q29yZTRQYWdlOGdvVG9JdGVtRVBOU18xMUhpc3RvcnlJdGVtRU5TXzEzRnJhbWVMb2FkVHlwZUUK
QEAgLTczMyw2ICs3MzQsNyBAQCBfX1pON1dlYkNvcmU0UGF0aEMxRXYKIF9fWk43V2ViQ29yZTRQ
YXRoRDFFdgogX19aTjdXZWJDb3JlNGNvcmVFUDIwTlNVUkxQcm90ZWN0aW9uU3BhY2UKIF9fWk43
V2ViQ29yZTRjb3JlRVAyOE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKK19fWk43V2ViQ29y
ZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwQ2xp
ZW50UmVjdEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01H
bG9iYWxPYmplY3RFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkUKIF9fWk43V2ViQ29yZTR0b0pT
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzVSYW5nZUUKIF9f
Wk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RF
UE5TXzhOb2RlTGlzdEUKQEAgLTc0NCwxOCArNzQ2LDE2IEBAIF9fWk43V2ViQ29yZTVGcmFtZTE0
ZnJhbWVGb3JXaWRnZXRFUEtOU18KIF9fWk43V2ViQ29yZTVGcmFtZTE3c2V0UGFnZVpvb21GYWN0
b3JFZgogX19aTjdXZWJDb3JlNUZyYW1lMTdzZXRUZXh0Wm9vbUZhY3RvckVmCiBfX1pON1dlYkNv
cmU1RnJhbWUyM3Zpc2libGVQb3NpdGlvbkZvclBvaW50RVJLTlNfOEludFBvaW50RQotX19aTjdX
ZWJDb3JlNUZyYW1lMjVtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50RVA3TlNBcnJheVBOU183RWxl
bWVudEUKLV9fWk5LN1dlYkNvcmU1RnJhbWUxNmZyYW1lU2NhbGVGYWN0b3JFdgorX19aTjdXZWJD
b3JlNUZyYW1lMjRzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGxFUE5TXzE3UmVndWxhckV4cHJlc3Np
b25FUE5TXzIwSFRNTFRhYmxlQ2VsbEVsZW1lbnRFUG0KIF9fWk43V2ViQ29yZTVGcmFtZTI1c2V0
UGFnZUFuZFRleHRab29tRmFjdG9yc0VmZgogX19aTjdXZWJDb3JlNUZyYW1lMjdyZXNpemVQYWdl
UmVjdHNLZWVwaW5nUmF0aW9FUktOU185RmxvYXRTaXplRVMzXwotX19aTjdXZWJDb3JlNUZyYW1l
MjhzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50RVA3TlNBcnJheVBOU183RWxlbWVudEVQbVBi
CiBfX1pON1dlYkNvcmU1RnJhbWU2Y3JlYXRlRVBOU180UGFnZUVQTlNfMjFIVE1MRnJhbWVPd25l
ckVsZW1lbnRFUE5TXzE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pON1dlYkNvcmU1RnJhbWU3c2V0
Vmlld0VOM1dURjEwUGFzc1JlZlB0cklOU185RnJhbWVWaWV3RUVFCiBfX1pON1dlYkNvcmU1RnJh
bWU5bm9kZUltYWdlRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTVGcmFtZUQxRXYKLV9fWk43V2Vi
Q29yZTVJbWFnZTludWxsSW1hZ2VFdgogX19aTjdXZWJDb3JlNUltYWdlMTJzdXBwb3J0c1R5cGVF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU1SW1hZ2UyMGxvYWRQbGF0Zm9ybVJlc291cmNl
RVBLYworX19aTjdXZWJDb3JlNUltYWdlOW51bGxJbWFnZUV2CiBfX1pON1dlYkNvcmU1UmFuZ2Ux
MHNlbGVjdE5vZGVFUE5TXzROb2RlRVJpCiBfX1pON1dlYkNvcmU1UmFuZ2UxNGlzUG9pbnRJblJh
bmdlRVBOU180Tm9kZUVpUmkKIF9fWk43V2ViQ29yZTVSYW5nZTZjcmVhdGVFTjNXVEYxMFBhc3NS
ZWZQdHJJTlNfOERvY3VtZW50RUVFTlMyX0lOU180Tm9kZUVFRWlTNl9pCkBAIC04NTAsNiArODUw
LDcgQEAgX19aTjdXZWJDb3JlN1RleHRSdW4yMXNfYWxsb3dzUm91bmRpbmdIYQogX19aTjdXZWJD
b3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5nSGFja3NFYgogX19aTjdXZWJDb3JlN2Nvb2tp
ZXNFUEtOU184RG9jdW1lbnRFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTduc0NvbG9yRVJLTlNf
NUNvbG9yRQorX19aTjdXZWJDb3JlN3JlcGxhY2VFUk4zV1RGNlN0cmluZ0VSS05TXzE3UmVndWxh
ckV4cHJlc3Npb25FUktTMV8KIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgog
X19aTjdXZWJDb3JlOERvY3VtZW50MTJ1cGRhdGVMYXlvdXRFdgogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTNzdmdFeHRlbnNpb25zRXYKQEAgLTk0OSw2ICs5NTAsNyBAQCBfX1pON1dlYkNvcmU4b3Bl
bkZpbGVFUktOM1dURjZTdHJpbmdFTlNfCiBfX1pON1dlYkNvcmU4dG9TdHJpbmdFUktOM1dURjZW
ZWN0b3JJTlNfMTFQcm94eVNlcnZlckVMbTBFRUUKIF9fWk43V2ViQ29yZTlET01XaW5kb3czMGRp
c3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50c0V2CiBfX1pON1dlYkNvcmU5RE9NV2luZG93MzZk
aXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHNFdgorX19aTjdXZWJDb3JlOUZsb2F0
UmVjdEMxRVJLNkNHUmVjdAogX19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKIF9f
Wk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZsb2F0
U2l6ZUMxRVJLTlNfN0ludFNpemVFCkBAIC05NjcsOSArOTY5LDExIEBAIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxNHNldE5lZWRzTGF5b3V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNHNldFRy
YW5zcGFyZW50RWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxNXNldE1hcmdpbkhlaWdodEVpCiBf
X1pON1dlYkNvcmU5RnJhbWVWaWV3MTZzZXRQYWludEJlaGF2aW9yRWoKK19fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3BhaW50Q29udHJvbFRpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcxN3Nl
dFNjcm9sbFBvc2l0aW9uRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3
c2V0VHJhY2tzUmVwYWludHNFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJv
bFRpbnRzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5T
XzdFbGVtZW50RVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBlbnRlckNv
bXBvc2l0aW5nTW9kZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFmbHVzaERlZmVycmVkUmVw
YWludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIyc2V0QmFzZUJhY2tncm91bmRDb2xvckVS
S05TXzVDb2xvckUKQEAgLTk4Myw4ICs5ODcsNiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3Mzhz
Y3JvbGxQb3NpdGlvbkNoCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzhzeW5jQ29tcG9zaXRpbmdT
dGF0ZUluY2x1ZGluZ1N1YmZyYW1lc0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVQ
TlNfNUZyYW1lRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUE5TXzVGcmFtZUVSS05T
XzdJbnRTaXplRQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3cGFpbnRDb250cm9sVGludHNFdgot
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVjdEVQTlNfN0VsZW1lbnRF
UktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMGxpc3RpbmdUYWdFCiBfX1pO
N1dlYkNvcmU5SFRNTE5hbWVzMTF0ZXh0YXJlYVRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMx
M2Jsb2NrcXVvdGVUYWdFCkBAIC0xMDEwLDYgKzEwMTIsNyBAQCBfX1pON1dlYkNvcmU5SFRNTE5h
bWVzNXRoVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczV0clRhZ0UKIF9fWk43V2ViQ29yZTlI
VE1MTmFtZXM1dWxUYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzNmRpdlRhZ0UKK19fWk43V2Vi
Q29yZTlIVE1MTmFtZXM2aWRBdHRyRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczZpbWdUYWdFCiBf
X1pON1dlYkNvcmU5SFRNTE5hbWVzNnByZVRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM3Zm9y
bVRhZ0UKQEAgLTEwMTgsNiArMTAyMSw3IEBAIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4ZW1iZWRU
YWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOGZyYW1lVGFnRQogX19aTjdXZWJDb3JlOUhUTUxO
YW1lczhocmVmQXR0ckUKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4aW5wdXRUYWdFCitfX1pON1dl
YkNvcmU5SFRNTE5hbWVzOG5hbWVBdHRyRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczh2aWRlb1Rh
Z0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM5aWZyYW1lVGFnRQogX19aTjdXZWJDb3JlOUhUTUxO
YW1lczlvYmplY3RUYWdFCkBAIC0xMTk5LDYgKzEyMDMsOSBAQCBfX1pOSzdXZWJDb3JlMTZWaXNp
YmxlU2VsZWN0aW9uMTd0b05vcm1hCiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTly
b290RWRpdGFibGVFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24yM2lz
Q29udGVudFJpY2hseUVkaXRhYmxlRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb241
aXNBbGxFTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCitfX1pOSzdXZWJDb3JlMTdS
ZWd1bGFyRXhwcmVzc2lvbjEzbWF0Y2hlZExlbmd0aEV2CitfX1pOSzdXZWJDb3JlMTdSZWd1bGFy
RXhwcmVzc2lvbjVtYXRjaEVSS04zV1RGNlN0cmluZ0VpUGkKK19fWk5LN1dlYkNvcmUxN1JlZ3Vs
YXJFeHByZXNzaW9uOXNlYXJjaFJldkVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxN1Jl
c291cmNlRXJyb3JCYXNlOGxhenlJbml0RXYKIF9fWk5LN1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRy
b2xsZXIyNG51bWJlck9mQWN0aXZlQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50RQogX19aTks3V2Vi
Q29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTEwaHR0cE1ldGhvZEV2CkBAIC0xMjQ2LDYgKzEyNTMs
NyBAQCBfX1pOSzdXZWJDb3JlNEtVUkw4cHJvdG9jb2xFdgogX19aTks3V2ViQ29yZTRLVVJMY3ZQ
NU5TVVJMRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNjZW5kYW50T2ZFUEtTMF8KIF9fWk5L
N1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJOM1dURjExTGlzdEhhc2hTZXRJTlNf
NEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCitfX1pOSzdXZWJDb3JlNE5vZGUyMHRyYXZlcnNl
UHJldmlvdXNOb2RlRVBLUzBfCiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5L
N1dlYkNvcmU0UGFnZTEwcGx1Z2luRGF0YUV2CiBfX1pOSzdXZWJDb3JlNFBhZ2UxNWJhY2tGb3J3
YXJkTGlzdEV2CkBAIC0xMjU2LDYgKzEyNjQsNyBAQCBfX1pOSzdXZWJDb3JlNUZyYW1lMTNvd25l
clJlbmRlcmVyRXYKIF9fWk5LN1dlYkNvcmU1RnJhbWUxNHNlbGVjdGlvbkltYWdlRWIKIF9fWk5L
N1dlYkNvcmU1RnJhbWUxNWNvbnRlbnRSZW5kZXJlckV2CiBfX1pOSzdXZWJDb3JlNUZyYW1lMTVs
YXllclRyZWVBc1RleHRFYgorX19aTks3V2ViQ29yZTVGcmFtZTE2ZnJhbWVTY2FsZUZhY3RvckV2
CiBfX1pOSzdXZWJDb3JlNUZyYW1lMThkb2N1bWVudFR5cGVTdHJpbmdFdgogX19aTks3V2ViQ29y
ZTVGcmFtZTMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UK
IF9fWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdgpAQCAtMTMyMywxMCArMTMzMiwxMCBAQCBf
X1pOSzdXZWJDb3JlOERvY3VtZW50MjBjYWNoZURvY3VtZW50RWxlCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQog
X19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ0cGFn
ZUV2CitfX1pOSzdXZWJDb3JlOERvY3VtZW50NHZpZXdFdgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDZkb21haW5FdgogX19aTks3V2ViQ29yZThEb2N1bWVudDZsb2FkZXJFdgogX19aTks3V2ViQ29y
ZThEb2N1bWVudDhzZXR0aW5nc0V2Ci1fX1pOSzdXZWJDb3JlOERvY3VtZW50NHZpZXdFdgogX19a
Tks3V2ViQ29yZThJbnRQb2ludGN2N0NHUG9pbnRFdgogX19aTks3V2ViQ29yZThJbnRQb2ludGN2
OF9OU1BvaW50RXYKIF9fWk5LN1dlYkNvcmU4UG9zaXRpb24xMGRvd25zdHJlYW1FTlNfMjdFZGl0
aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCkBAIC0xMzM3LDcgKzEzNDYsNiBAQCBfX1pOSzdXZWJD
b3JlOFBvc2l0aW9uMjZ0cmFpbGluZ1doaXRlc3BhCiBfX1pOSzdXZWJDb3JlOFBvc2l0aW9uOHVw
c3RyZWFtRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQogX19aTks3V2ViQ29yZTlE
T01XaW5kb3cyN3BlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVyc0V2CiBfX1pOSzdXZWJDb3JlOUZs
b2F0UXVhZDExYm91bmRpbmdCb3hFdgotX19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLNkNHUmVj
dAogX19aTks3V2ViQ29yZTlGbG9hdFJlY3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dlYkNvcmU5RnJh
bWVUcmVlMTJ0cmF2ZXJzZU5leHRFUEtOU181RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJl
ZTE0aXNEZXNjZW5kYW50T2ZFUEtOU181RnJhbWVFCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZp
c2lvbiA5NjQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk1LDkgKzE5NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5n
IG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywg
RWxlbWVudCopOwogICAgICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIE5TU3RyaW5n
KiBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KE5TQXJyYXkqIGxhYmVscywgRWxlbWVudCos
IHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwotICAg
ICAgICBOU1N0cmluZyogbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChOU0FycmF5KiBsYWJlbHMs
IEVsZW1lbnQqKTsKLQogICAgICAgICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShib29sIGZvcmNl
QmxhY2tUZXh0ID0gZmFsc2UpIGNvbnN0OwogICAgICAgICBOU0ltYWdlKiBzbmFwc2hvdERyYWdJ
bWFnZShOb2RlKiwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpIGNvbnN0
OwogICAgICAgICBOU0ltYWdlKiBpbWFnZUZyb21SZWN0KE5TUmVjdCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQkocmV2aXNpb24gOTY0NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjMsMTk0ICs2
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAotLy8gRWl0aGVyIGdldCBjYWNoZWQgcmVnZXhwIG9yIGJ1aWxkIG9uZSB0aGF0IG1hdGNoZXMg
YW55IG9mIHRoZSBsYWJlbHMuCi0vLyBUaGUgcmVnZXhwIHdlIGJ1aWxkIGlzIG9mIHRoZSBmb3Jt
OiAgKFNUUjF8U1RSMnxTVFJOKQotc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JM
YWJlbHMoTlNBcnJheSogbGFiZWxzKQotewotICAgIC8vIEFsbCB0aGUgT2JqQyBjYWxscyBpbiB0
aGlzIG1ldGhvZCBhcmUgc2ltcGxlIGFycmF5IGFuZCBzdHJpbmcKLSAgICAvLyBjYWxscyB3aGlj
aCB3ZSBjYW4gYXNzdW1lIGRvIG5vdCByYWlzZSBleGNlcHRpb25zCi0KLQotICAgIC8vIFBhcmFs
bGVsIGFycmF5cyB0aGF0IHdlIHVzZSB0byBjYWNoZSByZWdFeHBzLiAgSW4gcHJhY3RpY2UgdGhl
IG51bWJlciBvZiBleHByZXNzaW9ucwotICAgIC8vIHRoYXQgdGhlIGFwcCB3aWxsIHVzZSBpcyBl
cXVhbCB0byB0aGUgbnVtYmVyIG9mIGxvY2FsZXMgaXMgdXNlZCBpbiBzZWFyY2hpbmcuCi0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCByZWdFeHBDYWNoZVNpemUgPSA0OwotICAgIHN0YXRp
YyBOU011dGFibGVBcnJheSogcmVnRXhwTGFiZWxzID0gbmlsOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoVmVjdG9yPFJlZ3VsYXJFeHByZXNzaW9uKj4sIHJlZ0V4cHMsICgpKTsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9uLCB3b3JkUmVnRXhwLCAoIlxcdyIsIFRl
eHRDYXNlU2Vuc2l0aXZlKSk7Ci0KLSAgICBSZWd1bGFyRXhwcmVzc2lvbiogcmVzdWx0OwotICAg
IGlmICghcmVnRXhwTGFiZWxzKQotICAgICAgICByZWdFeHBMYWJlbHMgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnJlZ0V4cENhY2hlU2l6ZV07Ci0gICAgQ0ZJbmRl
eCBjYWNoZUhpdCA9IFtyZWdFeHBMYWJlbHMgaW5kZXhPZk9iamVjdDpsYWJlbHNdOwotICAgIGlm
IChjYWNoZUhpdCAhPSBOU05vdEZvdW5kKQotICAgICAgICByZXN1bHQgPSByZWdFeHBzLmF0KGNh
Y2hlSGl0KTsKLSAgICBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHBhdHRlcm4oIigiKTsKLSAgICAg
ICAgdW5zaWduZWQgaW50IG51bUxhYmVscyA9IFtsYWJlbHMgY291bnRdOwotICAgICAgICB1bnNp
Z25lZCBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bUxhYmVsczsgaSsrKSB7Ci0g
ICAgICAgICAgICBTdHJpbmcgbGFiZWwgPSBbbGFiZWxzIG9iamVjdEF0SW5kZXg6aV07Ci0KLSAg
ICAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyID0gZmFsc2U7Ci0gICAgICAgICAgICBi
b29sIGVuZHNXaXRoV29yZENoYXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChsYWJlbC5sZW5n
dGgoKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyID0gd29yZFJl
Z0V4cC5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7Ci0gICAgICAgICAgICAgICAg
ZW5kc1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0Y2gobGFiZWwuc3Vic3RyaW5nKGxhYmVs
Lmxlbmd0aCgpIC0gMSwgMSkpID49IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChpICE9IDApCi0gICAgICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQoInwi
KTsKLSAgICAgICAgICAgIC8vIFNlYXJjaCBmb3Igd29yZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFi
ZWwgc3RhcnRzL2VuZHMgd2l0aCAid29yZCBjaGFyYWN0ZXJzIi4KLSAgICAgICAgICAgIC8vIElm
IHdlIGFsd2F5cyBzZWFyY2hlZCBmb3Igd29yZCBib3VuZGFyaWVzLCB0aGlzIHdvdWxkbid0IHdv
cmsgZm9yIGxhbmd1YWdlcwotICAgICAgICAgICAgLy8gc3VjaCBhcyBKYXBhbmVzZS4KLSAgICAg
ICAgICAgIGlmIChzdGFydHNXaXRoV29yZENoYXIpCi0gICAgICAgICAgICAgICAgcGF0dGVybi5h
cHBlbmQoIlxcYiIpOwotICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQobGFiZWwpOwotICAgICAg
ICAgICAgaWYgKGVuZHNXaXRoV29yZENoYXIpCi0gICAgICAgICAgICAgICAgcGF0dGVybi5hcHBl
bmQoIlxcYiIpOwotICAgICAgICB9Ci0gICAgICAgIHBhdHRlcm4uYXBwZW5kKCIpIik7Ci0gICAg
ICAgIHJlc3VsdCA9IG5ldyBSZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLCBUZXh0Q2FzZUluc2Vu
c2l0aXZlKTsKLSAgICB9Ci0KLSAgICAvLyBhZGQgcmVnZXhwIHRvIHRoZSBjYWNoZSwgbWFraW5n
IHN1cmUgaXQgaXMgYXQgdGhlIGZyb250IGZvciBMUlUgb3JkZXJpbmcKLSAgICBpZiAoY2FjaGVI
aXQgIT0gMCkgewotICAgICAgICBpZiAoY2FjaGVIaXQgIT0gTlNOb3RGb3VuZCkgewotICAgICAg
ICAgICAgLy8gcmVtb3ZlIGZyb20gb2xkIHNwb3QKLSAgICAgICAgICAgIFtyZWdFeHBMYWJlbHMg
cmVtb3ZlT2JqZWN0QXRJbmRleDpjYWNoZUhpdF07Ci0gICAgICAgICAgICByZWdFeHBzLnJlbW92
ZShjYWNoZUhpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYWRkIHRvIHN0YXJ0Ci0gICAgICAg
IFtyZWdFeHBMYWJlbHMgaW5zZXJ0T2JqZWN0OmxhYmVscyBhdEluZGV4OjBdOwotICAgICAgICBy
ZWdFeHBzLmluc2VydCgwLCByZXN1bHQpOwotICAgICAgICAvLyB0cmltIGlmIHRvbyBiaWcKLSAg
ICAgICAgaWYgKFtyZWdFeHBMYWJlbHMgY291bnRdID4gcmVnRXhwQ2FjaGVTaXplKSB7Ci0gICAg
ICAgICAgICBbcmVnRXhwTGFiZWxzIHJlbW92ZU9iamVjdEF0SW5kZXg6cmVnRXhwQ2FjaGVTaXpl
XTsKLSAgICAgICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uKiBsYXN0ID0gcmVnRXhwcy5sYXN0KCk7
Ci0gICAgICAgICAgICByZWdFeHBzLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgIGRlbGV0ZSBs
YXN0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TU3RyaW5n
KiBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVs
ZW1lbnQqIGVsZW1lbnQsIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5D
ZWxsQWJvdmUpCi17Ci0gICAgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cCA9IHJlZ0V4cEZvckxh
YmVscyhsYWJlbHMpOwotICAgIC8vIFdlIHN0b3Agc2VhcmNoaW5nIGFmdGVyIHdlJ3ZlIHNlZW4g
dGhpcyBtYW55IGNoYXJzCi0gICAgY29uc3QgdW5zaWduZWQgaW50IGNoYXJzU2VhcmNoZWRUaHJl
c2hvbGQgPSA1MDA7Ci0gICAgLy8gVGhpcyBpcyB0aGUgYWJzb2x1dGUgbWF4IHdlIHNlYXJjaC4g
IFdlIGFsbG93IGEgbGl0dGxlIG1vcmUgc2xvcCB0aGFuCi0gICAgLy8gY2hhcnNTZWFyY2hlZFRo
cmVzaG9sZCwgdG8gbWFrZSBpdCBtb3JlIGxpa2VseSB0aGF0IHdlJ2xsIHNlYXJjaCB3aG9sZSBu
b2Rlcy4KLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbWF4Q2hhcnNTZWFyY2hlZCA9IDYwMDsKLSAg
ICAvLyBJZiB0aGUgc3RhcnRpbmcgZWxlbWVudCBpcyB3aXRoaW4gYSB0YWJsZSwgdGhlIGNlbGwg
dGhhdCBjb250YWlucyBpdAotICAgIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBzdGFydGluZ1RhYmxl
Q2VsbCA9IDA7Ci0gICAgYm9vbCBzZWFyY2hlZENlbGxBYm92ZSA9IGZhbHNlOwotICAgIAotICAg
IGlmIChyZXN1bHREaXN0YW5jZSkKLSAgICAgICAgKnJlc3VsdERpc3RhbmNlID0gbm90Rm91bmQ7
Ci0gICAgaWYgKHJlc3VsdElzSW5DZWxsQWJvdmUpCi0gICAgICAgICpyZXN1bHRJc0luQ2VsbEFi
b3ZlID0gZmFsc2U7Ci0KLSAgICAvLyB3YWxrIGJhY2t3YXJkcyBpbiB0aGUgbm9kZSB0cmVlLCB1
bnRpbCBhbm90aGVyIGVsZW1lbnQsIG9yIGZvcm0sIG9yIGVuZCBvZiB0cmVlCi0gICAgdW5zaWdu
ZWQgbGVuZ3RoU2VhcmNoZWQgPSAwOwotICAgIE5vZGUqIG47Ci0gICAgZm9yIChuID0gZWxlbWVu
dC0+dHJhdmVyc2VQcmV2aW91c05vZGUoKTsKLSAgICAgICAgIG4gJiYgbGVuZ3RoU2VhcmNoZWQg
PCBjaGFyc1NlYXJjaGVkVGhyZXNob2xkOwotICAgICAgICAgbiA9IG4tPnRyYXZlcnNlUHJldmlv
dXNOb2RlKCkpCi0gICAgewotICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShmb3JtVGFnKQotICAg
ICAgICAgICAgfHwgKG4tPmlzSFRNTEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
biktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBX
ZSBoaXQgYW5vdGhlciBmb3JtIGVsZW1lbnQgb3IgdGhlIHN0YXJ0IG9mIHRoZSBmb3JtIC0gYmFp
bCBvdXQKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05h
bWUodGRUYWcpICYmICFzdGFydGluZ1RhYmxlQ2VsbCkgewotICAgICAgICAgICAgc3RhcnRpbmdU
YWJsZUNlbGwgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVudCo+KG4pOwotICAgICAg
ICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUodHJUYWcpICYmIHN0YXJ0aW5nVGFibGVDZWxsKSB7
Ci0gICAgICAgICAgICBOU1N0cmluZyogcmVzdWx0ID0gc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxs
KHJlZ0V4cCwgc3RhcnRpbmdUYWJsZUNlbGwsIHJlc3VsdERpc3RhbmNlKTsKLSAgICAgICAgICAg
IGlmIChyZXN1bHQgJiYgW3Jlc3VsdCBsZW5ndGhdID4gMCkgewotICAgICAgICAgICAgICAgIGlm
IChyZXN1bHRJc0luQ2VsbEFib3ZlKQotICAgICAgICAgICAgICAgICAgICAqcmVzdWx0SXNJbkNl
bGxBYm92ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHNlYXJjaGVkQ2VsbEFib3ZlID0gdHJ1ZTsKLSAgICAgICAgfSBl
bHNlIGlmIChuLT5pc1RleHROb2RlKCkgJiYgbi0+cmVuZGVyZXIoKSAmJiBuLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkgewotICAgICAgICAgICAgLy8gRm9y
IGVhY2ggdGV4dCBjaHVuaywgcnVuIHRoZSByZWdleHAKLSAgICAgICAgICAgIFN0cmluZyBub2Rl
U3RyaW5nID0gbi0+bm9kZVZhbHVlKCk7Ci0gICAgICAgICAgICAvLyBhZGQgMTAwIGZvciBzbG9w
LCB0byBtYWtlIGl0IG1vcmUgbGlrZWx5IHRoYXQgd2UnbGwgc2VhcmNoIHdob2xlIG5vZGVzCi0g
ICAgICAgICAgICBpZiAobGVuZ3RoU2VhcmNoZWQgKyBub2RlU3RyaW5nLmxlbmd0aCgpID4gbWF4
Q2hhcnNTZWFyY2hlZCkKLSAgICAgICAgICAgICAgICBub2RlU3RyaW5nID0gbm9kZVN0cmluZy5y
aWdodChjaGFyc1NlYXJjaGVkVGhyZXNob2xkIC0gbGVuZ3RoU2VhcmNoZWQpOwotICAgICAgICAg
ICAgaW50IHBvcyA9IHJlZ0V4cC0+c2VhcmNoUmV2KG5vZGVTdHJpbmcpOwotICAgICAgICAgICAg
aWYgKHBvcyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdERpc3RhbmNlKQotICAg
ICAgICAgICAgICAgICAgICAqcmVzdWx0RGlzdGFuY2UgPSBsZW5ndGhTZWFyY2hlZDsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZVN0cmluZy5zdWJzdHJpbmcocG9zLCByZWdFeHAtPm1hdGNo
ZWRMZW5ndGgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZW5ndGhTZWFyY2hlZCAr
PSBub2RlU3RyaW5nLmxlbmd0aCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSWYgd2Ug
c3RhcnRlZCBpbiBhIGNlbGwsIGJ1dCBiYWlsZWQgYmVjYXVzZSB3ZSBmb3VuZCB0aGUgc3RhcnQg
b2YgdGhlIGZvcm0gb3IgdGhlCi0gICAgLy8gcHJldmlvdXMgZWxlbWVudCwgd2Ugc3RpbGwgbWln
aHQgbmVlZCB0byBzZWFyY2ggdGhlIHJvdyBhYm92ZSB1cyBmb3IgYSBsYWJlbC4KLSAgICBpZiAo
c3RhcnRpbmdUYWJsZUNlbGwgJiYgIXNlYXJjaGVkQ2VsbEFib3ZlKSB7Ci0gICAgICAgIE5TU3Ry
aW5nKiByZXN1bHQgPSBzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwocmVnRXhwLCBzdGFydGluZ1Rh
YmxlQ2VsbCwgcmVzdWx0RGlzdGFuY2UpOwotICAgICAgICBpZiAocmVzdWx0ICYmIFtyZXN1bHQg
bGVuZ3RoXSA+IDApIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHRJc0luQ2VsbEFib3ZlKQotICAg
ICAgICAgICAgICAgICpyZXN1bHRJc0luQ2VsbEFib3ZlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIG5pbDsKLX0K
LQotc3RhdGljIE5TU3RyaW5nICptYXRjaExhYmVsc0FnYWluc3RTdHJpbmcoTlNBcnJheSAqbGFi
ZWxzLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvTWF0Y2gpCi17Ci0gICAgaWYgKHN0cmluZ1RvTWF0
Y2guaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFN0cmluZyBtdXRh
YmxlU3RyaW5nVG9NYXRjaCA9IHN0cmluZ1RvTWF0Y2g7Ci0gICAgCi0gICAgLy8gTWFrZSBudW1i
ZXJzIGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBib3VuZGFyaWVzLCBl
LmcuLCAiYWRkcmVzczIiCi0gICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgUmVndWxh
ckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNlU2Vuc2l0aXZlKSwgIiAiKTsKLSAgICBtdXRhYmxl
U3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKLSAgICAKLSAgICBSZWd1bGFyRXhwcmVz
c2lvbiogcmVnRXhwID0gcmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7Ci0gICAgLy8gVXNlIHRoZSBs
YXJnZXN0IG1hdGNoIHdlIGNhbiBmaW5kIGluIHRoZSB3aG9sZSBzdHJpbmcKLSAgICBpbnQgcG9z
OwotICAgIGludCBsZW5ndGg7Ci0gICAgaW50IGJlc3RQb3MgPSAtMTsKLSAgICBpbnQgYmVzdExl
bmd0aCA9IC0xOwotICAgIGludCBzdGFydCA9IDA7Ci0gICAgZG8gewotICAgICAgICBwb3MgPSBy
ZWdFeHAtPm1hdGNoKG11dGFibGVTdHJpbmdUb01hdGNoLCBzdGFydCk7Ci0gICAgICAgIGlmIChw
b3MgIT0gLTEpIHsKLSAgICAgICAgICAgIGxlbmd0aCA9IHJlZ0V4cC0+bWF0Y2hlZExlbmd0aCgp
OwotICAgICAgICAgICAgaWYgKGxlbmd0aCA+PSBiZXN0TGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgYmVzdFBvcyA9IHBvczsKLSAgICAgICAgICAgICAgICBiZXN0TGVuZ3RoID0gbGVuZ3RoOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhcnQgPSBwb3MgKyAxOwotICAgICAgICB9Ci0g
ICAgfSB3aGlsZSAocG9zICE9IC0xKTsKLSAgICAKLSAgICBpZiAoYmVzdFBvcyAhPSAtMSkKLSAg
ICAgICAgcmV0dXJuIG11dGFibGVTdHJpbmdUb01hdGNoLnN1YnN0cmluZyhiZXN0UG9zLCBiZXN0
TGVuZ3RoKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU1N0cmluZyogRnJhbWU6Om1hdGNoTGFi
ZWxzQWdhaW5zdEVsZW1lbnQoTlNBcnJheSogbGFiZWxzLCBFbGVtZW50KiBlbGVtZW50KQotewot
ICAgIC8vIE1hdGNoIGFnYWluc3QgdGhlIG5hbWUgZWxlbWVudCwgdGhlbiBhZ2FpbnN0IHRoZSBp
ZCBlbGVtZW50IGlmIG5vIG1hdGNoIGlzIGZvdW5kIGZvciB0aGUgbmFtZSBlbGVtZW50LgotICAg
IC8vIFNlZSA3NTM4MzMwIGZvciBvbmUgcG9wdWxhciBzaXRlIHRoYXQgYmVuZWZpdHMgZnJvbSB0
aGUgaWQgZWxlbWVudCBjaGVjay4KLSAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIG1pcnJvcmVk
IGluIEZyYW1lLmNwcC4gSXQgd291bGQgYmUgbmljZSB0byBtYWtlIHRoZSBNYWMgY29kZSBjYWxs
IHRoZSBwbGF0Zm9ybS1hZ25vc3RpYwotICAgIC8vIGNvZGUsIHdoaWNoIHdvdWxkIHJlcXVpcmUg
Y29udmVydGluZyB0aGUgTlNBcnJheSBvZiBOU1N0cmluZ3MgdG8gYSBWZWN0b3Igb2YgU3RyaW5n
cyBzb21ld2hlcmUgYWxvbmcgdGhlIHdheS4KLSAgICBTdHJpbmcgcmVzdWx0RnJvbU5hbWVBdHRy
aWJ1dGUgPSBtYXRjaExhYmVsc0FnYWluc3RTdHJpbmcobGFiZWxzLCBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUobmFtZUF0dHIpKTsKLSAgICBpZiAoIXJlc3VsdEZyb21OYW1lQXR0cmlidXRlLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdEZyb21OYW1lQXR0cmlidXRlOwotICAgIAotICAg
IHJldHVybiBtYXRjaExhYmVsc0FnYWluc3RTdHJpbmcobGFiZWxzLCBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoaWRBdHRyKSk7Ci19Ci0KIE5TSW1hZ2UqIEZyYW1lOjppbWFnZUZyb21SZWN0KE5TUmVj
dCByZWN0KSBjb25zdAogewogICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX3ZpZXct
PnBhaW50QmVoYXZpb3IoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NDc4KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTEtMTAtMDIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBTdHJlbmd0aCByZWR1Y2UgTWFjIG9ubHkgRnJhbWU6OnNlYXJjaEZvckxhYmVsc0JlZm9yZUVs
ZW1lbnQgYW5kIEZyYW1lOjptYXRjaExhYmVsc0FnYWluc3RFbGVtZW50IGludG8gY2FsbGVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAocmVnRXhwRm9yTGFiZWxzKToKKyAg
ICAgICAgKHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQpOgorICAgICAgICAobWF0Y2hMYWJl
bHNBZ2FpbnN0U3RyaW5nKToKKyAgICAgICAgKG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQpOgor
ICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gc2VhcmNoRm9yTGFiZWxzOmJlZm9yZUVs
ZW1lbnQ6cmVzdWx0RGlzdGFuY2U6cmVzdWx0SXNJbkNlbGxBYm92ZTpdKToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIG1hdGNoTGFiZWxzOmFnYWluc3RFbGVtZW50Ol0pOgorCiAy
MDExLTEwLTAyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHI5NTQ3NCk6IFVuYWJsZSB0byB0eXBlIGFueXdoZXJlIGluIG5pZ2h0bHkg
YnVpbGRzIGluIFdlYktpdDEgbW9kZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0JKHJldmlzaW9uIDk2NDc4KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDggKzUyLDExIEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGb3JtRWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MVGFibGVDZWxsRWxlbWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1JhbmdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlZ3VsYXJFeHByZXNzaW9uLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVzb3VyY2VE
ZWNvZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NSFRNTElucHV0RWxlbWVudC5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTM1Miw2ICszNTUsMTk0IEBAIC0gKE5TQXJyYXkgKilj
b250cm9sc0luRm9ybTooRE9NRWxlbWVudCAKICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAorLy8g
RWl0aGVyIGdldCBjYWNoZWQgcmVnZXhwIG9yIGJ1aWxkIG9uZSB0aGF0IG1hdGNoZXMgYW55IG9m
IHRoZSBsYWJlbHMuCisvLyBUaGUgcmVnZXhwIHdlIGJ1aWxkIGlzIG9mIHRoZSBmb3JtOiAgKFNU
UjF8U1RSMnxTVFJOKQorc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMo
TlNBcnJheSAqbGFiZWxzKQoreworICAgIC8vIEFsbCB0aGUgT2JqQyBjYWxscyBpbiB0aGlzIG1l
dGhvZCBhcmUgc2ltcGxlIGFycmF5IGFuZCBzdHJpbmcKKyAgICAvLyBjYWxscyB3aGljaCB3ZSBj
YW4gYXNzdW1lIGRvIG5vdCByYWlzZSBleGNlcHRpb25zCisKKyAgICAvLyBQYXJhbGxlbCBhcnJh
eXMgdGhhdCB3ZSB1c2UgdG8gY2FjaGUgcmVnRXhwcy4gIEluIHByYWN0aWNlIHRoZSBudW1iZXIg
b2YgZXhwcmVzc2lvbnMKKyAgICAvLyB0aGF0IHRoZSBhcHAgd2lsbCB1c2UgaXMgZXF1YWwgdG8g
dGhlIG51bWJlciBvZiBsb2NhbGVzIGlzIHVzZWQgaW4gc2VhcmNoaW5nLgorICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBpbnQgcmVnRXhwQ2FjaGVTaXplID0gNDsKKyAgICBzdGF0aWMgTlNNdXRh
YmxlQXJyYXkqIHJlZ0V4cExhYmVscyA9IG5pbDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZl
Y3RvcjxSZWd1bGFyRXhwcmVzc2lvbio+LCByZWdFeHBzLCAoKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgd29yZFJlZ0V4cCwgKCJcXHciLCBUZXh0Q2FzZVNl
bnNpdGl2ZSkpOworCisgICAgUmVndWxhckV4cHJlc3Npb24qIHJlc3VsdDsKKyAgICBpZiAoIXJl
Z0V4cExhYmVscykKKyAgICAgICAgcmVnRXhwTGFiZWxzID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpyZWdFeHBDYWNoZVNpemVdOworICAgIENGSW5kZXggY2FjaGVI
aXQgPSBbcmVnRXhwTGFiZWxzIGluZGV4T2ZPYmplY3Q6bGFiZWxzXTsKKyAgICBpZiAoY2FjaGVI
aXQgIT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmVzdWx0ID0gcmVnRXhwcy5hdChjYWNoZUhpdCk7
CisgICAgZWxzZSB7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuKCIoIik7CisgICAgICAgIHVuc2ln
bmVkIGludCBudW1MYWJlbHMgPSBbbGFiZWxzIGNvdW50XTsKKyAgICAgICAgdW5zaWduZWQgaW50
IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1MYWJlbHM7IGkrKykgeworICAgICAgICAg
ICAgU3RyaW5nIGxhYmVsID0gW2xhYmVscyBvYmplY3RBdEluZGV4OmldOworCisgICAgICAgICAg
ICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IGZhbHNlOworICAgICAgICAgICAgYm9vbCBlbmRz
V2l0aFdvcmRDaGFyID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobGFiZWwubGVuZ3RoKCkgIT0g
MCkgeworICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhciA9IHdvcmRSZWdFeHAubWF0
Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOworICAgICAgICAgICAgICAgIGVuZHNXaXRo
V29yZENoYXIgPSB3b3JkUmVnRXhwLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgo
KSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoaSAhPSAwKQorICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCJ8Iik7CisgICAg
ICAgICAgICAvLyBTZWFyY2ggZm9yIHdvcmQgYm91bmRhcmllcyBvbmx5IGlmIGxhYmVsIHN0YXJ0
cy9lbmRzIHdpdGggIndvcmQgY2hhcmFjdGVycyIuCisgICAgICAgICAgICAvLyBJZiB3ZSBhbHdh
eXMgc2VhcmNoZWQgZm9yIHdvcmQgYm91bmRhcmllcywgdGhpcyB3b3VsZG4ndCB3b3JrIGZvciBs
YW5ndWFnZXMKKyAgICAgICAgICAgIC8vIHN1Y2ggYXMgSmFwYW5lc2UuCisgICAgICAgICAgICBp
ZiAoc3RhcnRzV2l0aFdvcmRDaGFyKQorICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCJc
XGIiKTsKKyAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKGxhYmVsKTsKKyAgICAgICAgICAgIGlm
IChlbmRzV2l0aFdvcmRDaGFyKQorICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKCJcXGIi
KTsKKyAgICAgICAgfQorICAgICAgICBwYXR0ZXJuLmFwcGVuZCgiKSIpOworICAgICAgICByZXN1
bHQgPSBuZXcgUmVndWxhckV4cHJlc3Npb24ocGF0dGVybiwgVGV4dENhc2VJbnNlbnNpdGl2ZSk7
CisgICAgfQorCisgICAgLy8gYWRkIHJlZ2V4cCB0byB0aGUgY2FjaGUsIG1ha2luZyBzdXJlIGl0
IGlzIGF0IHRoZSBmcm9udCBmb3IgTFJVIG9yZGVyaW5nCisgICAgaWYgKGNhY2hlSGl0ICE9IDAp
IHsKKyAgICAgICAgaWYgKGNhY2hlSGl0ICE9IE5TTm90Rm91bmQpIHsKKyAgICAgICAgICAgIC8v
IHJlbW92ZSBmcm9tIG9sZCBzcG90CisgICAgICAgICAgICBbcmVnRXhwTGFiZWxzIHJlbW92ZU9i
amVjdEF0SW5kZXg6Y2FjaGVIaXRdOworICAgICAgICAgICAgcmVnRXhwcy5yZW1vdmUoY2FjaGVI
aXQpOworICAgICAgICB9CisgICAgICAgIC8vIGFkZCB0byBzdGFydAorICAgICAgICBbcmVnRXhw
TGFiZWxzIGluc2VydE9iamVjdDpsYWJlbHMgYXRJbmRleDowXTsKKyAgICAgICAgcmVnRXhwcy5p
bnNlcnQoMCwgcmVzdWx0KTsKKyAgICAgICAgLy8gdHJpbSBpZiB0b28gYmlnCisgICAgICAgIGlm
IChbcmVnRXhwTGFiZWxzIGNvdW50XSA+IHJlZ0V4cENhY2hlU2l6ZSkgeworICAgICAgICAgICAg
W3JlZ0V4cExhYmVscyByZW1vdmVPYmplY3RBdEluZGV4OnJlZ0V4cENhY2hlU2l6ZV07CisgICAg
ICAgICAgICBSZWd1bGFyRXhwcmVzc2lvbiogbGFzdCA9IHJlZ0V4cHMubGFzdCgpOworICAgICAg
ICAgICAgcmVnRXhwcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICBkZWxldGUgbGFzdDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgTlNTdHJpbmcq
IHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoRnJhbWUqIGZyYW1lLCBOU0FycmF5KiBsYWJl
bHMsIEVsZW1lbnQqIGVsZW1lbnQsIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3Vs
dElzSW5DZWxsQWJvdmUpCit7CisgICAgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cCA9IHJlZ0V4
cEZvckxhYmVscyhsYWJlbHMpOworICAgIC8vIFdlIHN0b3Agc2VhcmNoaW5nIGFmdGVyIHdlJ3Zl
IHNlZW4gdGhpcyBtYW55IGNoYXJzCisgICAgY29uc3QgdW5zaWduZWQgaW50IGNoYXJzU2VhcmNo
ZWRUaHJlc2hvbGQgPSA1MDA7CisgICAgLy8gVGhpcyBpcyB0aGUgYWJzb2x1dGUgbWF4IHdlIHNl
YXJjaC4gIFdlIGFsbG93IGEgbGl0dGxlIG1vcmUgc2xvcCB0aGFuCisgICAgLy8gY2hhcnNTZWFy
Y2hlZFRocmVzaG9sZCwgdG8gbWFrZSBpdCBtb3JlIGxpa2VseSB0aGF0IHdlJ2xsIHNlYXJjaCB3
aG9sZSBub2Rlcy4KKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbWF4Q2hhcnNTZWFyY2hlZCA9IDYw
MDsKKyAgICAvLyBJZiB0aGUgc3RhcnRpbmcgZWxlbWVudCBpcyB3aXRoaW4gYSB0YWJsZSwgdGhl
IGNlbGwgdGhhdCBjb250YWlucyBpdAorICAgIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBzdGFydGlu
Z1RhYmxlQ2VsbCA9IDA7CisgICAgYm9vbCBzZWFyY2hlZENlbGxBYm92ZSA9IGZhbHNlOworICAg
IAorICAgIGlmIChyZXN1bHREaXN0YW5jZSkKKyAgICAgICAgKnJlc3VsdERpc3RhbmNlID0gbm90
Rm91bmQ7CisgICAgaWYgKHJlc3VsdElzSW5DZWxsQWJvdmUpCisgICAgICAgICpyZXN1bHRJc0lu
Q2VsbEFib3ZlID0gZmFsc2U7CisKKyAgICAvLyB3YWxrIGJhY2t3YXJkcyBpbiB0aGUgbm9kZSB0
cmVlLCB1bnRpbCBhbm90aGVyIGVsZW1lbnQsIG9yIGZvcm0sIG9yIGVuZCBvZiB0cmVlCisgICAg
dW5zaWduZWQgbGVuZ3RoU2VhcmNoZWQgPSAwOworICAgIE5vZGUqIG47CisgICAgZm9yIChuID0g
ZWxlbWVudC0+dHJhdmVyc2VQcmV2aW91c05vZGUoKTsKKyAgICAgICAgIG4gJiYgbGVuZ3RoU2Vh
cmNoZWQgPCBjaGFyc1NlYXJjaGVkVGhyZXNob2xkOworICAgICAgICAgbiA9IG4tPnRyYXZlcnNl
UHJldmlvdXNOb2RlKCkpCisgICAgeworICAgICAgICBpZiAobi0+aGFzVGFnTmFtZShmb3JtVGFn
KQorICAgICAgICAgICAgfHwgKG4tPmlzSFRNTEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obiktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpKQorICAgICAgICB7CisgICAgICAgICAg
ICAvLyBXZSBoaXQgYW5vdGhlciBmb3JtIGVsZW1lbnQgb3IgdGhlIHN0YXJ0IG9mIHRoZSBmb3Jt
IC0gYmFpbCBvdXQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKG4tPmhh
c1RhZ05hbWUodGRUYWcpICYmICFzdGFydGluZ1RhYmxlQ2VsbCkgeworICAgICAgICAgICAgc3Rh
cnRpbmdUYWJsZUNlbGwgPSBzdGF0aWNfY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVudCo+KG4pOwor
ICAgICAgICB9IGVsc2UgaWYgKG4tPmhhc1RhZ05hbWUodHJUYWcpICYmIHN0YXJ0aW5nVGFibGVD
ZWxsKSB7CisgICAgICAgICAgICBOU1N0cmluZyogcmVzdWx0ID0gZnJhbWUtPnNlYXJjaEZvckxh
YmVsc0Fib3ZlQ2VsbChyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7
CisgICAgICAgICAgICBpZiAocmVzdWx0ICYmIFtyZXN1bHQgbGVuZ3RoXSA+IDApIHsKKyAgICAg
ICAgICAgICAgICBpZiAocmVzdWx0SXNJbkNlbGxBYm92ZSkKKyAgICAgICAgICAgICAgICAgICAg
KnJlc3VsdElzSW5DZWxsQWJvdmUgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZWFyY2hlZENlbGxBYm92ZSA9IHRydWU7
CisgICAgICAgIH0gZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgpICYmIG4tPnJlbmRlcmVyKCkgJiYg
bi0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUpIHsKKyAgICAg
ICAgICAgIC8vIEZvciBlYWNoIHRleHQgY2h1bmssIHJ1biB0aGUgcmVnZXhwCisgICAgICAgICAg
ICBTdHJpbmcgbm9kZVN0cmluZyA9IG4tPm5vZGVWYWx1ZSgpOworICAgICAgICAgICAgLy8gYWRk
IDEwMCBmb3Igc2xvcCwgdG8gbWFrZSBpdCBtb3JlIGxpa2VseSB0aGF0IHdlJ2xsIHNlYXJjaCB3
aG9sZSBub2RlcworICAgICAgICAgICAgaWYgKGxlbmd0aFNlYXJjaGVkICsgbm9kZVN0cmluZy5s
ZW5ndGgoKSA+IG1heENoYXJzU2VhcmNoZWQpCisgICAgICAgICAgICAgICAgbm9kZVN0cmluZyA9
IG5vZGVTdHJpbmcucmlnaHQoY2hhcnNTZWFyY2hlZFRocmVzaG9sZCAtIGxlbmd0aFNlYXJjaGVk
KTsKKyAgICAgICAgICAgIGludCBwb3MgPSByZWdFeHAtPnNlYXJjaFJldihub2RlU3RyaW5nKTsK
KyAgICAgICAgICAgIGlmIChwb3MgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHRE
aXN0YW5jZSkKKyAgICAgICAgICAgICAgICAgICAgKnJlc3VsdERpc3RhbmNlID0gbGVuZ3RoU2Vh
cmNoZWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmcuc3Vic3RyaW5nKHBvcywg
cmVnRXhwLT5tYXRjaGVkTGVuZ3RoKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVu
Z3RoU2VhcmNoZWQgKz0gbm9kZVN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIElmIHdlIHN0YXJ0ZWQgaW4gYSBjZWxsLCBidXQgYmFpbGVkIGJlY2F1c2Ugd2UgZm91
bmQgdGhlIHN0YXJ0IG9mIHRoZSBmb3JtIG9yIHRoZQorICAgIC8vIHByZXZpb3VzIGVsZW1lbnQs
IHdlIHN0aWxsIG1pZ2h0IG5lZWQgdG8gc2VhcmNoIHRoZSByb3cgYWJvdmUgdXMgZm9yIGEgbGFi
ZWwuCisgICAgaWYgKHN0YXJ0aW5nVGFibGVDZWxsICYmICFzZWFyY2hlZENlbGxBYm92ZSkgewor
ICAgICAgICBOU1N0cmluZyogcmVzdWx0ID0gZnJhbWUtPnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2Vs
bChyZWdFeHAsIHN0YXJ0aW5nVGFibGVDZWxsLCByZXN1bHREaXN0YW5jZSk7CisgICAgICAgIGlm
IChyZXN1bHQgJiYgW3Jlc3VsdCBsZW5ndGhdID4gMCkgeworICAgICAgICAgICAgaWYgKHJlc3Vs
dElzSW5DZWxsQWJvdmUpCisgICAgICAgICAgICAgICAgKnJlc3VsdElzSW5DZWxsQWJvdmUgPSB0
cnVlOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICByZXR1cm4gbmlsOworfQorCitzdGF0aWMgTlNTdHJpbmcgKm1hdGNoTGFiZWxzQWdhaW5z
dFN0cmluZyhOU0FycmF5ICpsYWJlbHMsIGNvbnN0IFN0cmluZyYgc3RyaW5nVG9NYXRjaCkKK3sK
KyAgICBpZiAoc3RyaW5nVG9NYXRjaC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgCisgICAgU3RyaW5nIG11dGFibGVTdHJpbmdUb01hdGNoID0gc3RyaW5nVG9NYXRjaDsKKyAg
ICAKKyAgICAvLyBNYWtlIG51bWJlcnMgYW5kIF8ncyBpbiBmaWVsZCBuYW1lcyBiZWhhdmUgbGlr
ZSB3b3JkIGJvdW5kYXJpZXMsIGUuZy4sICJhZGRyZXNzMiIKKyAgICByZXBsYWNlKG11dGFibGVT
dHJpbmdUb01hdGNoLCBSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRpdmUp
LCAiICIpOworICAgIG11dGFibGVTdHJpbmdUb01hdGNoLnJlcGxhY2UoJ18nLCAnICcpOworICAg
IAorICAgIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHAgPSByZWdFeHBGb3JMYWJlbHMobGFiZWxz
KTsKKyAgICAvLyBVc2UgdGhlIGxhcmdlc3QgbWF0Y2ggd2UgY2FuIGZpbmQgaW4gdGhlIHdob2xl
IHN0cmluZworICAgIGludCBwb3M7CisgICAgaW50IGxlbmd0aDsKKyAgICBpbnQgYmVzdFBvcyA9
IC0xOworICAgIGludCBiZXN0TGVuZ3RoID0gLTE7CisgICAgaW50IHN0YXJ0ID0gMDsKKyAgICBk
byB7CisgICAgICAgIHBvcyA9IHJlZ0V4cC0+bWF0Y2gobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIHN0
YXJ0KTsKKyAgICAgICAgaWYgKHBvcyAhPSAtMSkgeworICAgICAgICAgICAgbGVuZ3RoID0gcmVn
RXhwLT5tYXRjaGVkTGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAobGVuZ3RoID49IGJlc3RMZW5n
dGgpIHsKKyAgICAgICAgICAgICAgICBiZXN0UG9zID0gcG9zOworICAgICAgICAgICAgICAgIGJl
c3RMZW5ndGggPSBsZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCA9IHBv
cyArIDE7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChwb3MgIT0gLTEpOworICAgIAorICAgIGlm
IChiZXN0UG9zICE9IC0xKQorICAgICAgICByZXR1cm4gbXV0YWJsZVN0cmluZ1RvTWF0Y2guc3Vi
c3RyaW5nKGJlc3RQb3MsIGJlc3RMZW5ndGgpOworICAgIHJldHVybiBuaWw7Cit9CisKK3N0YXRp
YyBOU1N0cmluZyogbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChOU0FycmF5KiBsYWJlbHMsIEVs
ZW1lbnQqIGVsZW1lbnQpCit7CisgICAgLy8gTWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSBlbGVtZW50
LCB0aGVuIGFnYWluc3QgdGhlIGlkIGVsZW1lbnQgaWYgbm8gbWF0Y2ggaXMgZm91bmQgZm9yIHRo
ZSBuYW1lIGVsZW1lbnQuCisgICAgLy8gU2VlIDc1MzgzMzAgZm9yIG9uZSBwb3B1bGFyIHNpdGUg
dGhhdCBiZW5lZml0cyBmcm9tIHRoZSBpZCBlbGVtZW50IGNoZWNrLgorICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgaXMgbWlycm9yZWQgaW4gRnJhbWUuY3BwLiBJdCB3b3VsZCBiZSBuaWNlIHRvIG1h
a2UgdGhlIE1hYyBjb2RlIGNhbGwgdGhlIHBsYXRmb3JtLWFnbm9zdGljCisgICAgLy8gY29kZSwg
d2hpY2ggd291bGQgcmVxdWlyZSBjb252ZXJ0aW5nIHRoZSBOU0FycmF5IG9mIE5TU3RyaW5ncyB0
byBhIFZlY3RvciBvZiBTdHJpbmdzIHNvbWV3aGVyZSBhbG9uZyB0aGUgd2F5LgorICAgIFN0cmlu
ZyByZXN1bHRGcm9tTmFtZUF0dHJpYnV0ZSA9IG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJl
bHMsIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShuYW1lQXR0cikpOworICAgIGlmICghcmVzdWx0RnJv
bU5hbWVBdHRyaWJ1dGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcmVzdWx0RnJvbU5hbWVB
dHRyaWJ1dGU7CisgICAgCisgICAgcmV0dXJuIG1hdGNoTGFiZWxzQWdhaW5zdFN0cmluZyhsYWJl
bHMsIGVsZW1lbnQtPmdldEF0dHJpYnV0ZShpZEF0dHIpKTsKK30KKworCiAtIChOU1N0cmluZyAq
KXNlYXJjaEZvckxhYmVsczooTlNBcnJheSAqKWxhYmVscyBiZWZvcmVFbGVtZW50OihET01FbGVt
ZW50ICopZWxlbWVudAogewogICAgIHJldHVybiBbc2VsZiBzZWFyY2hGb3JMYWJlbHM6bGFiZWxz
IGJlZm9yZUVsZW1lbnQ6ZWxlbWVudCByZXN1bHREaXN0YW5jZTowIHJlc3VsdElzSW5DZWxsQWJv
dmU6MF07CkBAIC0zNjIsNyArNTUzLDcgQEAgLSAoTlNTdHJpbmcgKilzZWFyY2hGb3JMYWJlbHM6
KE5TQXJyYXkgKgogICAgIHNpemVfdCBkaXN0YW5jZTsKICAgICBib29sIGlzSW5DZWxsQWJvdmU7
CiAgICAgCi0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IGNvcmUoW19wcml2YXRlLT5kYXRhU291cmNl
IHdlYkZyYW1lXSktPnNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQobGFiZWxzLCBjb3JlKGVs
ZW1lbnQpLCAmZGlzdGFuY2UsICZpc0luQ2VsbEFib3ZlKTsKKyAgICBOU1N0cmluZyAqcmVzdWx0
ID0gc2VhcmNoRm9yTGFiZWxzQmVmb3JlRWxlbWVudChjb3JlKFtfcHJpdmF0ZS0+ZGF0YVNvdXJj
ZSB3ZWJGcmFtZV0pLCBsYWJlbHMsIGNvcmUoZWxlbWVudCksICZkaXN0YW5jZSwgJmlzSW5DZWxs
QWJvdmUpOwogICAgIAogICAgIGlmIChvdXREaXN0YW5jZSkgewogICAgICAgICBpZiAoZGlzdGFu
Y2UgPT0gbm90Rm91bmQpCkBAIC0zNzksNyArNTcwLDcgQEAgLSAoTlNTdHJpbmcgKilzZWFyY2hG
b3JMYWJlbHM6KE5TQXJyYXkgKgogCiAtIChOU1N0cmluZyAqKW1hdGNoTGFiZWxzOihOU0FycmF5
ICopbGFiZWxzIGFnYWluc3RFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAogewotICAgIHJl
dHVybiBjb3JlKFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSB3ZWJGcmFtZV0pLT5tYXRjaExhYmVsc0Fn
YWluc3RFbGVtZW50KGxhYmVscywgY29yZShlbGVtZW50KSk7CisgICAgcmV0dXJuIG1hdGNoTGFi
ZWxzQWdhaW5zdEVsZW1lbnQobGFiZWxzLCBjb3JlKGVsZW1lbnQpKTsKIH0KIAogQGVuZAo=
</data>
<flag name="review"
          id="106669"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>