From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.1 To: ALT Linux Team development discussions From: Danil Shein Message-ID: <32d3ca33-a1ed-ba90-2583-1bae3dcdb5f0@altlinux.org> Date: Mon, 29 Mar 2021 15:57:12 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------479B72C7EF96F62F106C4C4C" Content-Language: ru Subject: [devel] =?utf-8?b?YWx0cmVwb2RiIC0g0LDRgNGF0LjRgtC10LrRgtGD0YA=?= =?utf-8?b?0LAg0JHQlA==?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Mar 2021 12:57:18 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------479B72C7EF96F62F106C4C4C Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Добрый день, коллеги! В настоящее время идёт активная переработка altrepodb - решения реализующее загрузку в единую БД на ClickHouse информации о структуре и содержании всех репозиториев и тасков для последующего анализа, хранения истории и т.п. Сейчас репозитории и таски грузятся в БД, анализ и получение данных работает через сервер altrepo_server (JSON API). На текущий момент переделана базовая схема БД для загрузки репозиториев. Структура репозитория сохраняется в БД в виде дерева, пакеты привязываются к соответствующим веткам. Новая структура таблиц для хранения информации о тасках в процессе разработки. SQL файл во вложении. Обсуждение, замечания и предложения приветствуются. Спасибо! -- Данил Шеин / Danil Shein E-mail: dshein@basealt.ru --------------479B72C7EF96F62F106C4C4C Content-Type: application/sql; name="0001_repodb_base.sql" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001_repodb_base.sql" LypTdG9yZXMgcGFja2FnZXMgaGFzaGVzOgpwa2doX21taCAgICAgICAgTXVyTXVySGFzaCBm cm9tICdwa2doX3NoYTEnCnBrZ2hfbWQ1ICAgICAgICBNRDUgZm9ybSBwYWNrZ2FlIGZpbGUK cGtnaF9zaGExICAgICAgIFNIQTEgZnJvbSBwYWNrYWdlIGhlYWRlcgpwa2doX3NoYTI1NiAg ICAgU0hBMjU2IGZyb20gcGFja2FnZSBmaWxlCgoncGtnaF9tbWgnIGlzIGVxdWFsIHRvIFBh Y2thZ2VzICdwa2dfaGFzaCcgZmllbGQKKi8KCkNSRUFURSBUQUJMRSBQYWNrYWdlSGFzaAoo CiAgICBwa2doX21taCAgICAgICAgVUludDY0LAogICAgcGtnaF9tZDUgICAgICAgIEZpeGVk U3RyaW5nKDE2KSwKICAgIHBrZ2hfc2hhMSAgICAgICBGaXhlZFN0cmluZygyMCksCiAgICBw a2doX3NoYTI1NiAgICAgRml4ZWRTdHJpbmcoMzIpCikgRU5HSU5FIFJlcGxhY2luZ01lcmdl VHJlZSBPUkRFUiBCWSAocGtnaF9tbWgsIHBrZ2hfbWQ1LCBwa2doX3NoYTI1NikgUFJJTUFS WSBLRVkgcGtnaF9tbWgKCkNSRUFURSBUQUJMRSBQYWNrYWdlSGFzaF9idWZmZXIgQVMgUGFj a2FnZUhhc2ggRU5HSU5FID0gQnVmZmVyKGN1cnJlbnREYXRhYmFzZSgpLCBQYWNrYWdlSGFz aCwgMTYsIDEwLCAxMDAsIDEwMDAwLCAxMDAwMDAwLCAxMDAwMDAwLCAxMDAwMDAwMDApOwoK LypWaWV3IHRoYXQgcmVwcmVzZW50IGhhc2hlcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQq LwoKQ1JFQVRFCk9SIFJFUExBQ0UgVklFVyBQYWNrYWdlSGFzaF92aWV3IEFTClNFTEVDVCBw a2doX21taCwgbG93ZXIoaGV4KHBrZ2hfbWQ1KSkgYXMgcGtnaF9tZDUsIGxvd2VyKGhleChw a2doX3NoYTEpKSBhcyBwa2doX3NoYTEsIGxvd2VyKGhleChwa2doX3NoYTI1NikpIGFzIHBr Z2hfc2hhMjU2CkZST00gIFBhY2thZ2VIYXNoX2J1ZmZlcgoKCi8qU3RvcmVzIHJlcG9zaXRv cnkgc3RydWN0dXJlIGFzIHRyZWUgbGlua2VkIGJ5ICdwa2dzZXRfdXVpZCcgYW5kICdwa2dz ZXRfcHV1aWQnLgpSZXBvc2l0b3J5IHRyZWUgcm9vdCBoYXMgJ3BrZ3NldF9wdXVpZCcgPSAn MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJywKJ3BrZ3NldF9ydXVpZCcg aXMgaW5oZXJpdGVkIGZyb20gcm9vdCBhbmQgJ3BrZ3NldF9kZXB0aCcgaXMgc2V0IGFjY29y ZGluZyB0byBsZWFmIHBhdGggbGVuZ3RoLgoncGtnc2V0X2t2JyBjb250YWlucyBsaXN0IG9m IGtleTp2YWx1ZSBwYWlycyBmb3IgdmFyaW91cyBkYXRhLgoKUmVndWxhciByZXBvc2l0b3J5 IHN0cnVjdHVyZSBleGFtcGxlOgoKJ3Jvb3QnICduYW1lJyAgICAnZGF0ZScgICAgICAnZGVw dGgnICd1dWlkJyAgICAgICdwdXVpZCcgICAgICdydXVpZCcKW3JlcG9dOltzaXN5cGh1cywg MjAyMS0wMy0yNSwgMCwgICAgICdkZWFkYmVlZicsICcwMDAwMDAwMCcsICdkZWFkYmVlZidd CiAgfAogIHwgICAnYXJjaCcgJ25hbWUnICAgICdkYXRlJyAgICAgICdkZXB0aCcgJ3V1aWQn ICAgICAgJ3B1dWlkJyAgICAgJ3J1dWlkJwogIHwtPiBbc3JwbV06W3Npc3lwaHVzLCAyMDIx LTAzLTI1LCAxLCAgICAgJ2ZlZWQwMDAwJywgJ2RlYWRiZWVmJywgJ2RlYWRiZWVmJ10KICB8 CiAgfCAgICdhcmNoJyAgICduYW1lJyAgICAnZGF0ZScgICAgICAnZGVwdGgnICd1dWlkJyAg ICAgICdwdXVpZCcgICAgICdydXVpZCcKICB8LT4gW3g4Nl82NF06W3Npc3lwaHVzLCAyMDIx LTAzLTI1LCAxLCAgICAgJzAxMjM0NTY3JywgJ2RlYWRiZWVmJywgJ2RlYWRiZWVmJ10KICB8 ICAgICB8CiAgKiAgICAgfCAgICdjb21wJyAgICAnbmFtZScgICAgJ2RhdGUnICAgICAgJ2Rl cHRoJyAndXVpZCcgICAgICAncHV1aWQnICAgICAncnV1aWQnCiAgKiAgICAgfC0+IFtjbGFz c2ljXTpbc2lzeXBodXMsIDIwMjEtMDMtMjUsIDIsICAgICAnYWFiYmNjZGQnLCAnMDEyMzQ1 NjcnLCAnZGVhZGJlZWYnXQogICogICAgICAgICAgICAqCiAgKiAgICAgICAgICAgICoKICAq ICAgICAgICAgJ2NvbXAnICAgICAgICAgJ25hbWUnICAgICdkYXRlJyAgICAgICdkZXB0aCcg J3V1aWQnICAgICAgJ3B1dWlkJyAgICAgJ3J1dWlkJwogICogICAgIHwtPiBbY2hlY2tpbnN0 YWxsXTpbc2lzeXBodXMsIDIwMjEtMDMtMjUsIDIsICAgICAnZWVmZjExMjInLCAnMDEyMzQ1 NjcnLCAnZGVhZGJlZWYnXQogICoKICAqCiAgfCAgICdhcmNoJyAnbmFtZScgICAgJ2RhdGUn ICAgICAgJ2RlcHRoJyAndXVpZCcgICAgICAncHV1aWQnICAgICAncnV1aWQnCiAgfC0+IFth cm1oXTpbc2lzeXBodXMsIDIwMjEtMDMtMjUsIDEsICAgICAnNTU1NTY2NzcnLCAnZGVhZGJl ZWYnLCAnZGVhZGJlZWYnXQogICAgICAgICB8CiAgICAgICAgIHwgICAnY29tcCcgICAgJ25h bWUnICAgICdkYXRlJyAgICAgICdkZXB0aCcgJ3V1aWQnICAgICAgJ3B1dWlkJyAgICAgJ3J1 dWlkJwogICAgICAgICB8LT4gW2NsYXNzaWNdOltzaXN5cGh1cywgMjAyMS0wMy0yNSwgMiwg ICAgICc5ODc2NTQzMicsICc1NTU1NjY3NycsICdkZWFkYmVlZiddCiAgICAgICAgICoKICAg ICAgICAgKgogICAgICAgICB8ICAgICdjb21wJyAgICAgICAgICduYW1lJyAgICAnZGF0ZScg ICAgICAnZGVwdGgnICd1dWlkJyAgICAgICdwdXVpZCcgICAgICdydXVpZCcKICAgICAgICAg fC0+ICBbY2hlY2tpbnN0YWxsXTpbc2lzeXBodXMsIDIwMjEtMDMtMjUsIDIsICAgICAnY2Mw MGJiMDAnLCAnNTU1NTY2NzcnLCAnZGVhZGJlZWYnXQogKi8KCkNSRUFURSBUQUJMRSBQYWNr YWdlU2V0TmFtZQooCiAgICBwa2dzZXRfdXVpZCAgICAgVVVJRCwKICAgIHBrZ3NldF9wdXVp ZCAgICBVVUlELAogICAgcGtnc2V0X3J1dWlkICAgIFVVSUQsCiAgICBwa2dzZXRfZGVwdGgg ICAgVUludDgsCiAgICBwa2dzZXRfbmFtZSAgICAgU3RyaW5nLAogICAgcGtnc2V0X2RhdGUg ICAgIERhdGVUaW1lLAogICAgcGtnc2V0X3RhZyAgICAgIFN0cmluZywKICAgIHBrZ3NldF9j b21wbGV0ZSBVSW50OCwKICAgIHBrZ3NldF9rdiAgICAgICBOZXN0ZWQoayBTdHJpbmcsIHYg U3RyaW5nKQopIEVOR0lORSA9IE1lcmdlVHJlZSBPUkRFUiBCWSAocGtnc2V0X2RhdGUsIHBr Z3NldF9uYW1lLCBwa2dzZXRfcnV1aWQsIHBrZ3NldF9kZXB0aCkgUFJJTUFSWSBLRVkgKHBr Z3NldF9kYXRlLCBwa2dzZXRfbmFtZSk7CgoKLypTdG9yZXMgcmVwb3NpdG9yeSBmb3IgJ3Ny cG0nIGFuZCBldmVyeSBjb21wb25lbnQKTG9naWNhbGx5IGxpbmtlZCB0byBQYWNrYWdlU2V0 TmFtZSB0YWJsZSBieSAncGtnc2V0X3V1aWQnIGZpZWxkKi8KCkNSRUFURSBUQUJMRSBQYWNr YWdlU2V0CigKICAgIHBrZ3NldF91dWlkICAgICBVVUlEIENPREVDKFpTVEQoMSkpLAogICAg cGtnX2hhc2ggICAgICAgIFVJbnQ2NCBDT0RFQyhHb3JpbGxhLFpTVEQoMSkpCikgRU5HSU5F ID0gTWVyZ2VUcmVlIE9SREVSIEJZIChwa2dzZXRfdXVpZCwgcGtnX2hhc2gpIFBSSU1BUlkg S0VZIChwa2dzZXRfdXVpZCk7CgpDUkVBVEUgVEFCTEUgUGFja2FnZVNldF9idWZmZXIgQVMg UGFja2FnZVNldCBFTkdJTkUgPSBCdWZmZXIoY3VycmVudERhdGFiYXNlKCksIFBhY2thZ2VT ZXQsIDE2LCAxMCwgMTAwLCAxMDAwMCwgMTAwMDAwMCwgMTAwMDAwMCwgMTAwMDAwMDAwKTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMDAwKTsK Ci8qU3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IHBhY2thZ2VzIGdhdGhlcmVkIGZyb20gUlBN IGhlYWRlcgpGaWxlcyBmb3IgcGFja2FnZSBhcmUgc3RvcmVkIGluIHNlcGFyYXRlIEZpbGVz IHRhYmxlCkNoYW5nZWxvZyB0ZXh0cyBhcmUgc3RvcmVkIHNlcGFyYXRlbHksIGxpbmtlZCBi eSBNdXJNdXJIYXNoIGZyb20gdGV4dCBjb250ZW50cyovCgpDUkVBVEUgVEFCTEUgUGFja2Fn ZXMKKAogICAgcGtnX2hhc2ggICAgICAgICAgICAgIFVJbnQ2NCwKICAgIHBrZ19jcyAgICAg ICAgICAgICAgICBGaXhlZFN0cmluZygyMCksCiAgICBwa2dfcGFja2FnZXIgICAgICAgICAg TG93Q2FyZGluYWxpdHkoU3RyaW5nKSwKICAgIHBrZ19wYWNrYWdlcl9lbWFpbCAgICBMb3dD YXJkaW5hbGl0eShTdHJpbmcpLAogICAgcGtnX25hbWUgICAgICAgICAgICAgIFN0cmluZywK ICAgIHBrZ19hcmNoICAgICAgICAgICAgICBMb3dDYXJkaW5hbGl0eShTdHJpbmcpLAogICAg cGtnX3ZlcnNpb24gICAgICAgICAgIFN0cmluZywKICAgIHBrZ19yZWxlYXNlICAgICAgICAg ICBTdHJpbmcsCiAgICBwa2dfZXBvY2ggICAgICAgICAgICAgVUludDMyLAogICAgcGtnX3Nl cmlhbF8gICAgICAgICAgIFVJbnQzMiwKICAgIHBrZ19idWlsZHRpbWUgICAgICAgICBVSW50 MzIsCiAgICBwa2dfYnVpbGRob3N0ICAgICAgICAgTG93Q2FyZGluYWxpdHkoU3RyaW5nKSwK ICAgIHBrZ19zaXplICAgICAgICAgICAgICBVSW50NjQsCiAgICBwa2dfYXJjaGl2ZXNpemUg ICAgICAgVUludDY0LAogICAgcGtnX3JwbXZlcnNpb24gICAgICAgIExvd0NhcmRpbmFsaXR5 KFN0cmluZyksCiAgICBwa2dfY29va2llICAgICAgICAgICAgU3RyaW5nLAogICAgcGtnX3Nv dXJjZXBhY2thZ2UgICAgIFVJbnQ4LAogICAgcGtnX2Rpc3R0YWcgICAgICAgICAgIFN0cmlu ZywKICAgIHBrZ19zb3VyY2VycG0gICAgICAgICBTdHJpbmcsCiAgICBwa2dfc3JjcnBtX2hh c2ggICAgICAgVUludDY0LAogICAgcGtnX2ZpbGVuYW1lICAgICAgICAgIFN0cmluZywKICAg IHBrZ19jb21wbGV0ZSAgICAgICAgICBVSW50OCwKICAgIHBrZ19zdW1tYXJ5ICAgICAgICAg ICBTdHJpbmcsCiAgICBwa2dfZGVzY3JpcHRpb24gICAgICAgU3RyaW5nLAogICAgcGtnX2No YW5nZWxvZyAgICAgICAgIE5lc3RlZChkYXRlIERhdGVUaW1lLCBuYW1lIFN0cmluZywgZXZy IFN0cmluZywgaGFzaCBVSW50NjQpLAogICAgcGtnX2Rpc3RyaWJ1dGlvbiAgICAgIExvd0Nh cmRpbmFsaXR5KFN0cmluZyksCiAgICBwa2dfdmVuZG9yICAgICAgICAgICAgTG93Q2FyZGlu YWxpdHkoU3RyaW5nKSwKICAgIHBrZ19naWYgICAgICAgICAgICAgICBTdHJpbmcsCiAgICBw a2dfeHBtICAgICAgICAgICAgICAgU3RyaW5nLAogICAgcGtnX2xpY2Vuc2UgICAgICAgICAg IExvd0NhcmRpbmFsaXR5KFN0cmluZyksCiAgICBwa2dfZ3JvdXBfICAgICAgICAgICAgU3Ry aW5nLAogICAgcGtnX3VybCAgICAgICAgICAgICAgIExvd0NhcmRpbmFsaXR5KFN0cmluZyks CiAgICBwa2dfb3MgICAgICAgICAgICAgICAgTG93Q2FyZGluYWxpdHkoU3RyaW5nKSwKICAg IHBrZ19wcmVpbiAgICAgICAgICAgICBTdHJpbmcsCiAgICBwa2dfcG9zdGluICAgICAgICAg ICAgU3RyaW5nLAogICAgcGtnX3ByZXVuICAgICAgICAgICAgIFN0cmluZywKICAgIHBrZ19w b3N0dW4gICAgICAgICAgICBTdHJpbmcsCiAgICBwa2dfaWNvbiAgICAgICAgICAgICAgU3Ry aW5nLAogICAgcGtnX3ByZWlucHJvZyAgICAgICAgIEFycmF5KFN0cmluZyksCiAgICBwa2df cG9zdGlucHJvZyAgICAgICAgQXJyYXkoU3RyaW5nKSwKICAgIHBrZ19wcmV1bnByb2cgICAg ICAgICBBcnJheShTdHJpbmcpLAogICAgcGtnX3Bvc3R1bnByb2cgICAgICAgIEFycmF5KFN0 cmluZyksCiAgICBwa2dfYnVpbGRhcmNocyAgICAgICAgQXJyYXkoTG93Q2FyZGluYWxpdHko U3RyaW5nKSksCiAgICBwa2dfdmVyaWZ5c2NyaXB0ICAgICAgU3RyaW5nLAogICAgcGtnX3Zl cmlmeXNjcmlwdHByb2cgIEFycmF5KFN0cmluZyksCiAgICBwa2dfcHJlZml4ZXMgICAgICAg ICAgQXJyYXkoTG93Q2FyZGluYWxpdHkoU3RyaW5nKSksCiAgICBwa2dfaW5zdHByZWZpeGVz ICAgICAgQXJyYXkoU3RyaW5nKSwKICAgIHBrZ19vcHRmbGFncyAgICAgICAgICBMb3dDYXJk aW5hbGl0eShTdHJpbmcpLAogICAgcGtnX2Rpc3R1cmwgICAgICAgICAgIFN0cmluZywKICAg IHBrZ19wYXlsb2FkZm9ybWF0ICAgICBMb3dDYXJkaW5hbGl0eShTdHJpbmcpLAogICAgcGtn X3BheWxvYWRjb21wcmVzc29yIExvd0NhcmRpbmFsaXR5KFN0cmluZyksCiAgICBwa2dfcGF5 bG9hZGZsYWdzICAgICAgTG93Q2FyZGluYWxpdHkoU3RyaW5nKSwKICAgIHBrZ19wbGF0Zm9y bSAgICAgICAgICBMb3dDYXJkaW5hbGl0eShTdHJpbmcpCikgRU5HSU5FID0gUmVwbGFjaW5n TWVyZ2VUcmVlIE9SREVSIEJZIChwa2dfbmFtZSwgcGtnX2FyY2gsIHBrZ192ZXJzaW9uLCBw a2dfcmVsZWFzZSwgcGtnX3NlcmlhbF8sIHBrZ19lcG9jaCwgcGtnX2Rpc3R0YWcsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZmlsZW5hbWUsIHBrZ19z b3VyY2VycG0sIHBrZ19wYWNrYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBrZ19wYWNrYWdlcl9lbWFpbCkgUFJJTUFSWSBLRVkgKHBrZ19uYW1lLCBw a2dfYXJjaCkgU0VUVElOR1MgaW5kZXhfZ3JhbnVsYXJpdHkgPSA4MTkyOwoKCkNSRUFURSBU QUJMRSBQYWNrYWdlc19idWZmZXIgQVMgUGFja2FnZXMgRU5HSU5FID0gQnVmZmVyKGN1cnJl bnREYXRhYmFzZSgpLCBQYWNrYWdlcywgMTYsIDEwLCAyMDAsIDEwMDAwLCAxMDAwMDAwLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwMDAw MCwgMTAwMDAwMDAwKTsKCgovKlN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBmaWxlcyBnYXRo ZXJlZCBmcm9tIHBhY2thZ2UgUlBNIGhlYWRlcgpMb2dpY2FsbHkgbGlua2VkIHRvIFBhY2th Z2VzIHRhYmxlIGJ5ICdwa2dfaGFzaCcgZmllbGQqLwoKQ1JFQVRFIFRBQkxFIEZpbGVzCigK ICAgIHBrZ19oYXNoICAgICAgICBVSW50NjQsCiAgICBmaWxlX25hbWUgICAgICAgU3RyaW5n LAogICAgZmlsZV9oYXNobmFtZSAgIFVJbnQ2NCBNQVRFUklBTElaRUQgbXVybXVySGFzaDNf NjQoZmlsZV9uYW1lKSwKICAgIGZpbGVfaGFzaGRpciAgICBVSW50NjQgTUFURVJJQUxJWkVE IG11cm11ckhhc2gzXzY0KGFycmF5U3RyaW5nQ29uY2F0KGFycmF5UG9wQmFjayhzcGxpdEJ5 Q2hhcignLycsIGZpbGVfbmFtZSkpKSksCiAgICBmaWxlX2xpbmt0byAgICAgU3RyaW5nLAog ICAgZmlsZV9tZDUgICAgICAgIEZpeGVkU3RyaW5nKDE2KSwKICAgIGZpbGVfc2l6ZSAgICAg ICBVSW50MzIsCiAgICBmaWxlX21vZGUgICAgICAgVUludDE2LAogICAgZmlsZV9yZGV2ICAg ICAgIFVJbnQxNiwKICAgIGZpbGVfbXRpbWUgICAgICBEYXRlVGltZSwKICAgIGZpbGVfZmxh ZyAgICAgICBVSW50MTYsCiAgICBmaWxlX3VzZXJuYW1lICAgTG93Q2FyZGluYWxpdHkoU3Ry aW5nKSwKICAgIGZpbGVfZ3JvdXBuYW1lICBMb3dDYXJkaW5hbGl0eShTdHJpbmcpLAogICAg ZmlsZV92ZXJpZnlmbGFnIFVJbnQzMiwKICAgIGZpbGVfZGV2aWNlICAgICBVSW50MzIsCiAg ICBmaWxlX2xhbmcgICAgICAgTG93Q2FyZGluYWxpdHkoU3RyaW5nKSwKICAgIGZpbGVfY2xh c3MgICAgICBFbnVtOCgnZmlsZScgPSAwLCAnZGlyZWN0b3J5JyA9IDEsICdzeW1saW5rJyA9 IDIsICdzb2NrZXQnID0gMywgJ2Jsb2NrJyA9IDQsICdjaGFyJyA9IDUsICdmaWZvJyA9IDYp CikgRU5HSU5FID0gUmVwbGFjaW5nTWVyZ2VUcmVlIE9SREVSIEJZIChwa2dfaGFzaCwgZmls ZV9uYW1lLCBmaWxlX2NsYXNzLCBmaWxlX21kNSkgUFJJTUFSWSBLRVkgcGtnX2hhc2g7CgoK Q1JFQVRFIFRBQkxFIEZpbGVzX2J1ZmZlciBBUyBGaWxlcyBFTkdJTkUgPSBCdWZmZXIoY3Vy cmVudERhdGFiYXNlKCksIEZpbGVzLCAxNiwgMTAsIDIwMCwgMTAwMDAsIDEwMDAwMDAsIDEw MDAwMDAwLAoKCi8qU3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IHBhY2thZ2UgZGVwZW5kZW5j aWVzIGZvciBwYWNrYWdlLgpMb2dpY2FsbHkgbGlua2VkIHRvIFBhY2thZ2VzIHRhYmxlIGJ5 ICdwa2dfaGFzaCcgZmllbGQqLwoKQ1JFQVRFIFRBQkxFIERlcGVuZHMKKAogICAgcGtnX2hh c2ggICBVSW50NjQsCiAgICBkcF9uYW1lICAgIFN0cmluZywKICAgIGRwX3ZlcnNpb24gU3Ry aW5nLAogICAgZHBfZmxhZyAgICBVSW50MzIsCiAgICBkcF90eXBlICAgIEVudW04KCdyZXF1 aXJlJyA9IDEsICdjb25mbGljdCcgPSAyLCAnb2Jzb2xldGUnID0gMywgJ3Byb3ZpZGUnID0g NCkKKSBFTkdJTkUgPSBNZXJnZVRyZWUgT1JERVIgQlkgKHBrZ19oYXNoLCBkcF90eXBlLCBk cF9uYW1lLCBkcF92ZXJzaW9uLCBkcF9mbGFnKSBQUklNQVJZIEtFWSBwa2dfaGFzaDsKCgpD UkVBVEUgVEFCTEUgRGVwZW5kc19idWZmZXIgQVMgRGVwZW5kcyBFTkdJTkUgPSBCdWZmZXIo Y3VycmVudERhdGFiYXNlKCksIERlcGVuZHMsIDE2LCAxMCwgMjAwLCAxMDAwMCwgMTAwMDAw MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAw MDAwMDAsIDEwMDAwMDAwMCk7CgoKLypTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgY2hhbmdl bG9nIHRleHRzIGdhdGhlcmVkIGZyb20gcGFja2FnZSBSUE0gaGVhZGVyLgpPbmx5IHVuaXF1 ZSB0ZXh0IHJlY29yZHMgc3RvcmVkCkxvZ2ljYWxseSBsaW5rZWQgdG8gUGFja2FnZXMgdGFi bGUgYnkgJ2NobG9nX2hhc2gnIGZpZWxkKi8KCkNSRUFURSBUQUJMRSBDaGFuZ2Vsb2cKKAog ICAgY2hsb2dfaGFzaCAgVUludDY0LAogICAgY2hsb2dfdGV4dCAgU3RyaW5nCikgRU5HSU5F ID0gUmVwbGFjaW5nTWVyZ2VUcmVlIE9SREVSIEJZIChjaGxvZ19oYXNoLCBjaGxvZ190ZXh0 KSBQUklNQVJZIEtFWSBjaGxvZ19oYXNoCgoKQ1JFQVRFIFRBQkxFIENoYW5nZWxvZ19idWZm ZXIgQVMgQ2hhbmdlbG9nIEVOR0lORSA9IEJ1ZmZlcihjdXJyZW50RGF0YWJhc2UoKSwgQ2hh bmdlbG9nLCAxNiwgMTAsIDEwMCwgMTAwMDAsIDEwMDAwMDAsIDEwMDAwMDAsIDEwMDAwMDAw MCk7 --------------479B72C7EF96F62F106C4C4C--