Анализ и применение ядра Linux

Цена: 1 152руб. (¥54.5)
Артикул: 578055338250
Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.
Описание товараPHA+PGltZyBjbGFzcz0iZGVzY19hbmNob3IiIGlkPSJkZXNjLW1vZHVsZS0xIiBzcmM9Imh0dHBzOi8vYXNzZXRzLmFsaWNkbi5jb20va2lzc3kvMS4wLjAvYnVpbGQvaW1nbGF6eWxvYWQvc3BhY2ViYWxsLmdpZiI+0JIg0Y3RgtC+0Lkg0LrQvdC40LPQtSDRgNCw0YHRgdC60LDQt9GL0LLQsNC10YLRgdGPINC+INC/0YDQvtC10LrRgtC40YDQvtCy0LDQvdC40Lgg0Y/QtNGA0LAg0Lgg0YDQtdCw0LvQuNC30LDRhtC40Lgg0L7Qv9C10YDQsNGG0LjQvtC90L3QvtC5INGB0LjRgdGC0LXQvNGLIExpbnV4INCyINC80L7QtNGD0LvRj9GFLCDRg9C00LXQu9GP0Y8g0L7RgdC+0LHQvtC1INCy0L3QuNC80LDQvdC40LUg0LrQu9GO0YfQtdCy0YvQvCDQv9C+0L3Rj9GC0LjRj9C8LCDQsNC70LPQvtGA0LjRgtC80LDQvCDQuCDRgdGC0YDRg9C60YLRg9GA0LDQvCDQtNCw0L3QvdGL0YUu0JIg0YLQviDQttC1INCy0YDQtdC80Y8g0L7QvSDQsNC90LDQu9C40LfQuNGA0YPQtdGCINC80L3QvtCz0LjQtSDQutC70LDRgdGB0LjRh9C10YHQutC40LUg0L/RgNC40LvQvtC20LXQvdC40Y8sINGC0LDQutC40LUg0LrQsNC6IE5naW54LCBNZW1jYWNoZWQsIFJlZGlzLCBMVlMg0Lgg0YIuINC0Liwg0Lgg0L7QsdGK0Y/RgdC90Y/QtdGCLCDQutCw0Log0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCx0LDQt9C+0LLRg9GOINC/0L7QtNC00LXRgNC20LrRgywg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9C10LzRg9GOINC+0L/QtdGA0LDRhtC40L7QvdC90L7QuSDRgdC40YHRgtC10LzQvtC5LCDQtNC70Y8g0YDQsNC30YPQvNC90L7Qs9C+INC/0YDQvtC10LrRgtC40YDQvtCy0LDQvdC40Y8g0Lgg0YDQtdCw0LvQuNC30LDRhtC40Lgg0L/RgNC40LvQvtC20LXQvdC40LkuPGltZyBjbGFzcz0iZGVzY19hbmNob3IiIGlkPSJkZXNjLW1vZHVsZS0yIiBzcmM9Imh0dHBzOi8vYXNzZXRzLmFsaWNkbi5jb20va2lzc3kvMS4wLjAvYnVpbGQvaW1nbGF6eWxvYWQvc3BhY2ViYWxsLmdpZiI+PGRpdiBzdHlsZT0ibWFyZ2luOiAwLjBweCBhdXRvIDIwLjBweDtib3JkZXI6IDEuMHB4IHNvbGlkICNlZGVkZWQ7b3ZlcmZsb3c6IGhpZGRlbjtkZW50aXR5OiBwcmRfdjEgMC4wXzIwMTgwMTMwX2Jhc2ljX2luZm87Ij48ZGl2IHN0eWxlPSJtYXJnaW46IDAuMHB4IGF1dG87aGVpZ2h0OiAyNS4wcHg7Y29sb3I6ICMzMzMzMzM7bGluZS1oZWlnaHQ6IDI1LjBweDtmb250LXdlaWdodDogYm9sZDtwYWRkaW5nLWxlZnQ6IDE1LjBweDsiPtCe0YHQvdC+0LLQvdCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y88L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDAuMHB4IGF1dG87cGFkZGluZy1sZWZ0OiAxNS4wcHg7Ym9yZGVyLXRvcC13aWR0aDogMS4wcHg7Ym9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO2JvcmRlci10b3AtY29sb3I6ICNlZGVkZWQ7Y29sb3I6ICM2NjY2NjY7bGluZS1oZWlnaHQ6IDIwLjBweDtmb250LXNpemU6IDEyLjBweDtwYWRkaW5nLXRvcDogNS4wcHg7Ij48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjEwIj48dHI+PHRkPjxzdHJvbmc+0J3QsNC30LLQsNC90LjQtSDQv9GA0L7QtNGD0LrRgtCwOjwvc3Ryb25nPjwvdGQ+PHRkIHdpZHRoPSI0MjBweCI+0JDQvdCw0LvQuNC3INC4INC/0YDQuNC80LXQvdC10L3QuNC1INGP0LTRgNCwIExpbnV4PC90ZD48dGQ+PHN0cm9uZz7RhNC+0YDQvNCw0YI6PC9zdHJvbmc+PC90ZD48dGQ+MTY8L3RkPjwvdHI+PHRyPjx0ZD48c3Ryb25nPtCQ0LLRgtC+0YA6PC9zdHJvbmc+PC90ZD48dGQ+0KfQtdC9INCaLjwvdGQ+PHRkPjxzdHJvbmc+0KbQtdC90Ys6PC9zdHJvbmc+PC90ZD48dGQ+NzkuMDA8L3RkPjwvdHI+PHRyPjx0ZD48c3Ryb25nPtCd0L7QvNC10YAgSVNCTjo8L3N0cm9uZz48L3RkPjx0ZD45Nzg3MTExNjA0MDgyPC90ZD48dGQ+PHN0cm9uZz7QktGA0LXQvNGPINC/0YPQsdC70LjQutCw0YbQuNC4Ojwvc3Ryb25nPjwvdGQ+PHRkPjIwMTgtMDctMzE8L3RkPjwvdHI+PHRyPjx0ZD48c3Ryb25nPtCY0LfQtNCw0YLQtdC70YzRgdGC0LLQvjo8L3N0cm9uZz48L3RkPjx0ZD7QnNCw0YjQuNC90L7RgdGC0YDQvtC40YLQtdC70YzQvdCw0Y8g0L/RgNC+0LzRi9GI0LvQtdC90L3QvtGB0YLRjCDQn9GA0LXRgdGB0LA8L3RkPjx0ZD48c3Ryb25nPtCS0YDQtdC80Y8g0L/QtdGH0LDRgtC4Ojwvc3Ryb25nPjwvdGQ+PHRkPjIwMTgtMDctMjA8L3RkPjwvdHI+PHRyPjx0ZD48c3Ryb25nPtCY0LfQtNCw0L3QuNC1Ojwvc3Ryb25nPjwvdGQ+PHRkPjE8L3RkPjx0ZD48c3Ryb25nPtCS0YDQtdC80Y8g0L/QtdGH0LDRgtC4Ojwvc3Ryb25nPjwvdGQ+PHRkPjE8L3RkPjwvdHI+PC90YWJsZT48L2Rpdj48L2Rpdj7QodC+0LTQtdGA0LbQuNC80L7QtSDQt9Cw0L/QuNGB0Lg8YnI+0J/RgNC10LTQuNGB0LvQvtCy0LjQtTxicj7Qk9C70LDQstCwIDEuINCf0YDQvtGG0LXRgdGB0Ysg0Lgg0L/QvtGC0L7QutC4IDEuPGJyPjEuMSDQn9C+0L3Rj9GC0LjRjyDQv9GA0L7RhtC10YHRgdC+0LIg0Lgg0L/QvtGC0L7QutC+0LIgMTxicj4xLjEuMSDQmNGB0YLQvtGA0LjRjyDQv9GA0L7RhtC10YHRgdCwIDE8YnI+MS4xLjIg0KDQsNC30LvQuNGH0L3Ri9C1INGB0L/QvtGB0L7QsdGLINCy0L7RgdC/0YDQvtC40LfQstC10LTQtdC90LjRjyDRgtGA0LXQtNC+0LIgMzxicj4xLjIg0KDQtdCw0LvQuNC30LDRhtC40Y8g0L/RgNC+0YbQtdGB0YHQvtCyINC4INC/0L7RgtC+0LrQvtCyINCyIExpbnV4IDU8YnI+MS4yLjEg0KDQtdCw0LvQuNC30LDRhtC40Y8g0L/RgNC+0YbQtdGB0YHQsCDQsiBMaW51eCA2PGJyPjEuMi4yINCf0L7RgdC70LUg0YHQvtC30LTQsNC90LjRjyDQv9GA0L7RhtC10YHRgdCwIDEyPGJyPjEuMi4zINCg0LDQt9C90LjRhtCwINC80LXQttC00YMg0L/QvtGC0L7QutCw0LzQuCDRj9C00YDQsCDQuCDQv9GA0L7RhtC10YHRgdCw0LzQuCAxMzxicj4xLjIuNCDQkdC40LHQu9C40L7RgtC10LrQsCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjRhSDQv9C+0YLQvtC60L7QsiBwdGhyZWFkIDE1PGJyPjEuMyDQn9C70LDQvdC40YDQvtCy0LDQvdC40LUg0L/RgNC+0YbQtdGB0YHQvtCyIDE2PGJyPjEuMy4xINCQ0YDRhdC40YLQtdC60YLRg9GA0LAg0LzQtdGF0LDQvdC40LfQvNCwINC/0LvQsNC90LjRgNC+0LLQsNC90LjRjyDQv9GA0L7RhtC10YHRgdC+0LIgMTY8YnI+MS4zLjIg0J/RgNC40L3RhtC40L8g0L/QtdGA0LXQutC70Y7Rh9C10L3QuNGPINC/0YDQvtGG0LXRgdGB0L7QsiAxOTxicj4xLjMuMyDQn9GA0LjQstGP0LfQutCwINCm0J8g0L/RgNC4INC/0LvQsNC90LjRgNC+0LLQsNC90LjQuCAyMTxicj4xLjQg0KPQv9GA0LDQstC70LXQvdC40LUg0L/RgNC+0YbQtdGB0YHQsNC80Lgg0Lgg0L/QvtGC0L7QutCw0LzQuCDQsiDQv9GA0LjQu9C+0LbQtdC90LjRj9GFIDIyPGJyPjEuNC4xINCQ0L3QsNC70LjQtyDQvNC+0LTQtdC70Lgg0L/Rg9C70LAg0L/QvtGC0L7QutC+0LIgTWVtY2FjaGVkIDIyPGJyPjEuNC4yINCQ0L3QsNC70LjQtyDQvNC+0LTQtdC70Lgg0L/RgNC+0YbQtdGB0YHQsCBOZ2lueCAyNDxicj4xLjUg0KHQvtC/0YPRgtGB0YLQstGD0Y7RidC40LUg0LjQvdGB0YLRgNGD0LzQtdC90YLRiyDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC/0YDQvtGG0LXRgdGB0LDQvNC4INC4INC/0L7RgtC+0LrQsNC80LggMjU8YnI+MS41LjEg0J/QvtGC0L7QuiDQvtGC0LvQsNC00LrQuCDRgdGA0LXQtNGLINGA0LDQt9GA0LDQsdC+0YLQutC4IDI1PGJyPjEuNS4yINCc0LXRgtC+0LQg0L7RgtC70LDQtNC60Lgg0YHQsdC+0Y8g0L/RgNC+0YbQtdGB0YHQsCAyNjxicj4xLjUuMyDQuNC90YHRgtGA0YPQvNC10L3RgiDRgtGA0LDRgdGB0LjRgNC+0LLQutC4IDI4PGJyPjEuNS4044CA0JjQvdGB0YLRgNGD0LzQtdC90YIgU3lzdGVtVGFwIDI5PGJyPjEuNS4144CA0JjQvdGB0YLRgNGD0LzQtdC90YIgRFRyYWNlIDMwPGJyPjEuNiDQmtGA0LDRgtC60L7QtSDRgdC+0LTQtdGA0LbQsNC90LjQtSDRjdGC0L7QuSDQs9C70LDQstGLIDMyPGJyPtCT0LvQsNCy0LAgMiDQn9Cw0YDQsNC70LvQtdC70LjQt9C8IDMzPGJyPjIuMSDQp9GC0L4g0YLQsNC60L7QtSDQv9Cw0YDQsNC70LvQtdC70LjQt9C8IDM0PGJyPjIuMS4xINCa0LDQuiDQstC+0LfQvdC40LrQsNC10YIg0L/QsNGA0LDQu9C70LXQu9C40LfQvCAzNDxicj4yLjEuMiDQmtCw0LrQuNC1INC/0YDQvtCx0LvQtdC80Ysg0L/RgNC40L3QtdGB0LXRgiDQv9Cw0YDQsNC70LvQtdC70LjQt9C8IDM0PGJyPjIuMS4zINCa0LDQuiDRgNC10YjQuNGC0Ywg0L/RgNC+0LHQu9C10LzRiywg0LLRi9C30LLQsNC90L3Ri9C1INC/0LDRgNCw0LvQu9C10LvQuNC30LzQvtC8IDM1PGJyPjIuMiDQkiDQutCw0LrQuNGFINGB0YbQtdC90LDRgNC40Y/RhSDQvtC/0LXRgNCw0YbQuNC+0L3QvdCw0Y8g0YHQuNGB0YLQtdC80LAg0YHRgtC+0LvQutC90LXRgtGB0Y8g0YEg0L/QsNGA0LDQu9C70LXQu9C40LfQvNC+0LwgMzU8YnI+Mi4zINCg0LXQsNC70LjQt9Cw0YbQuNGPINC40L3RgdGC0YDRg9C80LXQvdGC0L7QsiDQv9Cw0YDQsNC70LvQtdC70LjQt9C80LAg0LIgTGludXggMzc8YnI+Mi4zLjEg0JDRgtC+0LzQsNGA0L3Ri9C1INC/0LXRgNC10LzQtdC90L3Ri9C1IDM3PGJyPjIuMy4yINCh0L/QuNC9LdCx0LvQvtC60LjRgNC+0LLQutCwIDM4PGJyPjIuMy4zINCh0LXQvNCw0YTQvtGAIDQyPGJyPjIuMy40INCR0LvQvtC60LjRgNC+0LLQutCwINC80YzRjtGC0LXQutGB0LAgNDM8YnI+Mi4zLjUg0JHQu9C+0LrQuNGA0L7QstC60LAg0YfRgtC10L3QuNGPLdC30LDQv9C40YHQuCA0Mzxicj4yLjMuNiDQo9C/0YDQtdC20LTQtdC90LjQtSA0NDxicj4yLjMuNyDQn9C10YDQtdC80LXQvdC90YvQtSDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0L/RgNC+0YbQtdGB0YHQvtGA0LAgNDU8YnI+Mi4zLjgg0JzQtdGF0LDQvdC40LfQvCBSQ1UgNDg8YnI+Mi4zLjkg0JHQsNGA0YzQtdGAINC/0LDQvNGP0YLQuCA1MTxicj4yLjQg0JDQvdCw0LvQuNC3INC/0YDQvtCx0LvQtdC8INC/0LDRgNCw0LvQu9C10LvQuNC30LzQsCDQsiDRgNCw0YHQv9GA0L7RgdGC0YDQsNC90LXQvdC90L7QvCDQv9GA0L7Qs9GA0LDQvNC80L3QvtC8INC+0LHQtdGB0L/QtdGH0LXQvdC40Lgg0YEg0L7RgtC60YDRi9GC0YvQvCDQuNGB0YXQvtC00L3Ri9C8INC60L7QtNC+0LwgNTQ8YnI+Mi40LjEg0JDRgtC+0LzQsNGA0L3QvtGB0YLRjCBOZ2lueCA1NDxicj4yLjQuMiDQkdC70L7QutC40YDQvtCy0LrQuCDQvNGM0Y7RgtC10LrRgdC+0LIg0LIgTWVtY2FjaGVkIDU1PGJyPjIuNC4zINCg0LXRiNC10L3QuNC1INCx0LXQtyDQsdC70L7QutC40YDQvtCy0LrQuCBSZWRpcyA1Njxicj4yLjQuNCDQkNC90LDQu9C40Lcg0L/RgNC+0LHQu9C10LzRiyDQs9GA0L7QvNC+0LLQvtC5INCz0YDRg9C/0L/RiyDQsiBMaW51eCA1Nzxicj4yLjQuNSDQoNC10YjQtdC90LjQtSDQv9GA0L7QsdC70LXQvCDRgSDRgdC40L3RhdGA0L7QvdC40LfQsNGG0LjQtdC5IE15Q2F0IDY1PGJyPjIuNC42INCg0LXRiNC10L3QuNGPINC/0YDQvtCx0LvQtdC8INGBINC70L7QttC90YvQvCDRgNCw0YHQv9GA0L7RgdGC0YDQsNC90LXQvdC40LXQvCA2Nzxicj4yLjUg0JrRgNCw0YLQutC+0LUg0YHQvtC00LXRgNC20LDQvdC40LUg0Y3RgtC+0Lkg0LPQu9Cw0LLRiyA2OTxicj7Qk9C70LDQstCwIDMg0KPQv9GA0LDQstC70LXQvdC40LUg0L/QsNC80Y/RgtGM0Y4gNzA8YnI+My4xINCX0LDRh9C10Lwg0L3QtdC+0LHRhdC+0LTQuNC80L4g0YPQv9GA0LDQstC70LXQvdC40LUg0L/QsNC80Y/RgtGM0Y4gNzE8YnI+My4yIE1NVSDQuCDQsNC00YDQtdGB0L3QvtC1INC/0YDQvtGB0YLRgNCw0L3RgdGC0LLQviA3Mzxicj4zLjIuMSDQktC40YDRgtGD0LDQu9GM0L3Ri9C5INCw0LTRgNC10YEsINC70LjQvdC10LnQvdGL0Lkg0LDQtNGA0LXRgSwg0YTQuNC30LjRh9C10YHQutC40Lkg0LDQtNGA0LXRgSA3Mzxicj4zLjIuMiDQnNC10YXQsNC90LjQt9C8INGD0L/RgNCw0LLQu9C10L3QuNGPINC/0LDQvNGP0YLRjNGOIE1NVSA3NDxicj4zLjMg0JzQtdGF0LDQvdC40LfQvCDRgdC10LPQvNC10L3RgtCw0YbQuNC4INC4INC/0LXQudC00LbQuNC90LPQsCDQsiBMaW51eCA3OTxicj4zLjMuMSDQnNC10YXQsNC90LjQt9C8INGB0LXQs9C80LXQvdGC0LDRhtC40LggNzk8YnI+My4zLjIg0JzQtdGF0LDQvdC40LfQvCDQv9C10LnQtNC20LjQvdCz0LAgODA8YnI+My40INCj0L/RgNCw0LLQu9C10L3QuNC1INC/0LDQvNGP0YLRjNGOIExpbnV4IDgyPGJyPjMuNC4xINCj0L/RgNCw0LLQu9C10L3QuNC1INGE0LjQt9C40YfQtdGB0LrQvtC5INC/0LDQvNGP0YLRjNGOIDgzPGJyPjMuNC4yINCj0L/RgNCw0LLQu9C10L3QuNC1INCw0LTRgNC10YHQvdGL0Lwg0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC+0Lwg0L/RgNC+0YbQtdGB0YHQsCA4Njxicj4zLjUg0KDQsNGB0L/RgNC10LTQtdC70LXQvdC40LUg0L/QsNC80Y/RgtC4INC4INGD0L/RgNCw0LLQu9C10L3QuNC1INC10Y4g0LIgTGludXggODk8YnI+My41LjEg0JDQu9Cz0L7RgNC40YLQvCDQstGL0LTQtdC70LXQvdC40Y8g0YTQuNC30LjRh9C10YHQutC+0Lkg0L/QsNC80Y/RgtC4IDg5PGJyPjMuNS4yINGA0LDRgdC/0YDQtdC00LXQu9C40YLQtdC70Ywg0L/Qu9C40YIgOTU8YnI+My41LjMg0KPQv9GA0LDQstC70LXQvdC40LUg0L/QsNC80Y/RgtGM0Y4g0YHQvtGB0YLQvtGP0L3QuNGPINGP0LTRgNCwIDEwNTxicj4zLjUuNCDQn9GA0LjQu9C+0LbQtdC90LjQtSDQv9Cw0LzRj9GC0Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0LPQviDRgNC10LbQuNC80LAgMTA5PGJyPjMuNiDQoNCw0YHQv9GA0LXQtNC10LvQtdC90LjQtSDQuCDRg9C/0YDQsNCy0LvQtdC90LjQtSDRgdGC0LXQutC+0LLQvtC5INC/0LDQvNGP0YLRjNGOIDEwOTxicj4zLjcg0JDQvdCw0LvQuNC3INGB0LvRg9GH0LDRjyDRg9C/0YDQsNCy0LvQtdC90LjRjyDQv9Cw0LzRj9GC0YzRjiAxMTA8YnI+My43LjEg0JDQvdCw0LvQuNC3INC80LXRhdCw0L3QuNC30LzQsCDRg9C/0YDQsNCy0LvQtdC90LjRjyDQv9Cw0LzRj9GC0YzRjiBNZW1jYWNoZWQgMTEwPGJyPjMuNy4yINCQ0L3QsNC70LjQtyDQvNC10YXQsNC90LjQt9C80LAg0YPQv9GA0LDQstC70LXQvdC40Y8g0L/QsNC80Y/RgtGM0Y4gUmVkaXMgMTEzPGJyPjMuOCDQmtGA0LDRgtC60L7QtSDRgdC+0LTQtdGA0LbQsNC90LjQtSDRjdGC0L7QuSDQs9C70LDQstGLIDExNTxicj7Qk9C70LDQstCwIDQuINCc0LXRhdCw0L3QuNC30Lwg0L/RgNC10YDRi9Cy0LDQvdC40Y8gMTE2PGJyPjQuMSDQnNC10YXQsNC90LjQt9C8INC/0YDQtdGA0YvQstCw0L3QuNC5INGB0LjRgdGC0LXQvNGLIHg4NiAxMTY8YnI+NC4xLjHjgIDQkNGA0YXQuNGC0LXQutGC0YPRgNCwINC/0YDQtdGA0YvQstCw0L3QuNC5IHg4NiAxMTc8YnI+NC4xLjIg0J/RgNC10YDRi9Cy0LDQvdC40Y8geDg2INCyINC30LDRidC40YnQtdC90L3QvtC8INGA0LXQttC40LzQtSAxMTc8YnI+NC4yINCf0L7QtNC00LXRgNC20LrQsCBMaW51eCDQuCDRgNC10LDQu9C40LfQsNGG0LjRjyDQv9GA0LXRgNGL0LLQsNC90LjQuSAxMTk8YnI+NC4yLjEg0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0YjQu9GO0LfQsCDQv9GA0LXRgNGL0LLQsNC90LjRjyBJUlEgMTIwPGJyPjQuMi4yINCf0YDQvtGG0LXRgdGBINGA0LXQsNCz0LjRgNC+0LLQsNC90LjRjyDQvdCwINC/0YDQtdGA0YvQstCw0L3QuNC1IDEyMDxicj40LjIuMyDQn9GA0LXRgNGL0LLQsNC90LjQtSDQv9GA0L7RhtC10YHRgdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0L7QsdGA0LDQsdC+0YLRh9C40LrQsCDQvtCx0YDQsNGC0L3QvtCz0L4g0LLRi9C30L7QstCwIDEyMjxicj40LjMg0JzQtdGF0LDQvdC40LfQvCBMaW51eCDQtNC70Y8g0YPRgdC60L7RgNC10L3QuNGPINC+0LHRgNCw0LHQvtGC0LrQuCDQv9GA0LXRgNGL0LLQsNC90LjQuSAxMjI8YnI+NC4zLjEg0J/RgNC+0LPRgNCw0LzQvNC90L7QtSDQv9GA0LXRgNGL0LLQsNC90LjQtSAxMjI8YnI+NC4zLjIg0KLQsNGB0LrQu9C10YIgMTI2PGJyPjQuMy4zINCg0LDQsdC+0YfQsNGPINC+0YfQtdGA0LXQtNGMIDEyODxicj40LjQg0KHQuNGB0YLQtdC80L3Ri9C1INCy0YvQt9C+0LLRiyAxMzI8YnI+NC41INCf0YDQtdGA0YvQstCw0L3QuNC1INGH0LDRgdC+0LIgMTM0PGJyPjQuNiDQnNC10YXQsNC90LjQt9C8INC+0LHRgNCw0LHQvtGC0LrQuCDRgdC40LPQvdCw0LvQvtCyIDEzNTxicj40Ljcg0JzQtdGF0LDQvdC40LfQvCDQvtCx0YDQsNCx0L7RgtC60Lgg0YHQuNCz0L3QsNC70L7QsiBOZ2lueCAxMzk8YnI+NC44INCa0YDQsNGC0LrQvtC1INGB0L7QtNC10YDQttCw0L3QuNC1INGN0YLQvtC5INCz0LvQsNCy0YsgMTQxPGJyPtCT0LvQsNCy0LAgNS4g0JLQstC+0LQg0Lgg0LLRi9Cy0L7QtCAxNDI8YnI+NS4xINCW0LjQt9C90LXQvdC90YvQuSDRhtC40LrQuyDQstCy0L7QtNCwLdCy0YvQstC+0LTQsCDQsiBMaW51eCAxNDM8YnI+NS4xLjHjgIDRg9GA0L7QstC10L3RjCB2ZnMgMTQzPGJyPjUuMS4yINCj0YDQvtCy0LXQvdGMINGE0LDQudC70L7QstC+0Lkg0YHQuNGB0YLQtdC80YsgMTQ0PGJyPjUuMS4zINCh0LvQvtC5INCx0LvQvtC60LAgMTUyPGJyPjUuMS40INGB0LvQvtC5IHNjc2kgMTU2PGJyPjUuMS41INCa0YDQsNGC0LrQvtC1INC+0L/QuNGB0LDQvdC40LUg0L/RgNC+0YbQtdGB0YHQsCDQstCy0L7QtNCwLdCy0YvQstC+0LTQsCAxNTc8YnI+NS4yINCf0LvQsNC90LjRgNC+0LLRidC40Log0LLQstC+0LTQsC3QstGL0LLQvtC00LAgMTU5PGJyPjUuMyDQnNC10YXQsNC90LjQt9C8INC80L3QvtCz0L7QvtGH0LXRgNC10LTQvdC+0YHRgtC4IDE2MTxicj41LjQg0KDQtdCw0LvQuNC30LDRhtC40Y8g0LzRg9C70YzRgtC40L/Qu9C10LrRgdC40YDQvtCy0LDQvdC40Y8g0LLQstC+0LTQsC3QstGL0LLQvtC00LAgMTYzPGJyPjUuNSDQmNC90LrQsNC/0YHRg9C70Y/RhtC40Y8gZXBvbGwgMTcwINCyIFJlZGlzPGJyPjUuNiDQkNGB0LjQvdGF0YDQvtC90L3Ri9C5INGE0LDQudC70L7QstGL0Lkg0LLQstC+0LQt0LLRi9Cy0L7QtCBOZ2lueCAxNzU8YnI+NS43INCn0LXQvCDRhdC+0YDQvtGI0LAg0LrQvtC80LDQvdC00LAgVGFpbD8gMTc3PGJyPjUuOCDQkNC90LDQu9C40Lcg0L/RgNC40LzQtdC90LXQvdC40Y8g0YLQtdGF0L3QvtC70L7Qs9C40Lgg0L3Rg9C70LXQstC+0LPQviDQutC+0L/QuNGA0L7QstCw0L3QuNGPIDE3OTxicj41LjguMSDQvNC80LDQvyAxODA8YnI+NS44LjIg0J7RgtC/0YDQsNCy0LjRgtGMINGE0LDQudC7IDE4MTxicj41LjguMyDQmNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSBtbWFwINC4IHNlbmRmaWxlINCyINC/0YDQvtCz0YDQsNC80LzQvdC+0Lwg0L7QsdC10YHQv9C10YfQtdC90LjQuCDRgSDQvtGC0LrRgNGL0YLRi9C8INC40YHRhdC+0LTQvdGL0Lwg0LrQvtC00L7QvCAxODM8YnI+NS45INCa0YDQsNGC0LrQvtC1INGB0L7QtNC10YDQttCw0L3QuNC1INGN0YLQvtC5INCz0LvQsNCy0YsgMTg2PGJyPtCT0LvQsNCy0LAgNiDQpNCw0LnQu9C+0LLQsNGPINGB0LjRgdGC0LXQvNCwIDE4Nzxicj42LjEg0JDRgNGF0LjRgtC10LrRgtGD0YDQsCDRhNCw0LnQu9C+0LLQvtC5INGB0LjRgdGC0LXQvNGLIExpbnV4IDE4Nzxicj42LjIg0J7RgdC90L7QstC90YvQtSDRhNGD0L3QutGG0LjQuCDRhNCw0LnQu9C+0LLQvtC5INGB0LjRgdGC0LXQvNGLIDE4OTxicj42LjIuMSDQo9GB0YLQsNC90L7QstC60LAg0YTQsNC50LvQvtCy0L7QuSDRgdC40YHRgtC10LzRiyAxOTA8YnI+Ni4yLjIg0J/QvtC40YHQuiDQv9GD0YLQuCDQuiDRhNCw0LnQu9GDIDE5MTxicj42LjPjgIDRhNCw0LnQu9C+0LLQsNGPINGB0LjRgdGC0LXQvNCwIGV4dDQgMjAxPGJyPjYuMy4xINCh0YLRgNGD0LrRgtGD0YDQsCDQtNC40YHQutCwIDIwMTxicj42LjMuMiDQv9C+0LfQuNGG0LjQvtC90LjRgNC+0LLQsNC90LjQtSDQuNC90LTQtdC60YHQvdC+0LPQviDQtNC10YHQutGA0LjQv9GC0L7RgNCwIDIwMzxicj42LjMuMyDQoNC10YjQtdC90LjRjyDQv9GA0L7QsdC70LXQvNGLINGE0YDQsNCz0LzQtdC90YLQsNGG0LjQuCAyMDQ8YnI+Ni4zLjQg0LTRgNC10LLQvtCy0LjQtNC90LDRjyDRgdGC0YDRg9C60YLRg9GA0LAg0Y3QutGB0YLQtdC90YLQsCAyMDQ8YnI+Ni40INCQ0L3QsNC70LjQtyDQvdC10LHQvtC70YzRiNC+0Lkg0YTQsNC50LvQvtCy0L7QuSDRgdC40YHRgtC10LzRiyBUYW9iYW8gVEZTIDIwNjxicj42LjUg0JrRgNCw0YLQutC+0LUg0YHQvtC00LXRgNC20LDQvdC40LUg0LTQsNC90L3QvtC5INCz0LvQsNCy0YsgMjA3PGJyPtCT0LvQsNCy0LAgNy4g0KLQtdGF0L3QvtC70L7Qs9C40Y8g0LjQt9C+0LvRj9GG0LjQuCDQv9GA0L7RhtC10YHRgdC+0LIgTGludXgg0Lgg0LrQvtC90YLQtdC50L3QtdGA0YsgRG9ja2VyIDIwODxicj43LjEg0KLQtdGF0L3QvtC70L7Qs9C40LgsINGB0LLRj9C30LDQvdC90YvQtSDRgSDQstC40YDRgtGD0LDQu9C40LfQsNGG0LjQtdC5IDIwODxicj43LjIg0KLQtdGF0L3QvtC70L7Qs9C40Y8g0LjQt9C+0LvRj9GG0LjQuCDQv9GA0L7RhtC10YHRgdC+0LIgTGludXggMjA5PGJyPjcuMi4xIGNocm9vdCAyMDk8YnI+Ny4yLjIg0L/RgNC+0YHRgtGA0LDQvdGB0YLQstC+INC40LzQtdC9IDIxMDxicj43LjIuMyDQs9GA0YPQv9C/0LAgMjEyPGJyPjcuMyDQp9Cw0YHRgtC40YfQvdCw0Y8g0YDQtdCw0LvQuNC30LDRhtC40Y8gRG9ja2VyLdC60L7QvdGC0LXQudC90LXRgNCwIDIxOTxicj43LjMuMSDQndC+0LLQsNGPINCy0LXRgNGB0LjRjyDQsNGA0YXQuNGC0LXQutGC0YPRgNGLIERvY2tlciAyMjA8YnI+Ny4zLjIg0KDQtdCw0LvQuNC30LDRhtC40Y8g0LrQvtC90YLQtdC50L3QtdGA0LAgMjIxPGJyPjcuNCDQmtGA0LDRgtC60L7QtSDRgdC+0LTQtdGA0LbQsNC90LjQtSDQtNCw0L3QvdC+0Lkg0LPQu9Cw0LLRiyAyNDE8YnI+0JPQu9Cw0LLQsCA4LiDQkNC90LDQu9C40Lcg0L/QvtGC0L7QutCwINC00LDQvdC90YvRhSDRgdC10YLQtdCy0L7Qs9C+INGD0YDQvtCy0L3RjyBMaW51eCAyNDI8YnI+OC4xINCf0L7RgtC+0Log0LTQsNC90L3Ri9GFINC90LAg0YHQtdGC0LXQstC+0Lwg0YPRgNC+0LLQvdC1IDI0Mjxicj44LjEuMeOAgHNrX2J1ZmYg0YHRgtGA0YPQutGC0YPRgNCwIDI0Mzxicj44LjEuMiDQn9GA0L7RhtC10YHRgSDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFIDI0NDxicj44LjIg0KDQtdCw0LvQuNC30LDRhtC40Y8g0YPRgNC+0LLQvdGPINC40L3RgtC10YDRhNC10LnRgdCwINGB0L7QutC10YLQvtCyIDI0ODxicj44LjIuMSDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDRgdC40YHRgtC10LzRiyDRgdC+0LrQtdGC0L7QsiAyNDg8YnI+OC4yLjIg0KHQvtC30LTQsNC90LjQtSDRgdC+0LrQtdGC0LAgMjUwPGJyPjguMi4zINCf0YDQuNCy0Y/Qt9C60LAg0YHQvtC60LXRgtC+0LIgMjUxPGJyPjguMi40INCc0L7QvdC40YLQvtGA0LjQvdCzINGB0L7QutC10YLQvtCyIDI1Mzxicj44LjIuNSDQodC+0LrQtdGCINC/0YDQuNC90LjQvNCw0LXRgiDRgdC+0LXQtNC40L3QtdC90LjQtSAyNTQ8YnI+OC4yLjYg0J/QvtGP0LLQu9C10L3QuNC1INC90L7QstGL0YUg0L/QvtC00LrQu9GO0YfQtdC90LjQuSAyNTc8YnI+OC4yLjcg0J7QsdGJ0LjQuSDQv9GA0L7RhtC10YHRgSDRgdC+0LrQtdGC0LAgMjU5PGJyPjguMyDQodC10YLQtdCy0L7QuSDRhNC40LvRjNGC0YAg0LggMjYwINGD0YDQvtCy0LXQvdGMPGJyPjguMy4xINGB0LXRgtC10LLQvtC5INGE0LjQu9GM0YLRgCAyNjA8YnI+OC4zLjLjgIDRg9GA0L7QstC10L3RjCAyNjM8YnI+OC40INCd0LXQutC+0YLQvtGA0YvQtSDRgdC10YLQtdCy0YvQtSDQv9Cw0YDQsNC80LXRgtGA0YsgMjY1PGJyPjguNC4xINCf0LDRgNCw0LzQtdGC0YDRiywg0YHQstGP0LfQsNC90L3Ri9C1INGBINGB0L7QutC10YLQvtC8IEphdmEgMjY1PGJyPjguNC4yINCe0YfQtdGA0LXQtNC4LCDRgdCy0Y/Qt9Cw0L3QvdGL0LUg0YEgTGludXggVENQIDI2Nzxicj44LjUg0KHQtdGA0LLQtdGAIE5naW54INC60L7QvdGC0YDQvtC70LjRgNGD0LXRgiDQv9GA0L7RhtC10YHRgSDQuNC90LjRhtC40LDQu9C40LfQsNGG0LjQuCDRgdC+0LrQtdGC0LAgMjY4PGJyPjguNiDQmtGA0LDRgtC60L7QtSDRgdC+0LTQtdGA0LbQsNC90LjQtSDQtNCw0L3QvdC+0Lkg0LPQu9Cw0LLRiyAyNzQ8aW1nIGNsYXNzPSJkZXNjX2FuY2hvciIgaWQ9ImRlc2MtbW9kdWxlLTMiIHNyYz0iaHR0cHM6Ly9hc3NldHMuYWxpY2RuLmNvbS9raXNzeS8xLjAuMC9idWlsZC9pbWdsYXp5bG9hZC9zcGFjZWJhbGwuZ2lmIj4uLi4uLi48aW1nIGNsYXNzPSJkZXNjX2FuY2hvciIgaWQ9ImRlc2MtbW9kdWxlLTQiIHNyYz0iaHR0cHM6Ly9hc3NldHMuYWxpY2RuLmNvbS9raXNzeS8xLjAuMC9idWlsZC9pbWdsYXp5bG9hZC9zcGFjZWJhbGwuZ2lmIj7QrdGC0LAg0LrQvdC40LPQsCDQu9C40YfQvdC+INGB0L7Qt9C00LDQvdCwINCw0YDRhdC40YLQtdC60YLQvtGA0L7QvCwg0LrQvtGC0L7RgNGL0Lkg0LTQtdC70LjRgtGB0Y8g0YHQstC+0LjQvCDQsdC+0LvQtdC1INGH0LXQvCDQtNC10YHRj9GC0LjQu9C10YLQvdC40Lwg0L7Qv9GL0YLQvtC8INCy0L3Rg9GC0YDQtdC90L3QtdC5INGA0LDQt9GA0LDQsdC+0YLQutC4LCDQvtGB0L7QsdC10L3QvdC+INC+0L/Ri9GC0L7QvCDRgNCw0LfRgNCw0LHQvtGC0LrQuCDRgdC10YDQstC40YHQvtCyINC00LvRjyDRgdC40YHRgtC10LwgTGludXguINCS0YHQtdCz0L4g0LIg0Y3RgtC+0Lkg0LrQvdC40LPQtSA4INCz0LvQsNCyLiDQntGB0L3QvtCy0L3QvtC1INGB0L7QtNC10YDQttCw0L3QuNC1INCy0LrQu9GO0YfQsNC10YIg0LIg0YHQtdCx0Y86INCT0LvQsNCy0LAgMSDQt9C90LDQutC+0LzQuNGCINGBINC/0YDQuNC90YbQuNC/0LDQvNC4INGA0LXQsNC70LjQt9Cw0YbQuNC4INC/0YDQvtGG0LXRgdGB0L7QsiDQuCDQv9C+0YLQvtC60L7QsiDQsiBMaW51eCDQuCDQsNC90LDQu9C40LfQuNGA0YPQtdGCINGA0LXQsNC70LjQt9Cw0YbQuNGOINC80L7QtNC10LvQtdC5INC/0YPQu9CwINGA0LDQsdC+0YfQuNGFINC/0YDQvtGG0LXRgdGB0L7QsiBNZW1jYWNoZWQg0LggTmdpbng7INCSINCz0LvQsNCy0LUgMiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LAg4oCL4oCL0LrQvtC90YbQtdC/0YbQuNGPINC/0LDRgNCw0LvQu9C10LvQuNC30LzQsCDQuCDQuNC90YHRgtGA0YPQvNC10L3RgtC+0LIsINGB0LLRj9C30LDQvdC90YvRhSDRgSDQv9Cw0YDQsNC70LvQtdC70LjQt9C80L7QvCwg0LIgTGludXgsINCwINC30LDRgtC10Lwg0LDQvdCw0LvQuNC30LjRgNGD0Y7RgtGB0Y8g0L/RgNC+0LHQu9C10LzRiyDQv9Cw0YDQsNC70LvQtdC70LjQt9C80LAg0LIg0YDQsNGB0L/RgNC+0YHRgtGA0LDQvdC10L3QvdC+0Lwg0L/RgNC+0LPRgNCw0LzQvNC90L7QvCDQvtCx0LXRgdC/0LXRh9C10L3QuNC4INGBINC+0YLQutGA0YvRgtGL0Lwg0LjRgdGF0L7QtNC90YvQvCDQutC+0LTQvtC8OyDQkiDQs9C70LDQstC1IDMg0YDQsNGB0YHQutCw0LfRi9Cy0LDQtdGC0YHRjywg0LrQsNC6IExpbnV4INC+0YHRg9GJ0LXRgdGC0LLQu9GP0LXRgiDRg9C/0YDQsNCy0LvQtdC90LjQtSDQv9Cw0LzRj9GC0YzRjiwg0Lgg0LDQvdCw0LvQuNC30LjRgNGD0Y7RgtGB0Y8g0LzQtdGF0LDQvdC40LfQvNGLINGD0L/RgNCw0LLQu9C10L3QuNGPINC/0LDQvNGP0YLRjNGOIE1lbWNhY2hlZCDQuCBSZWRpcy4g0JPQu9Cw0LLQsCA0INC30L3QsNC60L7QvNC40YIg0YEg0LjQvdC60LDQv9GB0YPQu9GP0YbQuNC10Lkg0Lgg0YDQtdCw0LvQuNC30LDRhtC40LXQuSDQv9GA0LXRgNGL0LLQsNC90LjQuSDQsiDRgdC40YHRgtC10LzQtSBMaW51eDsg0JPQu9Cw0LLQsCA1INC30L3QsNC60L7QvNC40YIg0YHQviDQstGB0LXQvCDQv9GA0L7RhtC10YHRgdC+0Lwg0LLQstC+0LTQsC3QstGL0LLQvtC00LAsINCwINGC0LDQutC20LUg0YEg0YDQtdCw0LvQuNC30LDRhtC40LXQuSDQstGL0LfQvtCy0L7Qsiwg0YHQstGP0LfQsNC90L3Ri9GFINGBINCy0LLQvtC00L7QvC3QstGL0LLQvtC00L7QvCwg0LIg0L3QtdC60L7RgtC+0YDRi9GFINGB0LjRgdGC0LXQvNCw0YUg0YEg0L7RgtC60YDRi9GC0YvQvCDQuNGB0YXQvtC00L3Ri9C8INC60L7QtNC+0Lw70JIg0LPQu9Cw0LLQtSA2INC/0YDQtdC00YHRgtCw0LLQu9C10L3QsCDigIvigIvQvtCx0YnQsNGPINCw0YDRhdC40YLQtdC60YLRg9GA0LAg0Lgg0L7RgdC90L7QstC90YvQtSDQutC+0L3RhtC10L/RhtC40Lgg0YTQsNC50LvQvtCy0L7QuSDRgdC40YHRgtC10LzRiyBMaW51eCwg0LAg0LfQsNGC0LXQvCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90Ysg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40LrQuCDRhNCw0LnQu9C+0LLQvtC5INGB0LjRgdGC0LXQvNGLIGV4dDQg0Lgg0L3QtdCx0L7Qu9GM0YjQvtC5INGE0LDQudC70L7QstC+0Lkg0YHQuNGB0YLQtdC80YsgVEZTLiDQmNC00LXQuCDQv9GA0L7QtdC60YLQuNGA0L7QstCw0L3QuNGPINGB0LjRgdGC0LXQvNGLOyDQkiDQs9C70LDQstC1IDcg0L/RgNC10LTRgdGC0LDQstC70LXQvdCwIOKAi+KAi9GC0LXRhdC90L7Qu9C+0LPQuNGPINC40LfQvtC70Y/RhtC40Lgg0L/RgNC+0YbQtdGB0YHQvtCyIExpbnV4INC4INGH0LDRgdGC0LjRh9C90LDRjyDRgNC10LDQu9C40LfQsNGG0LjRjyDQutC+0L3RgtC10LnQvdC10YDQvtCyIERvY2tlcjvQkiDQs9C70LDQstC1IDgg0L7Qv9C40YHRi9Cy0LDQtdGC0YHRjyDQv9GA0L7RhtC10YHRgSDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFINGB0LXRgtC10LLQvtCz0L4g0YPRgNC+0LLQvdGPIExpbnV4LCDQsCDRgtCw0LrQttC1INGB0L/QvtGB0L7QsdGLINC90LDRgdGC0YDQvtC50LrQuCBsdnMg0LIgbmV0ZmlsdGVyINC4LCDQvdCw0LrQvtC90LXRhiwg0LDQvdCw0LvQuNC30LjRgNGD0LXRgtGB0Y8g0L/RgNC+0YbQtdGB0YEg0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40Lgg0L/RgNC+0YHQu9GD0YjQuNCy0LDQvdC40Y8g0YHQvtC60LXRgtC+0LIg0YHQtdGA0LLQtdGA0LAgTmdpbnguPGltZyBjbGFzcz0iZGVzY19hbmNob3IiIGlkPSJkZXNjLW1vZHVsZS01IiBzcmM9Imh0dHBzOi8vYXNzZXRzLmFsaWNkbi5jb20va2lzc3kvMS4wLjAvYnVpbGQvaW1nbGF6eWxvYWQvc3BhY2ViYWxsLmdpZiI+Li4uLi4uPGltZyBjbGFzcz0iZGVzY19hbmNob3IiIGlkPSJkZXNjLW1vZHVsZS02IiBzcmM9Imh0dHBzOi8vYXNzZXRzLmFsaWNkbi5jb20va2lzc3kvMS4wLjAvYnVpbGQvaW1nbGF6eWxvYWQvc3BhY2ViYWxsLmdpZiI+0KfRjdC90Ywg0JrRjSDRgNCw0LHQvtGC0LDQuyDQsNGA0YXQuNGC0LXQutGC0L7RgNC+0LwsINGC0LXRhdC90LjRh9C10YHQutC40Lwg0LTQuNGA0LXQutGC0L7RgNC+0Lwg0Lgg0LfQsNC90LjQvNCw0Lsg0LTRgNGD0LPQuNC1INC00L7Qu9C20L3QvtGB0YLQuCDQstC+INC80L3QvtCz0LjRhSDQuNC30LLQtdGB0YLQvdGL0YUg0LjQvdGC0LXRgNC90LXRgi3QutC+0LzQv9Cw0L3QuNGP0YUsINGC0LDQutC40YUg0LrQsNC6IEFsaWJhYmEuINCe0L0g0YPRh9Cw0YHRgtCy0L7QstCw0Lsg0LIg0L/RgNC+0LXQutGC0LjRgNC+0LLQsNC90LjQuCDQuCDRgNCw0LfRgNCw0LHQvtGC0LrQtSDQvNC90L7QttC10YHRgtCy0LAg0LjQvdGC0LXRgNC90LXRgi3RgdC40YHRgtC10LwsINC+0LHQtdGB0L/QtdGH0LjQstCw0Y7RidC40YUg0LLRi9GB0L7QutC40Lkg0YPRgNC+0LLQtdC90Ywg0L/QsNGA0LDQu9C70LXQu9C40LfQvNCwINC4INCy0YvRgdC+0LrRg9GOINC00L7RgdGC0YPQv9C90L7RgdGC0Ywu0J7QvSDQv9GA0L7QstC+0LTQuNGCINCz0LvRg9Cx0L7QutC40LUg0LjRgdGB0LvQtdC00L7QstCw0L3QuNGPINGB0LjRgdGC0LXQvCBMaW51eCDQuCDQv9GA0L7Qs9GA0LDQvNC80L3QvtCz0L4g0L7QsdC10YHQv9C10YfQtdC90LjRjyDRgSDQvtGC0LrRgNGL0YLRi9C8INC40YHRhdC+0LTQvdGL0Lwg0LrQvtC00L7QvCwg0YHQstGP0LfQsNC90L3QvtCz0L4g0YEg0Y3QutC+0YHQuNGB0YLQtdC80L7QuSBMaW51eC4g0J7QvSDQu9GO0LHQuNGCINC00LXQu9C40YLRjNGB0Y8g0Lgg0LTQtdC70LjQu9GB0Y8g0YLQtdC80LDQvNC4INC90LAg0LrQvtC90YTQtdGA0LXQvdGG0LjRj9GFINC40LvQuCDQtNC40YHQutGD0YHRgdC40L7QvdC90YvRhSDQs9GA0YPQv9C/0LDRhSwg0L7RgNCz0LDQvdC40LfQvtCy0LDQvdC90YvRhSBVUFlVTiwgREJBKywg0LPRgNGD0L/Qv9Cw0LzQuCDQsNGA0YXQuNGC0LXQutGC0YPRgNGLINCy0YvRgdC+0LrQvtC5INC00L7RgdGC0YPQv9C90L7RgdGC0Lgg0Lgg0YIuwqDQtC48L3A+
Продавец:当当网官方旗舰店
Рейтинг:

Всего отзывов:0
Положительных:0
Добавить в корзину
- Информация о товаре
- Фотографии
В этой книге рассказывается о проектировании ядра и реализации операционной системы Linux в модулях, уделяя особое внимание ключевым понятиям, алгоритмам и структурам данных.В то же время он анализирует многие классические приложения, такие как Nginx, Memcached, Redis, LVS и т. д., и объясняет, как использовать базовую поддержку, предоставляемую операционной системой, для разумного проектирования и реализации приложений.
Основная информация
| Название продукта: | Анализ и применение ядра Linux | формат: | 16 |
| Автор: | Чен К. | Цены: | 79.00 |
| Номер ISBN: | 9787111604082 | Время публикации: | 2018-07-31 |
| Издательство: | Машиностроительная промышленность Пресса | Время печати: | 2018-07-20 |
| Издание: | 1 | Время печати: | 1 |
Предисловие
Глава 1. Процессы и потоки 1.
1.1 Понятия процессов и потоков 1
1.1.1 История процесса 1
1.1.2 Различные способы воспроизведения тредов 3
1.2 Реализация процессов и потоков в Linux 5
1.2.1 Реализация процесса в Linux 6
1.2.2 После создания процесса 12
1.2.3 Разница между потоками ядра и процессами 13
1.2.4 Библиотека пользовательских потоков pthread 15
1.3 Планирование процессов 16
1.3.1 Архитектура механизма планирования процессов 16
1.3.2 Принцип переключения процессов 19
1.3.3 Привязка ЦП при планировании 21
1.4 Управление процессами и потоками в приложениях 22
1.4.1 Анализ модели пула потоков Memcached 22
1.4.2 Анализ модели процесса Nginx 24
1.5 Сопутствующие инструменты для работы с процессами и потоками 25
1.5.1 Поток отладки среды разработки 25
1.5.2 Метод отладки сбоя процесса 26
1.5.3 инструмент трассировки 28
1.5.4 Инструмент SystemTap 29
1.5.5 Инструмент DTrace 30
1.6 Краткое содержание этой главы 32
Глава 2 Параллелизм 33
2.1 Что такое параллелизм 34
2.1.1 Как возникает параллелизм 34
2.1.2 Какие проблемы принесет параллелизм 34
2.1.3 Как решить проблемы, вызванные параллелизмом 35
2.2 В каких сценариях операционная система столкнется с параллелизмом 35
2.3 Реализация инструментов параллелизма в Linux 37
2.3.1 Атомарные переменные 37
2.3.2 Спин-блокировка 38
2.3.3 Семафор 42
2.3.4 Блокировка мьютекса 43
2.3.5 Блокировка чтения-записи 43
2.3.6 Упреждение 44
2.3.7 Переменные для каждого процессора 45
2.3.8 Механизм RCU 48
2.3.9 Барьер памяти 51
2.4 Анализ проблем параллелизма в распространенном программном обеспечении с открытым исходным кодом 54
2.4.1 Атомарность Nginx 54
2.4.2 Блокировки мьютексов в Memcached 55
2.4.3 Решение без блокировки Redis 56
2.4.4 Анализ проблемы громовой группы в Linux 57
2.4.5 Решение проблем с синхронизацией MyCat 65
2.4.6 Решения проблем с ложным распространением 67
2.5 Краткое содержание этой главы 69
Глава 3 Управление памятью 70
3.1 Зачем необходимо управление памятью 71
3.2 MMU и адресное пространство 73
3.2.1 Виртуальный адрес, линейный адрес, физический адрес 73
3.2.2 Механизм управления памятью MMU 74
3.3 Механизм сегментации и пейджинга в Linux 79
3.3.1 Механизм сегментации 79
3.3.2 Механизм пейджинга 80
3.4 Управление памятью Linux 82
3.4.1 Управление физической памятью 83
3.4.2 Управление адресным пространством процесса 86
3.5 Распределение памяти и управление ею в Linux 89
3.5.1 Алгоритм выделения физической памяти 89
3.5.2 распределитель плит 95
3.5.3 Управление памятью состояния ядра 105
3.5.4 Приложение памяти пользовательского режима 109
3.6 Распределение и управление стековой памятью 109
3.7 Анализ случая управления памятью 110
3.7.1 Анализ механизма управления памятью Memcached 110
3.7.2 Анализ механизма управления памятью Redis 113
3.8 Краткое содержание этой главы 115
Глава 4. Механизм прерывания 116
4.1 Механизм прерываний системы x86 116
4.1.1 Архитектура прерываний x86 117
4.1.2 Прерывания x86 в защищенном режиме 117
4.2 Поддержка Linux и реализация прерываний 119
4.2.1 Инициализация шлюза прерывания IRQ 120
4.2.2 Процесс реагирования на прерывание 120
4.2.3 Прерывание процесса регистрации обработчика обратного вызова 122
4.3 Механизм Linux для ускорения обработки прерываний 122
4.3.1 Программное прерывание 122
4.3.2 Тасклет 126
4.3.3 Рабочая очередь 128
4.4 Системные вызовы 132
4.5 Прерывание часов 134
4.6 Механизм обработки сигналов 135
4.7 Механизм обработки сигналов Nginx 139
4.8 Краткое содержание этой главы 141
Глава 5. Ввод и вывод 142
5.1 Жизненный цикл ввода-вывода в Linux 143
5.1.1 уровень vfs 143
5.1.2 Уровень файловой системы 144
5.1.3 Слой блока 152
5.1.4 слой scsi 156
5.1.5 Краткое описание процесса ввода-вывода 157
5.2 Планировщик ввода-вывода 159
5.3 Механизм многоочередности 161
5.4 Реализация мультиплексирования ввода-вывода 163
5.5 Инкапсуляция epoll 170 в Redis
5.6 Асинхронный файловый ввод-вывод Nginx 175
5.7 Чем хороша команда Tail? 177
5.8 Анализ применения технологии нулевого копирования 179
5.8.1 ммап 180
5.8.2 Отправить файл 181
5.8.3 Использование mmap и sendfile в программном обеспечении с открытым исходным кодом 183
5.9 Краткое содержание этой главы 186
Глава 6 Файловая система 187
6.1 Архитектура файловой системы Linux 187
6.2 Основные функции файловой системы 189
6.2.1 Установка файловой системы 190
6.2.2 Поиск пути к файлу 191
6.3 файловая система ext4 201
6.3.1 Структура диска 201
6.3.2 позиционирование индексного дескриптора 203
6.3.3 Решения проблемы фрагментации 204
6.3.4 древовидная структура экстента 204
6.4 Анализ небольшой файловой системы Taobao TFS 206
6.5 Краткое содержание данной главы 207
Глава 7. Технология изоляции процессов Linux и контейнеры Docker 208
7.1 Технологии, связанные с виртуализацией 208
7.2 Технология изоляции процессов Linux 209
7.2.1 chroot 209
7.2.2 пространство имен 210
7.2.3 группа 212
7.3 Частичная реализация Docker-контейнера 219
7.3.1 Новая версия архитектуры Docker 220
7.3.2 Реализация контейнера 221
7.4 Краткое содержание данной главы 241
Глава 8. Анализ потока данных сетевого уровня Linux 242
8.1 Поток данных на сетевом уровне 242
8.1.1 sk_buff структура 243
8.1.2 Процесс потока данных 244
8.2 Реализация уровня интерфейса сокетов 248
8.2.1 Инициализация системы сокетов 248
8.2.2 Создание сокета 250
8.2.3 Привязка сокетов 251
8.2.4 Мониторинг сокетов 253
8.2.5 Сокет принимает соединение 254
8.2.6 Появление новых подключений 257
8.2.7 Общий процесс сокета 259
8.3 Сетевой фильтр и 260 уровень
8.3.1 сетевой фильтр 260
8.3.2 уровень 263
8.4 Некоторые сетевые параметры 265
8.4.1 Параметры, связанные с сокетом Java 265
8.4.2 Очереди, связанные с Linux TCP 267
8.5 Сервер Nginx контролирует процесс инициализации сокета 268
8.6 Краткое содержание данной главы 274
......
Эта книга лично создана архитектором, который делится своим более чем десятилетним опытом внутренней разработки, особенно опытом разработки сервисов для систем Linux. Всего в этой книге 8 глав. Основное содержание включает в себя: Глава 1 знакомит с принципами реализации процессов и потоков в Linux и анализирует реализацию моделей пула рабочих процессов Memcached и Nginx; В главе 2 представлена концепция параллелизма и инструментов, связанных с параллелизмом, в Linux, а затем анализируются проблемы параллелизма в распространенном программном обеспечении с открытым исходным кодом; В главе 3 рассказывается, как Linux осуществляет управление памятью, и анализируются механизмы управления памятью Memcached и Redis. Глава 4 знакомит с инкапсуляцией и реализацией прерываний в системе Linux; Глава 5 знакомит со всем процессом ввода-вывода, а также с реализацией вызовов, связанных с вводом-выводом, в некоторых системах с открытым исходным кодом;В главе 6 представлена общая архитектура и основные концепции файловой системы Linux, а затем представлены характеристики файловой системы ext4 и небольшой файловой системы TFS. Идеи проектирования системы; В главе 7 представлена технология изоляции процессов Linux и частичная реализация контейнеров Docker;В главе 8 описывается процесс потока данных сетевого уровня Linux, а также способы настройки lvs в netfilter и, наконец, анализируется процесс инициализации прослушивания сокетов сервера Nginx.
......
Чэнь Кэ работал архитектором, техническим директором и занимал другие должности во многих известных интернет-компаниях, таких как Alibaba. Он участвовал в проектировании и разработке множества интернет-систем, обеспечивающих высокий уровень параллелизма и высокую доступность.Он проводит глубокие исследования систем Linux и программного обеспечения с открытым исходным кодом, связанного с экосистемой Linux. Он любит делиться и делился темами на конференциях или дискуссионных группах, организованных UPYUN, DBA+, группами архитектуры высокой доступности и т. д.

