<?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>36069</bug_id>
          
          <creation_ts>2010-03-12 11:54:04 -0800</creation_ts>
          <short_desc>Eliminate InlineRunBox</short_desc>
          <delta_ts>2010-03-12 12:30:05 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>199158</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-12 11:54:04 -0800</bug_when>
    <thetext>It&apos;s an unnecessary class that is complicating the line box hierarchy.  It needs to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199164</commentid>
    <comment_count>1</comment_count>
      <attachid>50620</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-12 12:12:38 -0800</bug_when>
    <thetext>Created attachment 50620
Patch to remove InlineRunBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199165</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-12 12:17:38 -0800</bug_when>
    <thetext>Attachment 50620 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WARNING: Could not read file. Skipping: &quot;WebCore/rendering/InlineRunBox.h&quot;
WebCore/rendering/RenderLineBoxList.cpp:324:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/rendering/InlineFlowBox.h:176:  One space before end of line comments  [whitespace/comments] [5]
WebCore/rendering/InlineFlowBox.h:177:  One space before end of line comments  [whitespace/comments] [5]
WebCore/rendering/InlineTextBox.h:123:  One space before end of line comments  [whitespace/comments] [5]
WebCore/rendering/InlineTextBox.h:124:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 5 in 17 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>199171</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-03-12 12:30:05 -0800</bug_when>
    <thetext>Fixed in r55928.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50620</attachid>
            <date>2010-03-12 12:12:38 -0800</date>
            <delta_ts>2010-03-12 12:19:21 -0800</delta_ts>
            <desc>Patch to remove InlineRunBox</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>36992</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTkyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMDMtMTIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA2OQorICAgICAgICAKKyAgICAg
ICAgRWxpbWluYXRlIElubGluZVJ1bkJveC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGp1c3RQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZUZsb3dCb3g6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OklubGluZUZs
b3dCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cHJldkxpbmVCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bmV4dExpbmVCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6c2V0TmV4dExpbmVCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lRmxvd0JveDo6c2V0UHJldmlvdXNMaW5lQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lUnVuQm94Lmg6IFJlbW92ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OklubGluZVRleHRCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cHJldlRleHRCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6bmV4dFRleHRCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6c2V0TmV4dFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6c2V0UHJldmlvdXNUZXh0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmRlc3Ryb3kpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJpZ2h0bW9zdFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsZWZ0bW9zdFBvc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphYnNvbHV0ZVF1YWRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6bGluZXNCb3VuZGluZ0JveCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmxpbmVzVmlzaWJsZU92ZXJmbG93Qm91bmRpbmdCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Ojpsb2NhbEJvdW5kaW5nQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmRlbGV0ZUxpbmVC
b3hUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpleHRyYWN0TGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6YXR0YWNoTGluZUJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6cmVtb3ZlTGluZUJveCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6ZGVsZXRlTGluZUJveGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVCb3hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGluZUJveExpc3Q6OmRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0lubGluZTo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxp
bmU6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpvYmplY3RCb3VuZGluZ0JveCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6ZXh0
cmFjdFRleHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YXR0YWNoVGV4dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpyZW1vdmVUZXh0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNyZWF0ZUlubGluZVRleHRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRpb25MaW5lQm94KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6bmV4
dFJvb3RCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6cHJldlJvb3RCb3gp
OgorCiAyMDEwLTAzLTEyICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE5vdCByZXZpZXdlZCwgYnVpbGQgZml4LgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1NTkx
MykKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NzcsNyAr
MTc3Nyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaCBcCiAJV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lUnVuQm94LmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIFwKIAlX
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL0xh
eW91dFN0YXRlLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTU5MTMpCisrKyBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzAxOCw3ICszMDE4LDYgQEAKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9J
bmxpbmVGbG93Qm94LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5o
JywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvSW5saW5lUnVuQm94LmgnLAogICAgICAgICAgICAg
J3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0lu
bGluZVRleHRCb3guaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcCcs
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU1OTEz
KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjcxMzcsMTAgKzI3MTM3LDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXElubGluZVJ1bkJveC5oIg0KLQkJCQk+
DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5n
XElubGluZVRleHRCb3guY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1NTkxMykKKysrIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTM2LDcgKzI5MzYsNiBAQAogCQlBOENGRjA1MDBBMTU0RjA5MDAwQTQyMzQgLyogQXV0b1Rh
YmxlTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFibGVMYXlvdXQuY3BwICovOyB9
OwogCQlBOENGRjA1MTBBMTU0RjA5MDAwQTQyMzQgLyogVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGMDRDMEExNTRGMDkwMDBB
NDIzNCAvKiBUYWJsZUxheW91dC5oICovOyB9OwogCQlBOENGRjVFMTBBMTU1QTA1MDAwQTQyMzQg
LyogUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDRkY1REEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBOENGRjVFMjBB
MTU1QTA1MDAwQTQyMzQgLyogSW5saW5lUnVuQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjVEQjBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5l
UnVuQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNURDMEExNTVBMDUwMDBB
NDIzNCAvKiBJbmxpbmVGbG93Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQThDRkY1RTQwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dC
b3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
RkY1REQwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUZsb3dCb3guY3BwICovOyB9OwogCQlBOENG
RjVFNTBBMTU1QTA1MDAwQTQyMzQgLyogSW5saW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOENGRjVERTBBMTU1QTA1MDAwQTQyMzQgLyogSW5s
aW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTgxOTMsNyArODE5Miw2IEBACiAJCUE4Q0ZGMDRCMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRv
VGFibGVMYXlvdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1
dG9UYWJsZUxheW91dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGMDRD
MEExNTRGMDkwMDBBNDIzNCAvKiBUYWJsZUxheW91dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGFibGVMYXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThDRkY1REEwQTE1NUEwNTAwMEE0MjM0IC8qIFJvb3RJbmxpbmVCb3guaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQThDRkY1REIwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZVJ1bkJveC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lUnVuQm94Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNURDMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxpbmVG
bG93Qm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVGbG93Qm94
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGNUREMEExNTVBMDUwMDBBNDIz
NCAvKiBJbmxpbmVGbG93Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbmxpbmVGbG93Qm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThD
RkY1REUwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTY4Nyw3ICsxNTY4NSw2IEBACiAJCQkJQThDRkY1REQwQTE1NUEwNTAwMEE0MjM0IC8qIElu
bGluZUZsb3dCb3guY3BwICovLAogCQkJCUE4Q0ZGNURDMEExNTVBMDUwMDBBNDIzNCAvKiBJbmxp
bmVGbG93Qm94LmggKi8sCiAJCQkJQkNFNzg5MTUxMTIwRDYwODAwNjBFQ0U1IC8qIElubGluZUl0
ZXJhdG9yLmggKi8sCi0JCQkJQThDRkY1REIwQTE1NUEwNTAwMEE0MjM0IC8qIElubGluZVJ1bkJv
eC5oICovLAogCQkJCUJDRUE0ODFBMDk3RDkzMDIwMDk0QzlFNCAvKiBJbmxpbmVUZXh0Qm94LmNw
cCAqLywKIAkJCQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyogSW5saW5lVGV4dEJveC5oICov
LAogCQkJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi8sCkBA
IC0xNzM5NCw3ICsxNzM5MSw2IEBACiAJCQkJQThDRkY1RTUwQTE1NUEwNTAwMEE0MjM0IC8qIElu
bGluZUJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY1RTMwQTE1NUEwNTAwMEE0MjM0IC8q
IElubGluZUZsb3dCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTc4OTE2MTEyMEQ2MDgwMDYw
RUNFNSAvKiBJbmxpbmVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQThDRkY1RTIwQTE1
NUEwNTAwMEE0MjM0IC8qIElubGluZVJ1bkJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFQTQ4
NUEwOTdEOTMwMjAwOTRDOUU0IC8qIElubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4NTkxQUE1MEYwODVDNEUwMDlCQUNCMSAvKiBJbnB1dEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMzA5REVBMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CShyZXZpc2lvbiA1NTkxMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojph
dHRhY2hMaW5lQm94VG9SZW5kZQogCiB2b2lkIElubGluZUZsb3dCb3g6OmFkanVzdFBvc2l0aW9u
KGludCBkeCwgaW50IGR5KQogewotICAgIElubGluZVJ1bkJveDo6YWRqdXN0UG9zaXRpb24oZHgs
IGR5KTsKKyAgICBJbmxpbmVCb3g6OmFkanVzdFBvc2l0aW9uKGR4LCBkeSk7CiAgICAgZm9yIChJ
bmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dE9uTGluZSgpKQogICAgICAgICBjaGlsZC0+YWRqdXN0UG9zaXRpb24oZHgsIGR5KTsKICAgICBp
ZiAobV9vdmVyZmxvdykKQEAgLTcwMywxMSArNzAzLDExIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRGaWxsTGF5ZXIoY29uc3QKICAgICAgICAgLy8gRklYTUU6IFdoYXQgdGhlIGhlY2sgZG8g
d2UgZG8gd2l0aCBSVEwgaGVyZT8gVGhlIG1hdGggd2UncmUgdXNpbmcgaXMgb2J2aW91c2x5IG5v
dCByaWdodCwKICAgICAgICAgLy8gYnV0IGl0IGlzbid0IGV2ZW4gY2xlYXIgaG93IHRoaXMgc2hv
dWxkIHdvcmsgYXQgYWxsLgogICAgICAgICBpbnQgeE9mZnNldE9uTGluZSA9IDA7Ci0gICAgICAg
IGZvciAoSW5saW5lUnVuQm94KiBjdXJyID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1
cnItPnByZXZMaW5lQm94KCkpCisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IHBy
ZXZMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2TGluZUJveCgpKQogICAgICAgICAg
ICAgeE9mZnNldE9uTGluZSArPSBjdXJyLT53aWR0aCgpOwogICAgICAgICBpbnQgc3RhcnRYID0g
dHggLSB4T2Zmc2V0T25MaW5lOwogICAgICAgICBpbnQgdG90YWxXaWR0aCA9IHhPZmZzZXRPbkxp
bmU7Ci0gICAgICAgIGZvciAoSW5saW5lUnVuQm94KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9
IGN1cnItPm5leHRMaW5lQm94KCkpCisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9
IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICAgICAgdG90
YWxXaWR0aCArPSBjdXJyLT53aWR0aCgpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChJbnRSZWN0KHR4LCB0eSwgd2lk
dGgoKSwgaGVpZ2h0KCkpKTsKQEAgLTc4OCwxMSArNzg4LDExIEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRCb3hEZWNvcmF0aW9ucygKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCB0
aGUgaGVjayBkbyB3ZSBkbyB3aXRoIFJUTCBoZXJlPyBUaGUgbWF0aCB3ZSdyZSB1c2luZyBpcyBv
YnZpb3VzbHkgbm90IHJpZ2h0LAogICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCBpc24ndCBldmVu
IGNsZWFyIGhvdyB0aGlzIHNob3VsZCB3b3JrIGF0IGFsbC4KICAgICAgICAgICAgICAgICBpbnQg
eE9mZnNldE9uTGluZSA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yIChJbmxpbmVSdW5Cb3gqIGN1
cnIgPSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKKyAg
ICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBwcmV2TGluZUJveCgpOyBj
dXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkKICAgICAgICAgICAgICAgICAgICAgeE9m
ZnNldE9uTGluZSArPSBjdXJyLT53aWR0aCgpOwogICAgICAgICAgICAgICAgIGludCBzdGFydFgg
PSB0eCAtIHhPZmZzZXRPbkxpbmU7CiAgICAgICAgICAgICAgICAgaW50IHRvdGFsV2lkdGggPSB4
T2Zmc2V0T25MaW5lOwotICAgICAgICAgICAgICAgIGZvciAoSW5saW5lUnVuQm94KiBjdXJyID0g
dGhpczsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCisgICAgICAgICAgICAgICAg
Zm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPm5leHRM
aW5lQm94KCkpCiAgICAgICAgICAgICAgICAgICAgIHRvdGFsV2lkdGggKz0gY3Vyci0+d2lkdGgo
KTsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcChJbnRSZWN0KHR4LCB0eSwgdywgaCkpOwpAQCAtODU5LDExICs4NTksMTEgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUmVuZGVyT2JqZQogICAgICAgICAvLyBXZSBo
YXZlIGEgbWFzayBpbWFnZSB0aGF0IHNwYW5zIG11bHRpcGxlIGxpbmVzLgogICAgICAgICAvLyBX
ZSBuZWVkIHRvIGFkanVzdCBfdHggYW5kIF90eSBieSB0aGUgd2lkdGggb2YgYWxsIHByZXZpb3Vz
IGxpbmVzLgogICAgICAgICBpbnQgeE9mZnNldE9uTGluZSA9IDA7Ci0gICAgICAgIGZvciAoSW5s
aW5lUnVuQm94KiBjdXJyID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZM
aW5lQm94KCkpCisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IHByZXZMaW5lQm94
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2TGluZUJveCgpKQogICAgICAgICAgICAgeE9mZnNl
dE9uTGluZSArPSBjdXJyLT53aWR0aCgpOwogICAgICAgICBpbnQgc3RhcnRYID0gdHggLSB4T2Zm
c2V0T25MaW5lOwogICAgICAgICBpbnQgdG90YWxXaWR0aCA9IHhPZmZzZXRPbkxpbmU7Ci0gICAg
ICAgIGZvciAoSW5saW5lUnVuQm94KiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9IGN1cnItPm5l
eHRMaW5lQm94KCkpCisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IHRoaXM7IGN1
cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICAgICAgdG90YWxXaWR0aCAr
PSBjdXJyLT53aWR0aCgpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChJbnRSZWN0KHR4LCB0eSwgdywgaCkpOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAkocmV2aXNpb24gNTU5MTMpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcg
QEAKICNpZm5kZWYgSW5saW5lRmxvd0JveF9oCiAjZGVmaW5lIElubGluZUZsb3dCb3hfaAogCi0j
aW5jbHVkZSAiSW5saW5lUnVuQm94LmgiCisjaW5jbHVkZSAiSW5saW5lQm94LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT3ZlcmZsb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsMTIgKzMw
LDE0IEBAIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IFJlbmRlckxpbmVCb3hMaXN0OwogCi1jbGFzcyBJbmxpbmVGbG93Qm94IDogcHVibGljIElubGlu
ZVJ1bkJveCB7CitjbGFzcyBJbmxpbmVGbG93Qm94IDogcHVibGljIElubGluZUJveCB7CiBwdWJs
aWM6CiAgICAgSW5saW5lRmxvd0JveChSZW5kZXJPYmplY3QqIG9iaikKLSAgICAgICAgOiBJbmxp
bmVSdW5Cb3gob2JqKQorICAgICAgICA6IElubGluZUJveChvYmopCiAgICAgICAgICwgbV9maXJz
dENoaWxkKDApCiAgICAgICAgICwgbV9sYXN0Q2hpbGQoMCkKKyAgICAgICAgLCBtX3ByZXZMaW5l
Qm94KDApCisgICAgICAgICwgbV9uZXh0TGluZUJveCgwKQogICAgICAgICAsIG1faW5jbHVkZUxl
ZnRFZGdlKGZhbHNlKQogICAgICAgICAsIG1faW5jbHVkZVJpZ2h0RWRnZShmYWxzZSkKICNpZm5k
ZWYgTkRFQlVHCkBAIC01NCw4ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5saW5l
Rmxvd0JveCgpOwogI2VuZGlmCiAKLSAgICBJbmxpbmVGbG93Qm94KiBwcmV2Rmxvd0JveCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PElubGluZUZsb3dCb3gqPihtX3ByZXZMaW5lKTsgfQot
ICAgIElubGluZUZsb3dCb3gqIG5leHRGbG93Qm94KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5saW5lRmxvd0JveCo+KG1fbmV4dExpbmUpOyB9CisgICAgSW5saW5lRmxvd0JveCogcHJl
dkxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3ByZXZMaW5lQm94OyB9CisgICAgSW5saW5lRmxv
d0JveCogbmV4dExpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX25leHRMaW5lQm94OyB9CisgICAg
dm9pZCBzZXROZXh0TGluZUJveChJbmxpbmVGbG93Qm94KiBuKSB7IG1fbmV4dExpbmVCb3ggPSBu
OyB9CisgICAgdm9pZCBzZXRQcmV2aW91c0xpbmVCb3goSW5saW5lRmxvd0JveCogcCkgeyBtX3By
ZXZMaW5lQm94ID0gcDsgfQogCiAgICAgSW5saW5lQm94KiBmaXJzdENoaWxkKCkgY29uc3QgeyBj
aGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KICAgICBJbmxpbmVCb3gq
IGxhc3RDaGlsZCgpIGNvbnN0IHsgY2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9sYXN0Q2hp
bGQ7IH0KQEAgLTE2NCwxMiArMTY4LDE0IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBPd25Q
dHI8UmVuZGVyT3ZlcmZsb3c+IG1fb3ZlcmZsb3c7CiAKLXByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzSW5saW5lRmxvd0JveCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIElubGlu
ZUJveCogbV9maXJzdENoaWxkOwogICAgIElubGluZUJveCogbV9sYXN0Q2hpbGQ7CiAgICAgCisg
ICAgSW5saW5lRmxvd0JveCogbV9wcmV2TGluZUJveDsgIC8vIFRoZSBwcmV2aW91cyBib3ggdGhh
dCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAorICAgIElubGluZUZsb3dCb3gqIG1fbmV4dExp
bmVCb3g7ICAvLyBUaGUgbmV4dCBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAor
CiAgICAgYm9vbCBtX2luY2x1ZGVMZWZ0RWRnZSA6IDE7CiAgICAgYm9vbCBtX2luY2x1ZGVSaWdo
dEVkZ2UgOiAxOwogICAgIGJvb2wgbV9oYXNUZXh0Q2hpbGRyZW4gOiAxOwpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lUnVuQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lUnVuQm94LmgJKHJldmlzaW9uIDU1OTEzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lUnVuQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBJ
bmxpbmVSdW5Cb3hfaAotI2RlZmluZSBJbmxpbmVSdW5Cb3hfaAotCi0jaW5jbHVkZSAiSW5saW5l
Qm94LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW5saW5lUnVuQm94IDogcHVi
bGljIElubGluZUJveCB7Ci1wdWJsaWM6Ci0gICAgSW5saW5lUnVuQm94KFJlbmRlck9iamVjdCog
b2JqKQotICAgICAgICA6IElubGluZUJveChvYmopCi0gICAgICAgICwgbV9wcmV2TGluZSgwKQot
ICAgICAgICAsIG1fbmV4dExpbmUoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgSW5saW5lUnVuQm94
KiBwcmV2TGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldkxpbmU7IH0KLSAgICBJbmxpbmVS
dW5Cb3gqIG5leHRMaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0TGluZTsgfQotICAgIHZv
aWQgc2V0TmV4dExpbmVCb3goSW5saW5lUnVuQm94KiBuKSB7IG1fbmV4dExpbmUgPSBuOyB9Ci0g
ICAgdm9pZCBzZXRQcmV2aW91c0xpbmVCb3goSW5saW5lUnVuQm94KiBwKSB7IG1fcHJldkxpbmUg
PSBwOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYsIGludCAvKnR4Ki8sIGludCAvKnR5Ki8pIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRleHREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGludCAv
KnR4Ki8sIGludCAvKnR5Ki8sIGJvb2wgLypwYWludGVkQ2hpbGRyZW4qLyA9IGZhbHNlKSB7IH0K
LSAgICAKLXByb3RlY3RlZDoKLSAgICBJbmxpbmVSdW5Cb3gqIG1fcHJldkxpbmU7ICAvLyBUaGUg
cHJldmlvdXMgYm94IHRoYXQgYWxzbyB1c2VzIG91ciBSZW5kZXJPYmplY3QKLSAgICBJbmxpbmVS
dW5Cb3gqIG1fbmV4dExpbmU7ICAvLyBUaGUgbmV4dCBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJl
bmRlck9iamVjdAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSW5s
aW5lUnVuQm94X2gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDU1
OTEzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAjaWZuZGVmIElubGluZVRleHRCb3hfaAogI2RlZmluZSBJbmxp
bmVUZXh0Qm94X2gKIAotI2luY2x1ZGUgIklubGluZVJ1bkJveC5oIgorI2luY2x1ZGUgIklubGlu
ZUJveC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIgLy8gc28gdGV4dFJlbmRlcmVyKCkgY2Fu
IGJlIGlubGluZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNywxOCArMzcsMjIgQEAgY29u
c3QgdW5zaWduZWQgc2hvcnQgY0Z1bGxUcnVuY2F0aW9uID0gVQogdm9pZCB1cGRhdGVHcmFwaGlj
c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgY29uc3Qg
Q29sb3ImIHN0cm9rZUNvbG9yLCBmbG9hdCBzdHJva2VUaGlja25lc3MsIENvbG9yU3BhY2UpOwog
Q29sb3IgY29ycmVjdGVkVGV4dENvbG9yKENvbG9yIHRleHRDb2xvciwgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yKTsKIAotY2xhc3MgSW5saW5lVGV4dEJveCA6IHB1YmxpYyBJbmxpbmVSdW5Cb3ggewor
Y2xhc3MgSW5saW5lVGV4dEJveCA6IHB1YmxpYyBJbmxpbmVCb3ggewogcHVibGljOgogICAgIElu
bGluZVRleHRCb3goUmVuZGVyT2JqZWN0KiBvYmopCi0gICAgICAgIDogSW5saW5lUnVuQm94KG9i
aikKKyAgICAgICAgOiBJbmxpbmVCb3gob2JqKQorICAgICAgICAsIG1fcHJldlRleHRCb3goMCkK
KyAgICAgICAgLCBtX25leHRUZXh0Qm94KDApCiAgICAgICAgICwgbV9zdGFydCgwKQogICAgICAg
ICAsIG1fbGVuKDApCiAgICAgICAgICwgbV90cnVuY2F0aW9uKGNOb1RydW5jYXRpb24pCiAgICAg
ewogICAgIH0KIAotICAgIElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5saW5lVGV4dEJveCo+KG5leHRMaW5lQm94KCkpOyB9Ci0gICAgSW5s
aW5lVGV4dEJveCogcHJldlRleHRCb3goKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJbmxp
bmVUZXh0Qm94Kj4ocHJldkxpbmVCb3goKSk7IH0KKyAgICBJbmxpbmVUZXh0Qm94KiBwcmV2VGV4
dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJldlRleHRCb3g7IH0KKyAgICBJbmxpbmVUZXh0Qm94
KiBuZXh0VGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFRleHRCb3g7IH0KKyAgICB2b2lk
IHNldE5leHRUZXh0Qm94KElubGluZVRleHRCb3gqIG4pIHsgbV9uZXh0VGV4dEJveCA9IG47IH0K
KyAgICB2b2lkIHNldFByZXZpb3VzVGV4dEJveChJbmxpbmVUZXh0Qm94KiBwKSB7IG1fcHJldlRl
eHRCb3ggPSBwOyB9CiAKICAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnQ7IH0KICAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2xlbiA/IG1fc3RhcnQg
KyBtX2xlbiAtIDEgOiBtX3N0YXJ0OyB9CkBAIC0xMTYsNiArMTIwLDkgQEAgcHVibGljOgogICAg
IGJvb2wgY29udGFpbnNDYXJldE9mZnNldChpbnQgb2Zmc2V0KSBjb25zdDsgLy8gZmFsc2UgZm9y
IG9mZnNldCBhZnRlciBsaW5lIGJyZWFrCiAKIHByaXZhdGU6CisgICAgSW5saW5lVGV4dEJveCog
bV9wcmV2VGV4dEJveDsgIC8vIFRoZSBwcmV2aW91cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJl
bmRlck9iamVjdAorICAgIElubGluZVRleHRCb3gqIG1fbmV4dFRleHRCb3g7ICAvLyBUaGUgbmV4
dCBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdAorCiAgICAgaW50IG1fc3RhcnQ7
CiAgICAgdW5zaWduZWQgc2hvcnQgbV9sZW47CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAJKHJldmlzaW9uIDU1OTEzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6
ZGVzdHJveSgpCiAgICAgICAgICAgICAvLyB0aGF0IHdpbGwgb3V0bGFzdCB0aGlzIGJsb2NrLiBJ
biB0aGUgbm9uLWFub255bW91cyBibG9jayBjYXNlIHRob3NlCiAgICAgICAgICAgICAvLyBjaGls
ZHJlbiB3aWxsIGJlIGRlc3Ryb3llZCBieSB0aGUgdGltZSB3ZSByZXR1cm4gZnJvbSB0aGlzIGZ1
bmN0aW9uLgogICAgICAgICAgICAgaWYgKGlzQW5vbnltb3VzQmxvY2soKSkgewotICAgICAgICAg
ICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogYm94ID0gZmlyc3RMaW5lQm94KCk7IGJveDsgYm94
ID0gYm94LT5uZXh0Rmxvd0JveCgpKSB7CisgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93
Qm94KiBib3ggPSBmaXJzdExpbmVCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRMaW5lQm94KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKElubGluZUJveCogY2hpbGRCb3ggPSBib3gt
PmZpcnN0Q2hpbGQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQm94LT5yZW1vdmUo
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0yODAwLDcgKzI4MDAsNyBAQCBpbnQgUmVuZGVyQmxv
Y2s6OnJpZ2h0bW9zdFBvc2l0aW9uKGJvb2wgCiAgICAgaWYgKCFpbmNsdWRlU2VsZikgewogICAg
ICAgICByaWdodCA9IG1heChyaWdodCwgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSArIHBh
ZGRpbmdSaWdodCgpICsgcmVsYXRpdmVPZmZzZXQpOwogICAgICAgICBpZiAoY2hpbGRyZW5Jbmxp
bmUoKSkgewotICAgICAgICAgICAgZm9yIChJbmxpbmVSdW5Cb3gqIGN1cnJCb3ggPSBmaXJzdExp
bmVCb3goKTsgY3VyckJveDsgY3VyckJveCA9IGN1cnJCb3gtPm5leHRMaW5lQm94KCkpIHsKKyAg
ICAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyckJveCA9IGZpcnN0TGluZUJveCgpOyBj
dXJyQm94OyBjdXJyQm94ID0gY3VyckJveC0+bmV4dExpbmVCb3goKSkgewogICAgICAgICAgICAg
ICAgIGludCBjaGlsZFJpZ2h0RWRnZSA9IGN1cnJCb3gtPngoKSArIGN1cnJCb3gtPndpZHRoKCk7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGEg
cm9vdCBlZGl0YWJsZSBlbGVtZW50LCB0aGVuIHRoZSByaWdodG1vc3RQb3NpdGlvbiBzaG91bGQg
YWNjb3VudCBmb3IgYSBjYXJldCBhdCB0aGUgZW5kLgpAQCAtMjg5NSw3ICsyODk1LDcgQEAgaW50
IFJlbmRlckJsb2NrOjpsZWZ0bW9zdFBvc2l0aW9uKGJvb2wgaQogICAgIH0KIAogICAgIGlmICgh
aW5jbHVkZVNlbGYgJiYgZmlyc3RMaW5lQm94KCkpIHsKLSAgICAgICAgZm9yIChJbmxpbmVSdW5C
b3gqIGN1cnJCb3ggPSBmaXJzdExpbmVCb3goKTsgY3VyckJveDsgY3VyckJveCA9IGN1cnJCb3gt
Pm5leHRMaW5lQm94KCkpCisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyckJveCA9IGZp
cnN0TGluZUJveCgpOyBjdXJyQm94OyBjdXJyQm94ID0gY3VyckJveC0+bmV4dExpbmVCb3goKSkK
ICAgICAgICAgICAgIGxlZnQgPSBtaW4obGVmdCwgKGludCljdXJyQm94LT54KCkgKyByZWxhdGl2
ZU9mZnNldCk7CiAgICAgfQogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CShyZXZpc2lvbiA1NTkxMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OmRlc3Ry
b3koKQogICAgICAgICAgICAgLy8gbm90IGhhdmUgYSBwYXJlbnQgdGhhdCBtZWFucyB0aGV5IGFy
ZSBlaXRoZXIgYWxyZWFkeSBkaXNjb25uZWN0ZWQgb3IKICAgICAgICAgICAgIC8vIHJvb3QgbGlu
ZXMgdGhhdCBjYW4ganVzdCBiZSBkZXN0cm95ZWQgd2l0aG91dCBkaXNjb25uZWN0aW5nLgogICAg
ICAgICAgICAgaWYgKGZpcnN0TGluZUJveCgpLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgICAg
IGZvciAoSW5saW5lUnVuQm94KiBib3ggPSBmaXJzdExpbmVCb3goKTsgYm94OyBib3ggPSBib3gt
Pm5leHRMaW5lQm94KCkpCisgICAgICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBib3gg
PSBmaXJzdExpbmVCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRMaW5lQm94KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGJveC0+cmVtb3ZlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoaXNJbmxpbmUoKSAmJiBwYXJlbnQoKSkKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWluCiAKIHZvaWQgUmVuZGVySW5saW5lOjph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQogewot
ICAgIGlmIChJbmxpbmVSdW5Cb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgeworICAgIGlmIChJ
bmxpbmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCkpIHsKICAgICAgICAgZm9yICg7IGN1
cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICAgICAgcmVjdHMuYXBwZW5k
KEludFJlY3QodHggKyBjdXJyLT54KCksIHR5ICsgY3Vyci0+eSgpLCBjdXJyLT53aWR0aCgpLCBj
dXJyLT5oZWlnaHQoKSkpOwogICAgIH0gZWxzZQpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjwKIAogdm9pZCBSZW5kZXJJbmxpbmU6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQogewotICAgIGlmIChJbmxpbmVS
dW5Cb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgeworICAgIGlmIChJbmxpbmVGbG93Qm94KiBj
dXJyID0gZmlyc3RMaW5lQm94KCkpIHsKICAgICAgICAgZm9yICg7IGN1cnI7IGN1cnIgPSBjdXJy
LT5uZXh0TGluZUJveCgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgbG9jYWxSZWN0KGN1cnIt
PngoKSwgY3Vyci0+eSgpLCBjdXJyLT53aWR0aCgpLCBjdXJyLT5oZWlnaHQoKSk7CiAgICAgICAg
ICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChsb2NhbFJlY3QpKTsKQEAgLTUz
NCw3ICs1MzQsNyBAQCBJbnRSZWN0IFJlbmRlcklubGluZTo6bGluZXNCb3VuZGluZ0JveCgpCiAg
ICAgICAgIC8vIFJldHVybiB0aGUgd2lkdGggb2YgdGhlIG1pbmltYWwgbGVmdCBzaWRlIGFuZCB0
aGUgbWF4aW1hbCByaWdodCBzaWRlLgogICAgICAgICBpbnQgbGVmdFNpZGUgPSAwOwogICAgICAg
ICBpbnQgcmlnaHRTaWRlID0gMDsKLSAgICAgICAgZm9yIChJbmxpbmVSdW5Cb3gqIGN1cnIgPSBm
aXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKKyAgICAg
ICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIg
PSBjdXJyLT5uZXh0TGluZUJveCgpKSB7CiAgICAgICAgICAgICBpZiAoY3VyciA9PSBmaXJzdExp
bmVCb3goKSB8fCBjdXJyLT54KCkgPCBsZWZ0U2lkZSkKICAgICAgICAgICAgICAgICBsZWZ0U2lk
ZSA9IGN1cnItPngoKTsKICAgICAgICAgICAgIGlmIChjdXJyID09IGZpcnN0TGluZUJveCgpIHx8
IGN1cnItPngoKSArIGN1cnItPndpZHRoKCkgPiByaWdodFNpZGUpCkBAIC01NTcsNyArNTU3LDcg
QEAgSW50UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzVmlzaWJsZU92ZXJmbAogICAgIC8vIFJldHVy
biB0aGUgd2lkdGggb2YgdGhlIG1pbmltYWwgbGVmdCBzaWRlIGFuZCB0aGUgbWF4aW1hbCByaWdo
dCBzaWRlLgogICAgIGludCBsZWZ0U2lkZSA9IG51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwog
ICAgIGludCByaWdodFNpZGUgPSBudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKTsKLSAgICBmb3Ig
KElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRGbG93Qm94KCkpIHsKKyAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExp
bmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKICAgICAgICAgbGVm
dFNpZGUgPSBtaW4obGVmdFNpZGUsIGN1cnItPmxlZnRWaXNpYmxlT3ZlcmZsb3coKSk7CiAgICAg
ICAgIHJpZ2h0U2lkZSA9IG1heChyaWdodFNpZGUsIGN1cnItPnJpZ2h0VmlzaWJsZU92ZXJmbG93
KCkpOwogICAgIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6aW1hZ2VD
aGFuZ2VkKFdyYXBwZWRJCiAKIHZvaWQgUmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSkKIHsKLSAgICBmb3IgKElubGlu
ZVJ1bkJveCogY3VyciA9IGZpcnN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExp
bmVCb3goKSkgeworICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGZpcnN0TGluZUJveCgp
OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewogICAgICAgICBSb290SW5saW5l
Qm94KiByb290ID0gY3Vyci0+cm9vdCgpOwogICAgICAgICBpbnQgdG9wID0gbWF4KHJvb3QtPmxp
bmVUb3AoKSwgY3Vyci0+eSgpKTsKICAgICAgICAgaW50IGJvdHRvbSA9IG1pbihyb290LT5saW5l
Qm90dG9tKCksIGN1cnItPnkoKSArIGN1cnItPmhlaWdodCgpKTsKQEAgLTk4NSw3ICs5ODUsNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKEdyYXBoaWNzCiAgICAgVmVjdG9yPElu
dFJlY3Q+IHJlY3RzOwogCiAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QoKSk7Ci0gICAgZm9yIChJ
bmxpbmVSdW5Cb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5l
eHRMaW5lQm94KCkpIHsKKyAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVC
b3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKICAgICAgICAgUm9vdElu
bGluZUJveCogcm9vdCA9IGN1cnItPnJvb3QoKTsKICAgICAgICAgaW50IHRvcCA9IG1heChyb290
LT5saW5lVG9wKCksIGN1cnItPnkoKSk7CiAgICAgICAgIGludCBib3R0b20gPSBtaW4ocm9vdC0+
bGluZUJvdHRvbSgpLCBjdXJyLT55KCkgKyBjdXJyLT5oZWlnaHQoKSk7CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA1NTkxMykKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4MSw3ICsyOTgxLDcgQEAgSW50
UmVjdCBSZW5kZXJMYXllcjo6bG9jYWxCb3VuZGluZ0JveCgpIAogICAgICAgICBpbnQgdG9wID0g
Zmlyc3RCb3gtPnRvcFZpc2libGVPdmVyZmxvdygpOwogICAgICAgICBpbnQgYm90dG9tID0gaW5s
aW5lRmxvdy0+bGFzdExpbmVCb3goKS0+Ym90dG9tVmlzaWJsZU92ZXJmbG93KCk7CiAgICAgICAg
IGludCBsZWZ0ID0gZmlyc3RCb3gtPngoKTsKLSAgICAgICAgZm9yIChJbmxpbmVSdW5Cb3gqIGN1
cnIgPSBmaXJzdEJveC0+bmV4dExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5l
Qm94KCkpCisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGZpcnN0Qm94LT5uZXh0
TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAg
IGxlZnQgPSBtaW4obGVmdCwgY3Vyci0+eCgpKTsKICAgICAgICAgcmVzdWx0ID0gSW50UmVjdChs
ZWZ0LCB0b3AsIHdpZHRoKCksIGJvdHRvbSAtIHRvcCk7CiAgICAgfSBlbHNlIGlmIChyZW5kZXJl
cigpLT5pc1RhYmxlUm93KCkpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
b3hMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94
TGlzdC5jcHAJKHJldmlzaW9uIDU1OTEzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVuZGVy
TGluZUJveExpc3Q6OmRlbGV0ZUxpbmVCb3hUcmUKICAgICBJbmxpbmVGbG93Qm94KiBsaW5lID0g
bV9maXJzdExpbmVCb3g7CiAgICAgSW5saW5lRmxvd0JveCogbmV4dExpbmU7CiAgICAgd2hpbGUg
KGxpbmUpIHsKLSAgICAgICAgbmV4dExpbmUgPSBsaW5lLT5uZXh0Rmxvd0JveCgpOworICAgICAg
ICBuZXh0TGluZSA9IGxpbmUtPm5leHRMaW5lQm94KCk7CiAgICAgICAgIGxpbmUtPmRlbGV0ZUxp
bmUoYXJlbmEpOwogICAgICAgICBsaW5lID0gbmV4dExpbmU7CiAgICAgfQpAQCAtNzgsMTMgKzc4
LDEzIEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OmV4dHJhY3RMaW5lQm94KEkKIHsKICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAgICAgCi0gICAgbV9sYXN0TGluZUJveCA9IGJveC0+cHJldkZs
b3dCb3goKTsKKyAgICBtX2xhc3RMaW5lQm94ID0gYm94LT5wcmV2TGluZUJveCgpOwogICAgIGlm
IChib3ggPT0gbV9maXJzdExpbmVCb3gpCiAgICAgICAgIG1fZmlyc3RMaW5lQm94ID0gMDsKICAg
ICBpZiAoYm94LT5wcmV2TGluZUJveCgpKQogICAgICAgICBib3gtPnByZXZMaW5lQm94KCktPnNl
dE5leHRMaW5lQm94KDApOwogICAgIGJveC0+c2V0UHJldmlvdXNMaW5lQm94KDApOwotICAgIGZv
ciAoSW5saW5lUnVuQm94KiBjdXJyID0gYm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVC
b3goKSkKKyAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBib3g7IGN1cnI7IGN1cnIgPSBj
dXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICBjdXJyLT5zZXRFeHRyYWN0ZWQoKTsKIAogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbmRlckxpbmVC
b3hMaXN0OjphdHRhY2hMaW5lQm94KEluCiAgICAgfSBlbHNlCiAgICAgICAgIG1fZmlyc3RMaW5l
Qm94ID0gYm94OwogICAgIElubGluZUZsb3dCb3gqIGxhc3QgPSBib3g7Ci0gICAgZm9yIChJbmxp
bmVGbG93Qm94KiBjdXJyID0gYm94OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dEZsb3dCb3goKSkg
eworICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGJveDsgY3VycjsgY3VyciA9IGN1cnIt
Pm5leHRMaW5lQm94KCkpIHsKICAgICAgICAgY3Vyci0+c2V0RXh0cmFjdGVkKGZhbHNlKTsKICAg
ICAgICAgbGFzdCA9IGN1cnI7CiAgICAgfQpAQCAtMTE0LDkgKzExNCw5IEBAIHZvaWQgUmVuZGVy
TGluZUJveExpc3Q6OnJlbW92ZUxpbmVCb3goSW4KICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAK
ICAgICBpZiAoYm94ID09IG1fZmlyc3RMaW5lQm94KQotICAgICAgICBtX2ZpcnN0TGluZUJveCA9
IGJveC0+bmV4dEZsb3dCb3goKTsKKyAgICAgICAgbV9maXJzdExpbmVCb3ggPSBib3gtPm5leHRM
aW5lQm94KCk7CiAgICAgaWYgKGJveCA9PSBtX2xhc3RMaW5lQm94KQotICAgICAgICBtX2xhc3RM
aW5lQm94ID0gYm94LT5wcmV2Rmxvd0JveCgpOworICAgICAgICBtX2xhc3RMaW5lQm94ID0gYm94
LT5wcmV2TGluZUJveCgpOwogICAgIGlmIChib3gtPm5leHRMaW5lQm94KCkpCiAgICAgICAgIGJv
eC0+bmV4dExpbmVCb3goKS0+c2V0UHJldmlvdXNMaW5lQm94KGJveC0+cHJldkxpbmVCb3goKSk7
CiAgICAgaWYgKGJveC0+cHJldkxpbmVCb3goKSkKQEAgLTEyOCw4ICsxMjgsOCBAQCB2b2lkIFJl
bmRlckxpbmVCb3hMaXN0OjpyZW1vdmVMaW5lQm94KEluCiB2b2lkIFJlbmRlckxpbmVCb3hMaXN0
OjpkZWxldGVMaW5lQm94ZXMoUmVuZGVyQXJlbmEqIGFyZW5hKQogewogICAgIGlmIChtX2ZpcnN0
TGluZUJveCkgewotICAgICAgICBJbmxpbmVSdW5Cb3gqIG5leHQ7Ci0gICAgICAgIGZvciAoSW5s
aW5lUnVuQm94KiBjdXJyID0gbV9maXJzdExpbmVCb3g7IGN1cnI7IGN1cnIgPSBuZXh0KSB7Cisg
ICAgICAgIElubGluZUZsb3dCb3gqIG5leHQ7CisgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCog
Y3VyciA9IG1fZmlyc3RMaW5lQm94OyBjdXJyOyBjdXJyID0gbmV4dCkgewogICAgICAgICAgICAg
bmV4dCA9IGN1cnItPm5leHRMaW5lQm94KCk7CiAgICAgICAgICAgICBjdXJyLT5kZXN0cm95KGFy
ZW5hKTsKICAgICAgICAgfQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExp
c3Q6OmRlbGV0ZUxpbmVCb3hlcygKIAogdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6ZGlydHlMaW5l
Qm94ZXMoKQogewotICAgIGZvciAoSW5saW5lUnVuQm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7
IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQorICAgIGZvciAoSW5saW5lRmxvd0Jv
eCogY3VyciA9IGZpcnN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3go
KSkKICAgICAgICAgY3Vyci0+ZGlydHlMaW5lQm94ZXMoKTsKIH0KIApAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OnBhaW50KFJlbmRlckJveE0KICAgICAvLyBiYXNl
ZCBvZmYgcG9zaXRpb25zIG9mIG91ciBmaXJzdCBsaW5lIGJveCBvciBvdXIgbGFzdCBsaW5lIGJv
eC4KICAgICBSZW5kZXJWaWV3KiB2ID0gcmVuZGVyZXItPnZpZXcoKTsKICAgICBib29sIHVzZVBy
aW50UmVjdCA9ICF2LT5wcmludFJlY3QoKS5pc0VtcHR5KCk7Ci0gICAgZm9yIChJbmxpbmVGbG93
Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Rmxvd0Jv
eCgpKSB7CisgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gZmlyc3RMaW5lQm94KCk7IGN1
cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKSB7CiAgICAgICAgIGlmICh1c2VQcmludFJl
Y3QpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgZmVlYmxlIGVmZm9ydCB0byBh
dm9pZCBzcGxpdHRpbmcgYSBsaW5lIGFjcm9zcyB0d28gcGFnZXMuCiAgICAgICAgICAgICAvLyBJ
dCBpcyB1dHRlcmx5IGluYWRlcXVhdGUsIGFuZCB0aGlzIHNob3VsZCBub3QgYmUgZG9uZSBhdCBw
YWludCB0aW1lIGF0IGFsbC4KQEAgLTIzNiw3ICsyMzYsNyBAQCBib29sIFJlbmRlckxpbmVCb3hM
aXN0OjpoaXRUZXN0KFJlbmRlckJvCiAgICAgLy8gU2VlIGlmIG91ciByb290IGxpbmVzIGNvbnRh
aW4gdGhlIHBvaW50LiAgSWYgc28sIHRoZW4gd2UgaGl0IHRlc3QKICAgICAvLyB0aGVtIGZ1cnRo
ZXIuICBOb3RlIHRoYXQgYm94ZXMgY2FuIGVhc2lseSBvdmVybGFwLCBzbyB3ZSBjYW4ndCBtYWtl
IGFueSBhc3N1bXB0aW9ucwogICAgIC8vIGJhc2VkIG9mZiBwb3NpdGlvbnMgb2Ygb3VyIGZpcnN0
IGxpbmUgYm94IG9yIG91ciBsYXN0IGxpbmUgYm94LgotICAgIGZvciAoSW5saW5lRmxvd0JveCog
Y3VyciA9IGxhc3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2Rmxvd0JveCgpKSB7
CisgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gbGFzdExpbmVCb3goKTsgY3VycjsgY3Vy
ciA9IGN1cnItPnByZXZMaW5lQm94KCkpIHsKICAgICAgICAgaWYgKHkgPj0gdHkgKyBjdXJyLT5y
b290KCktPnRvcFZpc2libGVPdmVyZmxvdygpICYmIHkgPCB0eSArIGN1cnItPnJvb3QoKS0+Ym90
dG9tVmlzaWJsZU92ZXJmbG93KCkpIHsKICAgICAgICAgICAgIGJvb2wgaW5zaWRlID0gY3Vyci0+
bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCB4LCB5LCB0eCwgdHkpOwogICAgICAgICAgICAg
aWYgKGluc2lkZSkgewpAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6
OmRpcnR5TGluZXNGcm9tQ2gKICAgICAgICAgICAgIGlmICh0ZXh0Qm94KQogICAgICAgICAgICAg
ICAgIGJveCA9IHRleHRCb3gtPnJvb3QoKTsKICAgICAgICAgfSBlbHNlIGlmIChjdXJyLT5pc1Jl
bmRlcklubGluZSgpKSB7Ci0gICAgICAgICAgICBJbmxpbmVSdW5Cb3gqIHJ1bkJveCA9IHRvUmVu
ZGVySW5saW5lKGN1cnIpLT5sYXN0TGluZUJveCgpOwotICAgICAgICAgICAgaWYgKHJ1bkJveCkK
LSAgICAgICAgICAgICAgICBib3ggPSBydW5Cb3gtPnJvb3QoKTsKKyAgICAgICAgICAgIElubGlu
ZUZsb3dCb3gqIGZsb3dCb3ggPSB0b1JlbmRlcklubGluZShjdXJyKS0+bGFzdExpbmVCb3goKTsK
KyAgICAgICAgICAgIGlmIChmbG93Qm94KQorICAgICAgICAgICAgICAgIGJveCA9IGZsb3dCb3gt
PnJvb3QoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChib3gpCkBAIC0zMjEsOCArMzIxLDgg
QEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6Y2hlY2tDb25zaXN0ZW5jeQogewogI2lmZGVmIENI
RUNLX0NPTlNJU1RFTkNZCiAgICAgY29uc3QgSW5saW5lRmxvd0JveCogcHJldiA9IDA7Ci0gICAg
Zm9yIChjb25zdCBJbmxpbmVGbG93Qm94KiBjaGlsZCA9IG1fZmlyc3RMaW5lQm94OyBjaGlsZCAh
PSAwOyBjaGlsZCA9IGNoaWxkLT5uZXh0Rmxvd0JveCgpKSB7Ci0gICAgICAgIEFTU0VSVChjaGls
ZC0+cHJldkZsb3dCb3goKSA9PSBwcmV2KTsKKyAgICBmb3IgKGNvbnN0IElubGluZUZsb3dCb3gq
IGNoaWxkID0gbV9maXJzdExpbmVCb3g7IGNoaWxkICE9IDA7IGNoaWxkID0gY2hpbGQtPm5leHRM
aW5lQm94KCkpIHsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5wcmV2TGluZUJveCgpID09IHByZXYp
OwogICAgICAgICBwcmV2ID0gY2hpbGQ7CiAgICAgfQogICAgIEFTU0VSVChwcmV2ID09IG1fbGFz
dExpbmVCb3gpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW5saW5lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmUuY3BwCShyZXZp
c2lvbiA1NTkxMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDkgKzQ4LDkgQEAgSW5saW5lRmxvd0JveCogUmVuZGVyU1ZHSW5s
aW5lOjpjcmVhdGVJbgogCiB2b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVSZWN0cyhWZWN0
b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQsIGludCkKIHsKLSAgICBJbmxpbmVSdW5Cb3gqIGZpcnN0
Qm94ID0gZmlyc3RMaW5lQm94KCk7CisgICAgSW5saW5lRmxvd0JveCogZmlyc3RCb3ggPSBmaXJz
dExpbmVCb3goKTsKIAotICAgIFNWR1Jvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBmaXJzdEJveCA/
IHN0YXRpY19jYXN0PFNWR0lubGluZVRleHRCb3gqPihmaXJzdEJveCktPnN2Z1Jvb3RJbmxpbmVC
b3goKSA6IDA7CisgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IGZpcnN0Qm94ID8gZmlyc3RC
b3gtPnJvb3QoKSA6IDA7CiAgICAgUmVuZGVyQm94KiBvYmplY3QgPSByb290Qm94ID8gcm9vdEJv
eC0+YmxvY2soKSA6IDA7CiAKICAgICBpZiAoIW9iamVjdCkKQEAgLTU5LDcgKzU5LDcgQEAgdm9p
ZCBSZW5kZXJTVkdJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdAogICAgIGludCB4UmVmID0gb2Jq
ZWN0LT54KCk7CiAgICAgaW50IHlSZWYgPSBvYmplY3QtPnkoKTsKIAotICAgIGZvciAoSW5saW5l
UnVuQm94KiBjdXJyID0gZmlyc3RCb3g7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgp
KSB7CisgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gZmlyc3RCb3g7IGN1cnI7IGN1cnIg
PSBjdXJyLT5uZXh0TGluZUJveCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0KHhSZWYgKyBj
dXJyLT54KCksIHlSZWYgKyBjdXJyLT55KCksIGN1cnItPndpZHRoKCksIGN1cnItPmhlaWdodCgp
KTsKICAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QobG9jYWxUb0Fic29sdXRl
UXVhZChyZWN0KS5ib3VuZGluZ0JveCgpKSk7CiAgICAgfQpAQCAtOTUsOSArOTUsOSBAQCBGbG9h
dFJlY3QgUmVuZGVyU1ZHSW5saW5lOjpyZXBhaW50UmVjdEluCiAKIHZvaWQgUmVuZGVyU1ZHSW5s
aW5lOjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHsKLSAgICBJbmxp
bmVSdW5Cb3gqIGZpcnN0Qm94ID0gZmlyc3RMaW5lQm94KCk7CisgICAgSW5saW5lRmxvd0JveCog
Zmlyc3RCb3ggPSBmaXJzdExpbmVCb3goKTsKIAotICAgIFNWR1Jvb3RJbmxpbmVCb3gqIHJvb3RC
b3ggPSBmaXJzdEJveCA/IHN0YXRpY19jYXN0PFNWR0lubGluZVRleHRCb3gqPihmaXJzdEJveCkt
PnN2Z1Jvb3RJbmxpbmVCb3goKSA6IDA7CisgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IGZp
cnN0Qm94ID8gZmlyc3RCb3gtPnJvb3QoKSA6IDA7CiAgICAgUmVuZGVyQm94KiBvYmplY3QgPSBy
b290Qm94ID8gcm9vdEJveC0+YmxvY2soKSA6IDA7CiAKICAgICBpZiAoIW9iamVjdCkKQEAgLTEw
Niw3ICsxMDYsNyBAQCB2b2lkIFJlbmRlclNWR0lubGluZTo6YWJzb2x1dGVRdWFkcyhWZWN0CiAg
ICAgaW50IHhSZWYgPSBvYmplY3QtPngoKTsKICAgICBpbnQgeVJlZiA9IG9iamVjdC0+eSgpOwog
Ci0gICAgZm9yIChJbmxpbmVSdW5Cb3gqIGN1cnIgPSBmaXJzdEJveDsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRMaW5lQm94KCkpIHsKKyAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJz
dEJveDsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpIHsKICAgICAgICAgRmxvYXRS
ZWN0IHJlY3QoeFJlZiArIGN1cnItPngoKSwgeVJlZiArIGN1cnItPnkoKSwgY3Vyci0+d2lkdGgo
KSwgY3Vyci0+aGVpZ2h0KCkpOwogICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRl
UXVhZChyZWN0KSk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHJldmlzaW9uIDU1OTEzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOCwxMSArMTI4LDggQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojph
YnNvbHV0ZVJlY3RzKFZlY3RvcgogIAogICAgIC8vIERvbid0IHVzZSBvYmplY3RCb3VuZGluZ0Jv
eCBoZXJlLCBhcyBpdCdzIHVuaXRlcyB0aGUgc2VsZWN0aW9uIHJlY3RzLiBNYWtlcyBpdCBoYXJk
CiAgICAgLy8gdG8gc3BvdCBlcnJvcnMsIGlmIHRoZXJlIGFyZSBhbnkgdXNpbmcgV2ViSW5zcGVj
dG9yLiBJbmRpdmlkdWFsbHkgZmVlZCB0aGVtIGludG8gJ3JlY3RzJy4KLSAgICBmb3IgKElubGlu
ZVJ1bkJveCogcnVuQm94ID0gZmlyc3RMaW5lQm94KCk7IHJ1bkJveDsgcnVuQm94ID0gcnVuQm94
LT5uZXh0TGluZUJveCgpKSB7Ci0gICAgICAgIEFTU0VSVChydW5Cb3gtPmlzSW5saW5lRmxvd0Jv
eCgpKTsKLQotICAgICAgICBJbmxpbmVGbG93Qm94KiBmbG93Qm94ID0gc3RhdGljX2Nhc3Q8SW5s
aW5lRmxvd0JveCo+KHJ1bkJveCk7Ci0gICAgICAgIGZvciAoSW5saW5lQm94KiBib3ggPSBmbG93
Qm94LT5maXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpIHsKKyAgICBm
b3IgKElubGluZUZsb3dCb3gqIGZsb3cgPSBmaXJzdExpbmVCb3goKTsgZmxvdzsgZmxvdyA9IGZs
b3ctPm5leHRMaW5lQm94KCkpIHsKKyAgICAgICAgZm9yIChJbmxpbmVCb3gqIGJveCA9IGZsb3ct
PmZpcnN0Q2hpbGQoKTsgYm94OyBib3ggPSBib3gtPm5leHRPbkxpbmUoKSkgewogICAgICAgICAg
ICAgRmxvYXRSZWN0IGJveFJlY3QoYm94LT54KCksIGJveC0+eSgpLCBib3gtPndpZHRoKCksIGJv
eC0+aGVpZ2h0KCkpOwogICAgICAgICAgICAgLy8gRklYTUU6IGNyYXdsaW5nIHVwIHRoZSBwYXJl
bnQgY2hhaW4gdG8gbWFwIGVhY2ggcmVjdCBpcyB2ZXJ5IGluZWZmaWNpZW50CiAgICAgICAgICAg
ICAvLyB3ZSBzaG91bGQgY29tcHV0ZSB0aGUgYWJzb2x1dGVUcmFuc2Zvcm0gb3V0c2lkZSB0aGlz
IGxvb3AgZmlyc3QuCkBAIC0xNDksMTEgKzE0Niw4IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3IKICAKICAgICAvLyBEb24ndCB1c2Ugb2JqZWN0Qm91bmRpbmdCb3gg
aGVyZSwgYXMgaXQncyB1bml0ZXMgdGhlIHNlbGVjdGlvbiByZWN0cy4gTWFrZXMgaXQgaGFyZAog
ICAgIC8vIHRvIHNwb3QgZXJyb3JzLCBpZiB0aGVyZSBhcmUgYW55IHVzaW5nIFdlYkluc3BlY3Rv
ci4gSW5kaXZpZHVhbGx5IGZlZWQgdGhlbSBpbnRvICdyZWN0cycuCi0gICAgZm9yIChJbmxpbmVS
dW5Cb3gqIHJ1bkJveCA9IGZpcnN0TGluZUJveCgpOyBydW5Cb3g7IHJ1bkJveCA9IHJ1bkJveC0+
bmV4dExpbmVCb3goKSkgewotICAgICAgICBBU1NFUlQocnVuQm94LT5pc0lubGluZUZsb3dCb3go
KSk7Ci0KLSAgICAgICAgSW5saW5lRmxvd0JveCogZmxvd0JveCA9IHN0YXRpY19jYXN0PElubGlu
ZUZsb3dCb3gqPihydW5Cb3gpOwotICAgICAgICBmb3IgKElubGluZUJveCogYm94ID0gZmxvd0Jv
eC0+Zmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKSB7CisgICAgZm9y
IChJbmxpbmVGbG93Qm94KiBmbG93ID0gZmlyc3RMaW5lQm94KCk7IGZsb3c7IGZsb3cgPSBmbG93
LT5uZXh0TGluZUJveCgpKSB7CisgICAgICAgIGZvciAoSW5saW5lQm94KiBib3ggPSBmbG93LT5m
aXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAgICAg
IEZsb2F0UmVjdCBib3hSZWN0KGJveC0+eCgpLCBib3gtPnkoKSwgYm94LT53aWR0aCgpLCBib3gt
PmhlaWdodCgpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBjcmF3bGluZyB1cCB0aGUgcGFyZW50
IGNoYWluIHRvIG1hcCBlYWNoIHF1YWQgaXMgdmVyeSBpbmVmZmljaWVudAogICAgICAgICAgICAg
Ly8gd2Ugc2hvdWxkIGNvbXB1dGUgdGhlIGFic29sdXRlVHJhbnNmb3JtIG91dHNpZGUgdGhpcyBs
b29wIGZpcnN0LgpAQCAtMTc1LDExICsxNjksOCBAQCBGbG9hdFJlY3QgUmVuZGVyU1ZHVGV4dDo6
b2JqZWN0Qm91bmRpbmdCCiB7CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94OwogCi0gICAgZm9y
IChJbmxpbmVSdW5Cb3gqIHJ1bkJveCA9IGZpcnN0TGluZUJveCgpOyBydW5Cb3g7IHJ1bkJveCA9
IHJ1bkJveC0+bmV4dExpbmVCb3goKSkgewotICAgICAgICBBU1NFUlQocnVuQm94LT5pc0lubGlu
ZUZsb3dCb3goKSk7Ci0KLSAgICAgICAgSW5saW5lRmxvd0JveCogZmxvd0JveCA9IHN0YXRpY19j
YXN0PElubGluZUZsb3dCb3gqPihydW5Cb3gpOwotICAgICAgICBmb3IgKElubGluZUJveCogYm94
ID0gZmxvd0JveC0+Zmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKQor
ICAgIGZvciAoSW5saW5lRmxvd0JveCogZmxvdyA9IGZpcnN0TGluZUJveCgpOyBmbG93OyBmbG93
ID0gZmxvdy0+bmV4dExpbmVCb3goKSkgeworICAgICAgICBmb3IgKElubGluZUJveCogYm94ID0g
Zmxvdy0+Zmlyc3RDaGlsZCgpOyBib3g7IGJveCA9IGJveC0+bmV4dE9uTGluZSgpKQogICAgICAg
ICAgICAgYm91bmRpbmdCb3gudW5pdGUoRmxvYXRSZWN0KGJveC0+eCgpLCBib3gtPnkoKSwgYm94
LT53aWR0aCgpLCBib3gtPmhlaWdodCgpKSk7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAkocmV2aXNpb24gNTU5MTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDkgKzE1MCw5IEBAIHZvaWQgUmVuZGVyVGV4
dDo6ZXh0cmFjdFRleHRCb3goSW5saW5lVGUKICAgICBpZiAoYm94ID09IG1fZmlyc3RUZXh0Qm94
KQogICAgICAgICBtX2ZpcnN0VGV4dEJveCA9IDA7CiAgICAgaWYgKGJveC0+cHJldlRleHRCb3go
KSkKLSAgICAgICAgYm94LT5wcmV2VGV4dEJveCgpLT5zZXROZXh0TGluZUJveCgwKTsKLSAgICBi
b3gtPnNldFByZXZpb3VzTGluZUJveCgwKTsKLSAgICBmb3IgKElubGluZVJ1bkJveCogY3VyciA9
IGJveDsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCisgICAgICAgIGJveC0+cHJl
dlRleHRCb3goKS0+c2V0TmV4dFRleHRCb3goMCk7CisgICAgYm94LT5zZXRQcmV2aW91c1RleHRC
b3goMCk7CisgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBjdXJyID0gYm94OyBjdXJyOyBjdXJyID0g
Y3Vyci0+bmV4dFRleHRCb3goKSkKICAgICAgICAgY3Vyci0+c2V0RXh0cmFjdGVkKCk7CiAKICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CkBAIC0xNjMsOCArMTYzLDggQEAgdm9pZCBSZW5kZXJUZXh0
OjphdHRhY2hUZXh0Qm94KElubGluZVRleAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAogICAg
IGlmIChtX2xhc3RUZXh0Qm94KSB7Ci0gICAgICAgIG1fbGFzdFRleHRCb3gtPnNldE5leHRMaW5l
Qm94KGJveCk7Ci0gICAgICAgIGJveC0+c2V0UHJldmlvdXNMaW5lQm94KG1fbGFzdFRleHRCb3gp
OworICAgICAgICBtX2xhc3RUZXh0Qm94LT5zZXROZXh0VGV4dEJveChib3gpOworICAgICAgICBi
b3gtPnNldFByZXZpb3VzVGV4dEJveChtX2xhc3RUZXh0Qm94KTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9maXJzdFRleHRCb3ggPSBib3g7CiAgICAgSW5saW5lVGV4dEJveCogbGFzdCA9IGJveDsK
QEAgLTE4Niw5ICsxODYsOSBAQCB2b2lkIFJlbmRlclRleHQ6OnJlbW92ZVRleHRCb3goSW5saW5l
VGV4CiAgICAgaWYgKGJveCA9PSBtX2xhc3RUZXh0Qm94KQogICAgICAgICBtX2xhc3RUZXh0Qm94
ID0gYm94LT5wcmV2VGV4dEJveCgpOwogICAgIGlmIChib3gtPm5leHRUZXh0Qm94KCkpCi0gICAg
ICAgIGJveC0+bmV4dFRleHRCb3goKS0+c2V0UHJldmlvdXNMaW5lQm94KGJveC0+cHJldlRleHRC
b3goKSk7CisgICAgICAgIGJveC0+bmV4dFRleHRCb3goKS0+c2V0UHJldmlvdXNUZXh0Qm94KGJv
eC0+cHJldlRleHRCb3goKSk7CiAgICAgaWYgKGJveC0+cHJldlRleHRCb3goKSkKLSAgICAgICAg
Ym94LT5wcmV2VGV4dEJveCgpLT5zZXROZXh0TGluZUJveChib3gtPm5leHRUZXh0Qm94KCkpOwor
ICAgICAgICBib3gtPnByZXZUZXh0Qm94KCktPnNldE5leHRUZXh0Qm94KGJveC0+bmV4dFRleHRC
b3goKSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9CkBAIC0xMDU1LDggKzEwNTUsOCBA
QCBJbmxpbmVUZXh0Qm94KiBSZW5kZXJUZXh0OjpjcmVhdGVJbmxpbmVUCiAgICAgaWYgKCFtX2Zp
cnN0VGV4dEJveCkKICAgICAgICAgbV9maXJzdFRleHRCb3ggPSBtX2xhc3RUZXh0Qm94ID0gdGV4
dEJveDsKICAgICBlbHNlIHsKLSAgICAgICAgbV9sYXN0VGV4dEJveC0+c2V0TmV4dExpbmVCb3go
dGV4dEJveCk7Ci0gICAgICAgIHRleHRCb3gtPnNldFByZXZpb3VzTGluZUJveChtX2xhc3RUZXh0
Qm94KTsKKyAgICAgICAgbV9sYXN0VGV4dEJveC0+c2V0TmV4dFRleHRCb3godGV4dEJveCk7Cisg
ICAgICAgIHRleHRCb3gtPnNldFByZXZpb3VzVGV4dEJveChtX2xhc3RUZXh0Qm94KTsKICAgICAg
ICAgbV9sYXN0VGV4dEJveCA9IHRleHRCb3g7CiAgICAgfQogICAgIHRleHRCb3gtPnNldElzVGV4
dCh0cnVlKTsKQEAgLTEwNzQsMTEgKzEwNzQsMTEgQEAgdm9pZCBSZW5kZXJUZXh0Ojpwb3NpdGlv
bkxpbmVCb3goSW5saW5lQgogICAgICAgICBpZiAobV9maXJzdFRleHRCb3ggPT0gcykKICAgICAg
ICAgICAgIG1fZmlyc3RUZXh0Qm94ID0gcy0+bmV4dFRleHRCb3goKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcy0+cHJldlRleHRCb3goKS0+c2V0TmV4dExpbmVCb3gocy0+bmV4dFRleHRC
b3goKSk7CisgICAgICAgICAgICBzLT5wcmV2VGV4dEJveCgpLT5zZXROZXh0VGV4dEJveChzLT5u
ZXh0VGV4dEJveCgpKTsKICAgICAgICAgaWYgKG1fbGFzdFRleHRCb3ggPT0gcykKICAgICAgICAg
ICAgIG1fbGFzdFRleHRCb3ggPSBzLT5wcmV2VGV4dEJveCgpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzLT5uZXh0VGV4dEJveCgpLT5zZXRQcmV2aW91c0xpbmVCb3gocy0+cHJldlRleHRC
b3goKSk7CisgICAgICAgICAgICBzLT5uZXh0VGV4dEJveCgpLT5zZXRQcmV2aW91c1RleHRCb3go
cy0+cHJldlRleHRCb3goKSk7CiAgICAgICAgIHMtPmRlc3Ryb3kocmVuZGVyQXJlbmEoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCShy
ZXZpc2lvbiA1NTkxMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAkod29y
a2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRldGFjaEVs
bGlwc2lzQm94KFJlbmRlckFyZW5hKik7CiAKLSAgICBSb290SW5saW5lQm94KiBuZXh0Um9vdEJv
eCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJvb3RJbmxpbmVCb3gqPihtX25leHRMaW5l
KTsgfQotICAgIFJvb3RJbmxpbmVCb3gqIHByZXZSb290Qm94KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Um9vdElubGluZUJveCo+KG1fcHJldkxpbmUpOyB9CisgICAgUm9vdElubGluZUJv
eCogbmV4dFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSb290SW5saW5lQm94
Kj4obV9uZXh0TGluZUJveCk7IH0KKyAgICBSb290SW5saW5lQm94KiBwcmV2Um9vdEJveCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJvb3RJbmxpbmVCb3gqPihtX3ByZXZMaW5lQm94KTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFBvc2l0aW9uKGludCBkeCwgaW50IGR5KTsKIAo=
</data>
<flag name="review"
          id="33794"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="33795"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>