Hardcoded Neural Network does not work as expected
-
@Dan-Korneff Thanks, Dan! Let me know if it will work on your end.
-
Ok. Finally getting around to exporting a node.... instant crash in my DAW.
I ran into the same issues as @Gabor-K with the exception when trying to parse auto shape = parent.at("in_shape");
My model has this parameter listed as NULL:"in_shape": [ null, null, 1 ],
I'm assuming this model is correct since it works in HISE and other models on the net have this value as NULL.
Here's the trace:> RTNeural Debug.vst3!nlohmann::json_v3_11_1::basic_json<std::map,std::vector,std::string,bool,__int64,unsigned __int64,double,std::allocator,nlohmann::json_v3_11_1::adl_serializer,std::vector<unsigned char,std::allocator<unsigned char>>>::at<char const (&)[9],0>(const char[9] & key) Line 21109 C++ RTNeural Debug.vst3!RTNeural::json_parser::parseJson<float>(const nlohmann::json_v3_11_1::basic_json<std::map,std::vector,std::string,bool,__int64,unsigned __int64,double,std::allocator,nlohmann::json_v3_11_1::adl_serializer,std::vector<unsigned char,std::allocator<unsigned char>>> & parent, const bool debug) Line 608 C++ RTNeural Debug.vst3!hise::TensorFlowModel::TensorFlowModel(const juce::var & obj) Line 326 C++ RTNeural Debug.vst3!hise::NeuralNetwork::loadTensorFlowModel(const juce::var & jsonData) Line 624 C++ RTNeural Debug.vst3!hise::ScriptingObjects::ScriptNeuralNetwork::loadTensorFlowModel(const juce::var & modelJSON) Line 5209 C++ RTNeural Debug.vst3!hise::ScriptingObjects::ScriptNeuralNetwork::Wrapper::loadTensorFlowModel(hise::ApiClass * m, juce::var value1) Line 4991 C++ RTNeural Debug.vst3!hise::ApiClass::callFunction(int index, juce::var * args, int numArgs) Line 331 C++ RTNeural Debug.vst3!hise::HiseJavascriptEngine::RootObject::FunctionCall::getResult(const hise::HiseJavascriptEngine::RootObject::Scope & s) Line 336 C++ RTNeural Debug.vst3!hise::HiseJavascriptEngine::RootObject::Expression::perform(const hise::HiseJavascriptEngine::RootObject::Scope & s, juce::var * __formal) Line 657 C++ RTNeural Debug.vst3!hise::HiseJavascriptEngine::RootObject::BlockStatement::performWithinScope(const hise::HiseJavascriptEngine::RootObject::Scope & s, juce::var * returnedValue) Line 537 C++ RTNeural Debug.vst3!hise::HiseJavascriptEngine::RootObject::BlockStatement::perform(const hise::HiseJavascriptEngine::RootObject::Scope & s, juce::var * returnedValue) Line 548 C++ RTNeural Debug.vst3!hise::HiseJavascriptEngine::RootObject::execute(const juce::String & code, bool allowConstDeclarations) Line 2745 C++ RTNeural Debug.vst3!hise::HiseJavascriptEngine::execute(const juce::String & javascriptCode, bool allowConstDeclarations, const juce::Identifier & callbackId) Line 815 C++ RTNeural Debug.vst3!hise::JavascriptProcessor::compileInternal() Line 1398 C++ RTNeural Debug.vst3!hise::JavascriptProcessor::compileScript::__l2::<lambda>(hise::Processor * p) Line 1489 C++ [External Code] RTNeural Debug.vst3!hise::MainController::KillStateHandler::killVoicesAndCall(hise::Processor * p, const std::function<enum hise::SafeFunctionCall::Status __cdecl(hise::Processor *)> & functionToExecuteWhenKilled, hise::MainController::KillStateHandler::TargetThread targetThread) Line 417 C++ RTNeural Debug.vst3!hise::JavascriptProcessor::compileScript(const std::function<void __cdecl(hise::JavascriptProcessor::SnippetResult const &)> & rf) Line 1511 C++ RTNeural Debug.vst3!hise::ModulatorSynthChain::compileAllScripts() Line 239 C++ RTNeural Debug.vst3!hise::FrontendProcessor::createPreset(const juce::ValueTree & synthData) Line 429 C++ RTNeural Debug.vst3!hise::FrontendProcessor::FrontendProcessor(juce::ValueTree & synthData, juce::AudioDeviceManager * manager, juce::AudioProcessorPlayer * callback_, juce::MemoryInputStream * imageData, juce::MemoryInputStream * impulseData, juce::MemoryInputStream * sampleMapData, juce::MemoryInputStream * midiFileData, juce::ValueTree * externalFiles, juce::ValueTree * __formal) Line 363 C++ RTNeural Debug.vst3!hise::FrontendFactory::createPluginWithAudioFiles(juce::AudioDeviceManager * deviceManager, juce::AudioProcessorPlayer * callback) Line 69 C++ RTNeural Debug.vst3!createPluginFilter() Line 23 C++ RTNeural Debug.vst3!juce::createPluginFilterOfType(juce::AudioProcessor::WrapperType type) Line 39 C++ RTNeural Debug.vst3!juce::JuceVST3Component::JuceVST3Component(Steinberg::Vst::IHostApplication * h) Line 2210 C++ RTNeural Debug.vst3!juce::createComponentInstance(Steinberg::Vst::IHostApplication * host) Line 3677 C++ RTNeural Debug.vst3!juce::JucePluginFactory::createInstance(const char * cid, const char * sourceIid, void * * obj) Line 3813 C++
I guess this happens cause HISE doesn't embed the external script? @Christoph-Hart can you confirm?
@Gabor-K Once I add the content of my model as a parameter like you did, everything appears to be working.
If you want to give it a try, here's the model that I'm testing:
-
If anyone wants to start learning about RTneural, here's a snip that contains a model of the ProCo Rat pedal:
HiseSnippet 20992.3oc6810imccdcmUKp1Rh1dlDj.ja4vqjAnXN6226XXXY8VFgQThPjQSBBLLJ0cQwBpYWDcWTxLF494qPta9ZL24OR4avLqeO+qlc2h7+dQqoRPvfoSfEqpN0oN+2m89400yZ89O6lGc0ye9MO6hG7c9vO+Su5hG7m8vO3ye5se7O7iu75mdwO8GcwCdyG9K+ve9Ue1yt7IW7C97O8xm+7qd7EO3Auw+V94O367MuH92+0+5evkO4xm9nqd425hK9U2b8it5mc8mb8su7699e++2t9IO4mb4iu5Cu9Sdkqt98+oO5lm9Cu4I27Y5Y4Md3wEe5kO52d4u4pe9kbYeiGdwC9S9wO95au4YevsWd6UO+hG7M+A273O+C93a98O8z0+qt94W+qexU7EoK9.ciN8s+I27jGySLe2K9ge70O4wu+K9L+7Kzc48e4JvabZE3e4Ceuqe70ew2+kqD+yheva8xeiWc83AeiW+w6MdsGuzq93c7JOdeEORO3Udj9lmdj9m+vO3QO65O81W9S344O8g+zmd6UO6itTK6u5ixoq8h23c9QO3g+vazk7zae2O4xe6U+jmou3K9U9t8ii24sz+m+h+x27M0Z+yu8sdue1mbyiu5Iu0e0a8O7luk92ae8S+6d9Ge4md0a+u4s9OFeG92S+rm7j24LeUJ9u9aO8Md6mb4me0yd9q8K+O7E+WwUb6mG2729IO+1O4semW+mc4it85e2k2d8MOkq3O7m9ket9peh1+cyGu125u8O3Oxu+pq+Me7sO+q7OyW96b9uK+66c7tGkUtTGqY8H0V0T+c1c04dt1x4Zczl8i1ZyUe7ty0QZpKO0GszwZs6ZSkYstJiiYOczzCztK9n2F0xnsxiZclGkcWbNmFqbpj58boOG6uy4wPOtY8aLJ4Qps8CXdpqMsFoiYV2451qM0Si9fG21n0mau3RtcTOJ0iZtz1eooZN0Z0kdB547QZ6qui7pNzMMUFrdm1sLykenGidq0FirdRzh81OgG5faunG67penm68uUpGsQOUmGkh9Lr+khVaSixPqccsuqs888QYrzF4wT+Os7rl19XzyiiUaNlo3SnY4nmV5QdoCASciyqsWdR6+mq0TapSCcVor8pG5Ey7PuQz6whd12u+uVV04ZNR4dQuiN+EmdWsWt06Is+b1zG08qzMssuLKozgd2zq411qNMz67RoUq5by7X+6kj1Tu5q0pdzmo5tsGrVOa8iZSux0C+w3nue8XoscsiVJqUOYFa+9CYynMJU8njvt29S37Zt0z0ps+ks2XttZIos+ZuzpX1bn2wZcanih85Z3Vm05VKw0ejMKyG5SmLMOl8o19mOLKyIcCWxhfVoWklrPt2ViNhmq8UsVko28Kyozb1X0qO65guaVmO57.26qCYo7XuWnCsk93HkKSYbrk1+JjMGU8pqvowg7Ds8VuzVzVQO0itN3l1usaVkIwp7VUzqHsBd9KN+tyRWaPJxH8bjkEuc2XsyWGsWyoV7ZGyoYmTopGDYXT2X8aV2e0st1fpKWqwEVr2ejUN1lM8bu5krwA2w.WlxBoBhPQTr+PXQVZjke4Ibsxa8vom4VtkOFUtT8Xu2Bl1ymlI8.mzle44e+MVGmj8bsQMszF5lwhTIul53hr9NKGi49McJPhCYBSFSGKsqd+sFK4Irun210xbqKq9Xpm2rLqO3HvduJE44NujIukdrMNNmyhNKUVxR97vsXnWeZy7XHic5xy62Yn6ltNEo4p14IZ+FZcPUduayTRwOdrx6eRvpqr6mzakjr6sOhTE0QgfZT3OGiQYsOvQEKSi.TNZxgQqXVQjcCYKPFSakb4HuOZ2YuWkwVs0P1kl6uyJl.EIn7Wn.i0YKS.rccma8ZUGTjivwdCoJ1NcxhfoUH54R1b.Pa90sOqjDj66TwDpYQqEXuSwtISz68rncQy4pMV3pifv2uCIqcdx2sdv0Yq59GjDGEU3IxlfL9m16fqKiRGGJIjgdxMAgUjo.cjUWormJqoFGsZ2TVVNVkDAyt2A.d.0Qrd3NrsO5XEKphCKIqB5s9XYhTRQ8HmEJ+iFI2nykekW7e6W56929N2KIaJaEJWL8mszORKWHREEbohKtqPHFaMdE1PaEk6He3jmyQs6dOqTZhbJTrOlnMzQUYVVwp0Tn70ism+zYzAwOSN0J3bW9XEseSIFlvekhMoXhQJcTwnn9m7rr8wfCRxMgxoubbrO7RkQuBjRtcx5wQ24lIaZ8zpHXjOYEcRs497oTtIYLY7Wa62Glq96qTeZXTTFy6ysWsN+qjYk8YxtWgqseqjhdnIm2Jz.E75gyfgBfI0zaQsZq8flMGJEBclV4XkWojoHGU9noWfJgod9nt2daRIeTvDvP6UU986C3HQTnJPhiAeDKi8gTor+6gsSYVpISi6OrjUzI5dqWl4CSHw5TxQVI5IicoxZ+yblzZ5IEEn100WtXjjaD4+VwyL6TAJi414XzKJ1jFgw2bWdQISqDjKDLwPaP1GEQknRT1RZW0vZESGCOV5TqVMpKyqbtw0tLbrj2yp4NKCiy7fsQTFLyYb4f+.yRxSgRFJMc9tWopN3JKoILBuOKnYUm.00qHR0B99BLn0V8zpz5U9aK8tbercGj.jrQO5ZIwX8fJbjx3SSFUMQarHyJ8JWVQIyPi8.Y4.W7knND6WLjUWEKfBNQqwXVZWgYTdwJ6CEFpBxsZLyHCRxrAqE5YHObamaxZgxDanDUZZO8buQIEnlLvz4bHQ5ZR4UgFoPNHEV8bu8NO5xPfhNQwjPov1ahVGN5J8iEATQob1uMR+kkGKk4aD1Zxj+gNrJO.0UTdHsdahjPIzqjjo3gqtLlse0S2yjBKVwuJaiqCSlr5dRIt0hcGCH6epKZmgbNqjlNvwgo1jYYetKKBUYPmJNt+XnLKlkmELSqHdM0LfJwoHz0t+j1qLcwznGkCYjQICwal8KeSk8u1mTZxQvZePwEkozwjG7l1R6JM4j24wqasDV2dnsp6pdZyr3sTJBlp.K2DZChhjXp0u0dKMxxemxQ2pzi.EhkYoSYHqUXEfU5zK+sqGZOsLipsQjae17fH6yT4B1gbLwT19c0KV0Hn2jNdkLmt3Ht7fJy4soRsX6ctwqQckUp7X1EJlNKp7BSxl2DOnlCLQo.z00p7bTMN4TFCjG9ZonB06njw0rdUKaXJX8V8Xs2JoRAnxGRLNPxd6MkM04uDkwTq0r8a+igdOt3PtL+REibdMnjfccDSOyq88I6PgSnzEzQQRwuadyjivITxbxed2UEpTjYwj5WWoHIku5jNem+omPo1DsTp8JCmbSd51aGKyCgBSWlQzaRSUnzAJYmgZnqOoJojsUNSgpOzAf0hpFzcUQgpfcPUtNZ819PuIPZkhwAkDojM9laDHs16ezHCijoTXxUThfCzehdsruNvZKDNvoCs3uauwTE6H9Wz0qT8Sl7PNzI7dUwaRFWlZyqqRKXZ0ntnTJFGhTiktVIh7szx3Xe8nUJYKNFRMdObYKvQPYuixynbXLowUUPdxHCa9qygqLQ57gx0ZrhTPUFZlfllc8BmLqa1Z1lj2Ppx1nePKqG6SymBYpDnTl6cWxVIRUoSqvIjkwXe4pj66nQ35UYQlab0Ydo7C408fCBl9BknBPKZipBSXauMhBGGOy4Zli3Glx4qzfV530rTUxElZ8I+Dc4jqF8sPQraJf8fd6slzpmw1acDa0jddoM02YIcysNwF0LVapGJn2owAGghQsD0ybZHiBllp0RMsnrHH7oyvK6kU5ExZpVFkCizdadYZxdOqDth9vY5yhhcSwHToYY48QtoSV.IkFqh5Lf4TKHXPVbnYVJgNiYL4yTu8T3aJJujocVTMbYZTAP1kOiZ20WAxNSuHGxxmRBNu2p9XQSbV3fKk22p.kXepq8PDPQqatuGTEwgNSoUttoPdYJ4QzhcE.oqCzsoxXmCVGipMHLEs6rSIlTFTJQfhs+k5QQoiH+97K12uUZLkwFEdfBQXPBAlxQ0oEX5AR1ZxtBYjT.0T6+N4pZaGXWlOzYqAsUPAfLLsYuRg+JzyNdR1uaRgMtFzYx5HRVb+mQ5VgrQlS.2jVeY5xWE7WP+pWGqrAgSfJkD8DQoAmxMiawDw3giiIKMi86nzknDbR5Mjx2JUSlh6Lq5nH.DSaDStdsqTEGxhdT29byzvrLUrmbn3nKfJaO.fzFZYnVldoEdlH6OTBnx1woZnsn78aiIiHazgfhLSpCYlvDTBc8njdqRQYxzbMXltbKOF5kY1rwNqblk+hlh1Rokj2+Pqc15n6nGkFXn.V150P1ZTTpYYEVYwX5XFH5QVH0x2jFtaBpfJwJ2gfKvkrEeX7wfkTZZGgIjLkgLpllV4T7aJ5y8EVTdKnojjM.Mqs41dDomEQmpzAL95XQtpiJMEXcu1sYQ0ItFRbP1Jc8tFKvSJ6KIaa5qKURSeD0Agi9Wi9zPoiJIveFs4pc+jTIcWNpbEwD1butUN3EhpgX12V9pDmqNHiqAU32UwMBfrh07FFUMQxp7aTHaKL.SraCa7GCpOHs+TmYml7nhmCf9BO3t3uU.JGjGmhnfnOL6M5zFXvclB1L6LyrJ4bQ9aI6gsdD0sRwLMoCWxMTdeMzTB1fZUY6Uqeq995YqMDJfIEiPZNTnxiU2jaaBO3.hE.WpYmTl5BHycf7EJ+895BT.3fkRsB1J7GAkEoC4bSmuR6KmsBFTOpS.VshYeeMBkc79Qk.NqSGDthZNpT3zZRgpLsOlFRSPeBa5QPwM02CGpNlP0qCBTwDXp9w.XCE7SbDee82oYRk.+h.mLCHrkmslh8Qoqj8c8WGMjmdsNC.OjMWSl3DVPKBRJf529npnRQZEICb9StG5wT65p.zk5p6NUoDw0IOclpRWoa6M0ovVIL8ohxzAAB7P0UHLoJ.hctG2FJsW.UDvrMYwsQI1DGKZyzvzw.EBZgVHloI9tF.qXuTXAJMtnWKEmc.siXFgUAfg12.wJf6n1K5tqmaClyxAxE0FZvnYeeoCHhDspoX9aJw819HSTJxJjj.OmYZFroawfejdoBTnnQQ6eLJMxApfKqzzTdvCYskMQzCelLDSUJO5TQIsGMqS.ltdNoX.x1I.ItVMcVPKWx7LuOFwdu8kRboczJ0I8Xqys6yBRgtzTNYM5ZbcKNLXiDERL.DeTug01Z+HahxyMspUI7s0F5IeDxaF.dDjn1G95nKerijbqQiDMk2hBhTAlGJ5jkaGcixF.fGU1oJ3ts1jZfLxL.zTaSJNjvB1Lo77M4Ij.e1WjxFnhD.zuXLi1tuqFEtSeHkisjqwqZKGkj.nkK+wi8mUNXbSHlwF1RMgDzwHPYIG7J5jwtTSSuqNlP80J5IG7et8imdOz.qPKp0lou7oIXJW4p2oB4lDdkwb42QAWpP8SDi49ifKhgADvImwKGNqvXQmYUHScQLglTxbBQl45ATHb8e6XLo7jo.CP66PafjTskVgyI6iFj6Jibr+LKC50gxQvLtP.jRkxc3s2hdjhreEy1VBj83K.fRqQ1Dz9+xXucTlXuor9qM9G66p7ozZj+OEy3g9EVyj4XkxjgqkCVSiciZfjYllqDPKZXlXtB0krCdWT5Gy6qDG0o0QA3.NlLsDl59efGM8RLCTTGJ108nMVwvbbvj.ModsIyMmy2UlQxCdsWMsQ5ftjon909jQLkVcSkYn6M3bgQFJs0lN8YQgXRyT4jvzLybU84rOiX1nnvtb25TCyTTxf49W5.3+9hjH0RxdCoLZjIldIhvLcXl9R.2mrLtNMslU25bEXxwrsIeg.i1817NXXOZfyUFgOWsIilXRJmZ0n6h8+fyW3CeICZtdP.BOxju2hdBtG5wT.tJNrnGvl1tpyeDRbixPPGtcvZaI2wqAQq.BZ2uIU9MYaJCrPIkZtHoST5+CJnE0ZvDSiV6XvgXTSWGMyPFUi4HIw3FpTA12B+HUVkkJ9tjEASixvzKotovzq19HwD.MIOOkZs1vlbFmRfC1FsObnjIc8zUly01iB.ly0lEFb0BnoWGCF6m0oLcWoEilaK0JlYWklfyXksZU4Kce3+D5i1gvXmDows+hKiwhvUTRmyUeeW0nTGEsmCr7NRNKBCZdNyIYSlQalouWWDivNn5T9QM4rHWs0zf5MhY8jYZrU3+xKqheSlyylCsKlryn94Z6+vflxkbornXi5YW+B6GdOkgmhPoRmFWMeu90GtJcjzEHMMDEPkNYVHvrt6jhhOHAZ.0yQd+P+ps6MFlKJ09X3Z.BMzf9U20xVFLHaFnxJkNjBH1sFG0xf9zAfJpLlVtQqQVzIOHJxdYu+vACENlAnoFUSc9ThE5EGENWgUqfNcwktX1PlTDEZ1jAeZMPJcIZHtbrzMmuo98EEVfbJa5VcO2.y1xIaK6liq5TQFPRY5AXteqQocB+53mntcGZjLTXyO0acRzwU4bYuWwXJGDLoSlw2PIvNntqxQKS1fqwh5eJB1Tfc7r4AoC170SPMSUAMYgnkYvllLSC9I2aI3f4seRaEi1O35+gb.obHi5aiEOS8TAvkx0irp6JcGnbQqxZwaE3evTfMR0KAcODyj218FAUOzjuXYs0fg3DY3QgZUvTZUouegSFhnOF8vV99xXRVxJ8.J3XotJlA+BxdfLTYzsKVnC.fohyILK688EPgt6JynLNdEfKa2hubvqRB13.H1tusof3BPBddF3AeqktFCiGvEQOMq8AeQ5Dz66DnzVuIuuxgLCFeJPPEAv9RNvAMFJEYkERoBNGMQO.CiHCiQIeFlXMhvaI.BPJ6QdXhoih2yctoGGSwFab56TG3gWTbM4sGsZSum0mxrqWWZmOlMj+dZhbY5nQBc4LWtx8c2fzrDNHVT0roLPOLnaQthitncp.5loSozYTZB.QtRNPQTTVMxkVT1+koCjLlnrH2F5guXVoasRLIYAafXPgNUhaxvO.jRYxNK1o0A3bnWkckmhYdlYxRSLAsin7+FXQLX.WWY4i63v0w4L4gANXxT.EGbAUbCMnoEZ0TpZ3nHhVToyWobDokgba.KlDWGwoQEg2e1Jc.MHP87oFM66daggjrAXH2GlKMSfVMKahc.2xzEwAU1lh8DDSxXt8Qlp82XNOz41Z0P7KYFIbYYhziqVXs.nFoG7GgW.SsjVv7QJrR.J6z31j5BoXuzaQvpWYOR6kQ5JnLiR4q216y8.xjgZEKiFohoEjJ7uXFLZLQ3CSPArIhtllGTuQCcBnjL6JCyocb.qLBu.lV.54bqGyXZFVAv4W4dv2OICFlzFtB9eNJlsmoblJW1BfjxfBa.oBSP.KGoSEKaerkLVX33l586ZlGUVTusiRxbTLr1fBAdvPJKyR4wxAtxFEfPtR3WvDOUh2IDvC8ez.giAtSxELKWMSiEAGQM4WyX90WlksfN+fVJVrE0E.3fSTxfAUnJaxpRgbob.ovaUNor2lObOBTjFCQSYenkGzaDYg6KFtOyjrAa5AzyqwzZrOdfC5vkLLulw7+ru.DSbPoqES3i8e9n4bv0ccY1nQgeMcemFjn.ifV0BdKzMr1JP.Jjp76XbmjWM53MrICC9ichvJrwWmpzuV2r8nvFHxPmdoIanlYWexz0dnbS6ksi0TBCRyUghUL.9GFbFovJUHALXZz6CC8VoXnRLqp.Y95djhAll6c.RXNXqCSb4GmJ1KXlyTVClNUJhbAJxvLYg5O+AdpBPzh698mtoEdfEZEThxk2P1DLuJz5fdLSQK2VTlC7N.OuPTtl4PDlTR14Z.bTlz2gicVht0zHiWEU79XKYbhBlN4X0N5lhZy.mxy7hsnirI545X.+VAVWqtRfqrGAs7cPg4w59J2Qf7qNTQh+YldL2fGQ5tJ5kDYRerbnfNSi8SfoDFpHSsHY5nGsX.C2lQSjOuNLUHePZLP2h4Ix4GXfNCxuX4HssnR+LywU1cah3moTB3DNXnYsT5DU7gptBH4SikCKSJGhUNZoMAPObSmLSt9QCXF.8gXXH0ghCTonrfWF1eu4Ve.Aop+uPnE.lBSCrljmP39xFo4AXHGnv.f1cPaLA0pAIslXbQllxZImVU5uITckqWWAcLNNf9KSmJhtgCGpm.3xRYhLbCyrNI.oHdvfZ1bkuPNwGiSkYS1dxFFBtfExQTLZGfZ6SL0.IEkgDSc8BRFFKzDMLRYLtqfzyT+W4Q.93zLBCGPIP7VuDC.mqaWLxaAyigoACkvA5YzBsrlcX1cHO9ZOwDxAhWglB4zo6l5bRgLec8BphILchpR2JMiTMwcOfEBHqnggIbl0iQ6.eWf8IGrivMaz0YJImClySJhItVjQohoSu4LznJ4LPFWFFaJvgr1fnyg0HaG2fNxPtynmV.3CFKdkfNWOHSmwb43rLlbbsCU1c0AVyr7ePsSzZgBlV+NCCodC7Xw3n9XhCOSkOKAikMho11fDffQWfAeYHFoLdtVwPB3ZKkxbQ1mZN1WUN7kSKlwbPZv9WiC.8FbuRUQ7MLLydp1NHNAfra0DNVhY97.N8dQuYWF3NbnnjILccXeZnTUJzdA+4G7733xBlflF37D5A1MI3LBaUlAJRYsalMG3vhgdajYHPlq8nvEjIoyq3CGNIu3KPeAKHEhGxgIYcBb.2xjoIR08jyKEfRAd.EfWA6oNmKL13v4ovLNNXb1xf5Nl53AXnzToFP2tVRnKKPXqFloJnLVnnHk1pAKv8f0UZMP.UZ4x3BPz0w7O8CzX8.Nm3DBJmTDlsl0UzozJT4RlheX5+8QLvHJUtAb3+d2xoXx0k8fYLjUK6fR2G3VFFmF1tL6RDV96YN.mkijglQhwpMSgfOBkGXeUlY6l7MulC9m408PIwQEt50bMa1abPzO.SD4OuZRaNGP9l4MCPPYF3FfW.6hHPBkUogygn4XvsM5t2gjpMgVoyoZKM8axHHFAW+VpPW3Pr168YoXHRASjyHjA5uu2HXGT8AFrhIHXqaPuILC..YUFTsvJOSt8nJGwrLL2Oa4sns1MDcgRtLc.qMJF.vXBU4vDqzhfGkKVnpdavfcpfMzQR3J2zifns1vE4ClrBSO.mXFRd4YxsX5hLHTMwLi.HoNFlzNgzIA5bkjN15D3BXxfEKFvNENtJi9oCjj0SA4MahaDNZpMQqCTNjcSDXJSc.nJoltboXkSwFiAL4nRgxQWq5SVE3pbP1PtLg.+p.ZyT.Kyoq6hInUAYN5fZ.sG6EvoTP2P5+Kj1TwzmEFeelOU.sUStCSF1pYAwXojQR3t2PfgvlAf4NslCtsbtuSjWeTgbmFdTBVbGdESVnU3ltgGdPJNDmNbthIbWF7MDxfXR2c8aUgvPlVsf890yuYCUARPCEaAuFCybofX5PJskI7QhKnM4IdQtYfai0vAnUHmZxFmAhpXncwbm4yDPERQhalTytqaK85QLXVlAXTuEA0tTogQ2L5MTg0dPjVLY21wmu.5wTNkn+Ti847w1hX8fLRlN1wk93TigCSgU2ptguFsLPohzBUaXY.zcANdUuqyxNh4nXFBPMPUKwIXYS5AM7QFpaQOOLrgCGRVcFsNXWroiCrWSlMF41BZP8nZbHAdW3jH0.BaqaixaAKALXN0HbOmutnp5A25wjPXxaQO1JVVV+PiS1e5RFFKT36AyEhLVt8pgo2BkIPN0gyZLyvBCIFPdYkc78VllJOhtbyrhYjxfYvhVSZQB3OyLtD.C2dPB7yb2Plz.LMbMuVv9tsjY+QNWBhgiQxHsubCmXsL3TLny7AosZr+x.X.MmAe+Xh0qH+bYF7EN8VZNhILiB.UomQsso8Ey3Az0GiSFPFxLEKifG.6HlSTMO2f8.kSvvUfGCljbWPYLtIL1zYp.Sw4gFrqCOcIydEqpioyfL9rLJz52XXvFbmp0jPzi56krmTHlGAW6ehbALmBpALjnfkEhC2X+MgZkzXFAVl1WHeJmpe1hA8qV6N.oivjAbZvWiYJBGETVvH.enfNCcWkhoiDpm.vS3XpwFsjl1nmQ8TbyjJTzBv0F5TrmbZ5z.gaT9kPJGRtAmPlGUbdyfd9cE6BJ2R6S0acHFDkEy8FNWwBCykEpPPos2aDBNSPMmXFyIjdMDPhBy0OvzbYkYN38H.0hRGXkcZTYCYcBZlBSqlPkQDKnnyybBAPp5X3rDLdBmdcBMWgDofvmUh9xb1vMIWLamJABF1alxh8oCiElCbAzspoDMGAw.EJCfIRxodhGSBgiNYbfao8JyHGsAsCLI2Td38nHjDmYCMvRPKNNLixgWD4CFEggijofXKpn9dJDt84KBqyAM+Q0tZoCW2.jwN8Tz6D0Bhmv90ZJJ0Au4g0CbjpHQIvjxC5cZEC9Sfxl5.mxBvxwza+Bi3bJjhMPEgAE40fB7T7oT2lV0QrDCZ.0nFDX7wduhxMDnNedPZiSWUHIZ1XbD.AHFTlBgBsv5Nrc49TzJPc7nFIDKoi3aWAUDGZ2Sd3XMiIjs.gvdRyZ2utEX9P2RTJIL0rOKJrIsBtRep+m8mqTjOX1sAMEYFdODSIHXInEAj4MiLBMAOkPsRvvYtPSAWHfoK8eLLEOJUiBfFDHmdo3RyAhqGw0.BdolmtFzncmAzBn8cllNRdYZurbY.hmLgKgrtQwrgJTIAImcW1d1fq9X1cL7BB5YQv74Jti1dKXP0sTqDtVkkcxzHcftceAhSHGQCs+i7NzCTPX.kJA8.8p1AH1JP1rYbaAGKAQomLbUAibIDdKCIBkSaZIWoNEvcFRMminCoAoDfxL3hOm29BCdYm20c1T6vOWEYnMna1iPALLDACZiUuEONKq9UAbu6f37YHUFtrUyP..vMnGIq3egHLw.2lNA2n8o80YoH5hNM+2DaEPVlgV9qQ+bhDaBcrNpZuYL.BdwMCmjoPNbi8THF5.SdFbf8ZPV5cQitwxDVz2y7C3ChhQo3i4.iB8XO9XgONQitkQuQ0oMPYHEDFiC4jStEsF7Tn+MfHHzmgiW7gwtwZJQtMllBElwqBHohcI48.VfgKEbGRwqzy8dKBvBSqPD4iAKt53DbpeKMh8zrqseqDC9gBPtyt08xf.Bd+DIaZAnVL8EDhPXTgrQnh1IaenH9HPWWfYXW7ZJfwLMfB1nr4TGRzh5vcKhEV1pUACxrlxo.Fzb5f.puph9OXklZ5di0cNhAA.DWWBRDwnQ8qPPCnJg0poPCXRhOgsriGGBtTg.GOIVHtyIAUYP42Y1MKldWGzPfhGFtqrX3PpVP7J7DP5aMC40rXeOLELCIQ03ERmWgfwnaN0pis0ZQ6BlcJb.rwggc8XrvYvCKnrAFvqRFjsJRSMfxvoA4mpSJBLHiU+xPuqLSGPnivcMFVC.M9kQCeDdhLMqRw0AWzRZY5HqSFdh.yancJNFhnGy9AOFS3MCCHIAQ6TGmFZeWwIDIxKUEHskzqbfAjozpnPAny5582b5t2H.HrEMPrVyMJ4LfAvmJztijQpIBoYov3NbXnU9P1smmDdiAbLoYtyIWH4SC3aP4NLHrC9SKJtTqD7.79I1phn3BJpzY2joHrAzbQz1Tj2to1j1ARMenrDjkpq23jrWYFDBkqKof9FHoK4weA52GFjuP4H.LYMhlNa.USsFJ58HTRTCGRQFKfrg.24rSc+5mrGn2hvWoPkOlys.nXTP8JfdxjgyjoQ.rEnbVLa7zSg1ssnQ9PsoUKKwizDA4aUbDNHwowX.HeVZky06oA0xADhkwVpSplXLGfnRQcMalJkhJWyvicRX5bcC4HpiChSZYTbCBID+yJj.jQ0zCGniR3cQ89V46YfFBE2cgPxnfdQ+s2WXjNwzkvv6XczVVH3Py7kOeXJTCTmPyJ.K6PMA08NvkArLHN+HGLrpwyYnPkjiPnM.FgPGRrlJnqn.gGObTxQLS3GHt2L4vNdrENcrPgRUT5zYg8Y2fnfBNVfq8bp4gNfPF3T.pR2vnIgjeQxP7V2VzXY5B8TfAJ+vPUiSTuKL2BFwNpN8CsCL1gj+ykkSDjoXzAuSCMz2cXwlZtvnHhNYiLSXFnbv3ZDK1dlMJJYbTnVFHLXs9ioC2FgpeMgNaMH0rGjzabiaN49hTZ5vCwLnJGlKtG4UEphALPjA.UPB+5Uhdz2OlfgEIHozLcPp.poMI8xgDvTQdzcrcfRdDsAoSvwSpfm64fgcC1+Idku+4nfZthnPxBhwXNjsXNxeDvwuxNSRg9Nm0d4kipOZPmVx1QKgfg6.+.++Pf5AMR5Y59CiqxarhI4ELciiEJo2N0.9w.RFSETlTg4Q.xOvkkYJ9TzIbiAaXzAZmHITPrfB010zlhRjLQ8DWN5zAzSBWCnFG4kn0cU9T26NVQiwJ7vvXQYkDKCV1D4OH6qpZ3HpfV5IaelNpUPBPIRsP4frv0D44So8hSK4.0MNlSzZ2F3Iah2q8mtPqcqH1EGfNECAJOYljOBlOe3hnWlBzdCZEOAnOM0mDNpqybRUgSoc5bDMLIxLrx7.3jVVTIsgdRXDHsLZPv9AT4ZZ7zzznyV4DIdPwQLCPJHPBDLh4lhIKAH0kkLfEzPmY5aavMyUDXYTQzpCpKfxpYve+UCGbw.9K6h.krZfGZya6JUHchS7Q3XzzDIvqGjZBP3d4HxPzmRHvyFM4vTxpNg4x.Zvc1wlGJblLlYNw6nFgEjdT2qnmeqokLvzFznBJP9u1g.NeBOf0.I4EmHmmCosEzy1C4Ry8JOQ005f7RTZQiNc2nonjaHogu2RcB4rBT2fBFUMpa3ASiIEVhp0Zh7ngtWNlQkCbrgL7Rdvi.LNNl4+pfbkTIuWPUee+bnwmeJHRkr6aFicP3FDwQzO249RggVHoSI5cWlbKJlI.FU+lAM5fgD2XhYA7W0qD5Aw9abCd8FxSBBvp5H.Hkk9fAnRKCybyoHXL9YP70GL7saKYVBZl8..1hdaLcrOh1+F5TBEpZeCPNwMtHPALH9xfpgiDOXp9QmBnI+tZj1.eMnuCcHNr1dbKpnzHbd4cSQHOMRm2fvuVmDQ0lo5qL4uCjdNciYXLMxH3hAyhZj1sDY3AgXRv4kkqo8Q+DnY1czggf6JLuTvrUlQlYBgot+fBJKMv84DpDLr3jbTxnk9E5YiI4sAC1o7fCS663KHkdiLGF4J.SKmrDSKb0MrIcCQ3bZ.jdmQmKliDsBtO5DZNF8tm1OyP2sOcuwLnyZTVpiTx0xDvD+pgoQlysrw8M58B4tQBCN4KBpKuFc5WgHObX.jXFolRwbEaPYdMHY4IYblnfUtASp.htCAXt3lyBbHSlMzu2ilC5hXgFPlQydBf2XV9.jACv0Zv29MiXqjg5hCIlCYt8dKYRpSKMZQVq47hAdxLYY813zv2tWQTOAS5fMcgtpsyTHz5FTeKiRRuYBYCdRIzF6AfM2P+g.PevdGMaU6vMMrHlzIlbektUo3T3pNQVUok0Mi1.bZROF.ubHuEyMtBm9N5wyx3qA77YNtOfrFPJq6VgbIlr.XQ.5OpatIGyN7L.PiukcZwCGWaXNiRisbjhAfhmIRCpQ1.0EnFcvfJp9UwUpgLyEBJJPA8N0AoHpQCvtohHblrrbAB3NPtjViZ9.hxofoClDWGPUKYFqLkdZBjTZNHJyy.5M4I.BxqaR6j5vByUrhQLyo3WHNF55JfOYGvvXpxh5RCsI1bzcLQLETwakQC0pABKX6.Neo2JFNepQSHfVVQiJ6F9JjRZBqbUxZmc027W5Xc.IKXsv8gxpLEvT8AYmYfEODDckQHMEpqPwUsCfh3hFOUbpNOvEDJzGEzZTMwLgnlC9zpLUskCGFSRDPOhfvxvqmvXFqVkNXdLYxBLBmB7+4XMF4fQybe.Q9HfWG34wT6ezwCD4AJC1dDJ78xuanA0vy70XZO1ycFT7N.H2QfHd2DySciQzboKsGYm.xufEcvWKx1tozALHszaOPeW2ILp0v.lr0L51tfq0AhKsQlKcSkR6Xs.t8B.XzM0fBpmHC7MWvBn6aDXeFTOHUtHaF7Fj9P3t6.6eYCJsWL5fJJSfpTu3nl7UL+aPuuSbXYPHD06OFyIFMQCcgFSWRvMaLs7FIjT1a0FSF2.F9Qiw49o19B00nsc6KitrrnK+HDM6wV1sSV4x4AxFZ8NzRYdLfcATtjYlNxlSn.CX4zY9pgT5MP.IGLzFcNcQONL8OEx9S16YBpnjel4hMT8CR+svKRi5kpsyjuNy.GvVr6xpf0sxfYDywKGJk1ZH01mPUmKO7YnTB4fp1x6G.BznVrYPShYWpQ23zBbJz6QXPCSgcg4GxPQyHDUYC+0vL2rB3REBn3V5xE79KOxw7rSygbjEcLvYMX7ugi4MIGxHMkixWC9biPs0VCzyrfMobZj7f1tRGg.a4lQbEYJjJufin8QPyv2M01zfqfV6GSAFm3BEFAd+.iG2a.ZE3lBihRGVRtlfSKQAFcnbhJdFS1G5zcGMPrnysfsi8A1QYqgG7PfcZFnHBObDScYi3dVNmazkQlbpf7LFFnnfF7Ps1XFYZNldhQHfPni1a3vshxNXvrlSU+Ln8OyNeXHzJhDdwjVCjpAD8WEV8zkAIgQsfRDfB+RFFMm5CQ89ALXIPpv9n9AfF74Dz8YK3B9dzJQhfSxNJ.f19FSN9jj6SF5rhmTzZHFQLpnoQ+TxP6+Po3b0tAMAkwfsed5cI3IkAD6L8qCI3zwYuLDrCjJCJdfgXc0QqRzqGYkt3HaX8R4T5RvsEJ9NimY4qJivIxPqlFl3kPtWBicLqUcaqEFAeGWOk.tgrDAE358dL7dU3OXGaMuz8GCBAFCMb7KkrkrNY96MmcoBrcDBw0jQ4xTQG3MrFsDIvcYwQkNDeEC+k93QPNlFqQqEv.R35na4AK5SUHuZIC506Hg6T0aPr5x0EZzucvxChipi5pYjekYZpsuh6crepWXFq.SqPaQf838PNHH+mLPnmpqVM5BDyVAN4TdNGaSaIQYokoQDxEZjoCz3KDcrNs.FNow.aPJY1fdNgT9tLUCKR6TajVLncH.E66svgbvP47Y3NSlrTkYIv7bMfvnhsv7RLwJbHI50XLG1WjlHfZnT1CHPImNXfBcyNCpOR1Y+.tBfRlx.WYZFG86eQiHfi0Mpn.8Ul1xr.UVGNwjjZRThB3Av+yUSvaA6qQvGxbvQw7LGdUnGl.iQmPbRMGw8BR43zpHzUFSsECZdjW9vnYSQMDC5BbOW2Q8OKrOMCvoVl2JxdKcU6PQRNYRnMaSglW0ZV8HJkgCnPof0iWA0X6TPmAXCFRAFrRXxcmt.xr1tf6LxkpooVoXxZ.zWGtwKEc2isQEfR+vf6xLL9JJxo7Asp1YjD79FzjUfh9CSetSQyIkSYferBsMYUIHlPlZGDuzbpXM3akFXy1ilQPUY33GYBauMJqtiRfqXqAhBTwbl2GPVjGhx3BRPeZxOCFGAyXAio2coFEsLtbhdz3bqovzJ4SfdyLXqsCyruW4sNrncFFV2H3gnulXQsTMCd0IgqkvpyHTOzcs6urJQ3ggFthQz0XDSuji3umHLZ8tKdof5RgiQg6qLAtUBxRjHTgfFLXjg51lH1mUn7a6yCXNH0cRGVI5jb8gSNgHVI8xFD6zrqG7+KXo0w9BNbTBEQPIBvr3H6MlkiBg9PkooMQFpXmn0ZyPauTh7lgWBtCgoNLTfamrc.c7jwpAYY2byuALKVPDR.8LyJGJ3vhI9.LEWcRULfiufZzFL6rgs+fxMgBF6.gcWt9MPJwQLr7Jph1zIn8ZuWFIYWuGMd.NxQVYArdXZPccOm.kV5kXO3x97drKE.C.NgrcTc9kOhlRBUttNZFRQXw4ouVJ+K0YnfFenUOsqauaV4QApPU2SGkudZN1ksQX5dnE08NfFTspB.t5vB1QF.Zc65z0hZ0.HJP9VDYBr5oUrhZAgpqTZmvVXFuDGHcsfEDp2wgY9ajEQZEubroGjoatu.aXvnWHZx6WLlAoeBf8PjTJVdGZgKdFS+kA45L6V5UBpJdlrKbCAmdNICqf5TyMig.HNgNC6pd8kWl9OSX4f0QHlJWmsIGYlEJzrbXmGCn8ffI6ckn.5Db01GBZ..C9KcKyQJlo.5+jdOCt5xM8YfyvBvtYTlFYngICV9cHwhx5vhKQZuG5iHnzwQHHUNtB8eQ+6Kld.P4jHvXFYFj0z8O1PGqJH2Rv9DUmSVvfG7Y6Dofce0DQFqWjujxTtc3HARFD0JJAFn01X6.RoWm+TT2TUroQNKj2JrFTONBkkyPRc.M.BOutbzkd3HjmAze9tYzFB09oP5rGwnU2brnbL78ZaJndzs6.oVqdD3FYJu.FLlTHJd8pQqFGGolknRqAuqPiIWVsgHiZvRAj0lI2TRRJm.upYjxrY4SVkV46FUee8iosBLpBTZPsCzQ8CA6.gDfwXOser2QKnVLKR.BupgVuP5dBIWGtlesmvQXLTaIPeWMTYu8lZXbTgY56ouFfLL52O5C+XYlmwP+DX5DQ3TA0pFpAOHi64H31qkcXtzVelicxBA4fz0UWhpih1B8KZl+9f0gPIvCVkX+5rdqg7XIa6zKLyTBGYRWo7c0ho8ngR0S2glL2n2aL1Jz59PInDLqwxhzWY3pSbUjEzvoLViX36kKH5l6V5P96cBA6v2x4X7nZlJFbPgHXPRzhWYMr.pKXjGsXCRhaVv6RtwM.SLcq0jAoRLrCy6xic2vz8LlXZwf2jEGBJkeM.UTFu9c27MPqUfmJNJg5EOM34eBQGBsVTLjkD0MgVxf56Ry72GNCiVTCVDZEx7poQOxgEEp5TOmLXRochzs5nMWPlaFjpRFMqPnjFkpqfAJHS3BMXbGLc3X2LHkj.R56EY7SjsihaT2cEnoRFxARTlEJkkNz.OsneueB43b1HBI5OpahqPdM4PKQJE30aukwE8ujonJl.TS+GFfsHFCAvQy9vplLaET3I3wvxvnSRzY.xSWuyg4+MM+k8aknWctNUzwCeBAbiQraeDGGg5tQAiw9uQxEUbLZqIHWoAcVYXXVDmHEaGFORltl2BQlSm.lfp0gorqAAKCkP64Pw9INT+.McmdgXjNBj7hIcSNse5mOITYyS18Yxg.ugF.TpjDP+35AaR6DLvv28.hXhXG2uYldMAecCAR6BQBxzFdQoFfBvji.mRYjCTzknd4lx1Qix6YFDnNfqyvIOGLL8uPSkLFcAW9TNBvQLwP6B3Po6B2xTf6gbtMWAy8nksXTr22imDR02AJzEzYjQp9fSTfX6olDfdcWKQKmjkNBlOcXLQqf5nZ6A0T0MTzUEZtB3PIadNa+502.g+Mnv1rYVBhwzQl4xsVrydeLw.vwVfhX.htSU.Jz8kJHCnZ55PBxum9KArkL3rGVWIDV46XA+pi7WRzaSxvJcXTQ8DECePLzHfJYmNVWH8eZ4KLgA7tkC35893jlQvvNY7TrB9BWIfS8ZKlJ9S0sUbDS5VQwX7Pg+Aor24z8xTAEbwBVbQJYT3GlZ5NgKg34Fz9t0HstonP2TlEFBIWGNQ2Olc8ZAP2avdDb2VLfIo.flltcc27hR.Dsdyk68A1PYJqBxHyPalTTjCxMENcwrxgx6DkErQ5o6SONgLGUCDfLKFF1rBe5CcUBaRTM.LDBZggCKTFwrASBHJXgFho..2GwQTRqCxRAkQTFy2u+DVoHdcnc+Lpv2aSF4AkXAHMA6VdjlV.TxXXSelPJOLSZauQtzJJIF4ktSsYBUK7.gJClG1xItn9TEXp90gi6bPvb04T4Oo.m33zGa5ZTvhDLBIUKe0bDvdNEr8ooyCc1tI2gxeXae0kOUCXlVATzOpjhSCEkMFD4SNIheHSrAsDz0WB090z24ShURCcYW9gHiRGzmaPA3QswoHQcSiHKvdOGrMYkbPG.kvhlJBkHC81sOxJ4kqtBEBtasOlyAgHjfxj0Boo.hJCxB1lVgybGGlvHrLYryF9AWRlj53Em3zCkIxD4ARB.SI4hW4FzV1fHsxUXmVzUUGs0njj60XxSV6Ilv6JdWdDiBjVH0yiChgMJnICCDsLyAelZzQ1.K3NiHmDaI.vKCH09JoT.Mec5FCBIWywX2vRPnyswrjXfbrhuLBjNDAMSigRA64bPtB5Ptczi6HDKH7FEnyDCfKQiJgHgdgAaiMUEY0jOekV10PFXMifpCBBdwnKnoTn2LfFW8JLuOd5D.+XVhYCYrryNQnDWj2IL7heNuqzA7NvQoLLHLrhhPOARvwD93lUepjYNpfGXTtapePvz94CuXVGRmBsnBUbdYfhBlMlHbh3WZKXsSAyZGkph.BMb1JvmD+DGnqf4halLZn71SFS.Rzww65Lo9HvlCf8oiM4fDCUTabd0OCZjI6LjdxSRvS01o3L.CdxzUa5SFR+Tuy3hw3Olb9xAe4CFPqrVYRlbnxAszxrJnfbVtAOTGUI72Uvv7cWQAH.DDV9I0eznOzYN.v7n1o3bt.kwYeYgsFGuldRAuf3honlkXrMcoxgZqimYJnc0pH3CjgAJimrpZJDD875fXxnzsSCHqBDG2GgzrPwRLleCwBlReSklpoCmxwRybRnYIKzVuriNLB++DYc0n6EGTbNH8MnCltgRO4rNZ7cMTJu8CPDjhVcw5L3fJYUxbNEnyVfQktiA+.hiQGqkgJGIGkkMZ5nDE+KiWcqnVqqEV6hdyXp0kRFtDo4y4QWbjIH6aksOpUYrMwQQyTYGZOJ4i5l7D37oTKbFrrMPuGMepEU4YOw6DXBYFEyXh8IBQ7dSQIGLcMy.xDy4zEiEzNEGYqLN0NZ1FknErIR2hbI0w7vQph.UgpUJDZvlZKRVrZXHpPvslQgdUH3oQ0pufDcpLqWkgxILWgIpBDVXc2Kv6lykqPqvM3c8+OA+RXXLBHC6CpEitsMSG7Pv.QndgRQ5MS8PoVFn6KYnj2toCkn1hA43DjZtyj.K1gzq.9TFla8AkalQeAwVqrLEpCsbGGtAWrm6l1ovAFn2cP1+gsuiJtZLTNNNw0bl7A.tNUHB2IvI1.2VEHDhvTvoYZyc1T9zAcoOQ8PlVq0LnrGLJt.RPCI.EwIyDlkPqj5l.qGLvc.mrScgYeWcZLhpY.0ucRwQ3NQYRYZbY4aXH48VDGIiwgrvu1qFHs.+AKXQ3tiXmQK5AoSCxAc+0J+DHFfv+IoU2IMPQW7KjsXFsHy33Rt7qD5ag2fI2xLPBjRe0fIapNPxPbaJrCk879XYYf8o8qZc.fLlMu+nV1KjUFlinkSYTzGwFMuNPSukP3CE2sCusLMgKAe9f3OBwcMxF89AZMjn0GJsR4HvA9LZyPv4Z8PuVqNkQg9rES03xkkM08qVXNvxfREKfqfksg0dowXohCvNqBvHoFLj+p3nhNHoPkqnR.b+vveBxsmFALPwZYO8xoOhnVlkYTUHCVtRITjbftsd1KtfOfA6U7+A.0WTIDCO.gVOPDHgXBk2knMyGKv7f8F4h6sRtCt2YV2PjMLsE.AmCYXVoxofDllQ4lj9PMUz9ZsX6J0ek5pyjKyHL6RuEbqBAqvvZsLM1gyfz2wIVTatQBBR0L5F6fnjaNkgFgLBU.fpJWbZsSJ3pbfTbPUSNfSSiawdmbrPkkMs5ZFgbTyySPzvz2nvyBMIzHtpQESv9zB15uB2FXT.o95HXSChnsYlo7B8bfQySK4FswUtsjII.2L6VsCX4.EnYDXgArt4nQLriQAd.e5FuhLxqCjgrAQ7suAjTHYnstlbd0W1abJmhzxXv+FNIRAMhDB4JEvzxzPkAt3VgxMoXO1ZySwPLw4LPCDz7s2yEYwAj3nZ0CCyTJGsIlVXFC8zdOygnmBN4oL7Fw+MloEJpMTnQ69iBdNNMamiDjelgiBY9NYX44fJjPU2rrAOuvb6CZmpUqp0fIN4IRuNlCCCaEvHtE67Uf8caANwADDdvcTxksRFK7zBg7hPV4TW.nscphAbdmShRymFS3X7Olly2MLiCkio8+8dwTwsDrLMnrfirVNEGAOr.Uni7IXZ7RvrCUj+zwI0p17QrS4kF.AKcN20+LZRzHnuTF8aSjrMHJjiXV..dbl1zrHA.k5IEjeXF5hFrNKZDWnkgFwH.zdj.uQz2aW+lKn05znnET4kQOqOIrpAidqsraeIB38nOuZQI21mZXCY5CVzlV0OVNt9JnFGXhzDs9duwNPPnNxlfU5L7dOj1tRJaEZhqb0ZFjIDmKFInPZk1emgvuGzz.YeTlmxlBovTcASZp68b+AknmKji.T71vUo4AEfsA4sx1YydHFNkVH2tTtHGBqoT8npqDm9dmULB4bttx+iq8BCZqLDh.D4TaOHBykP9MPmHYGhAvZPgS.yhSjJ8zndBGon1wsthH.BBaOMJb.ZCYQtPjUlBuSCZwNdFhxsazrl5oVPjZHPVkpSS8voBV4XjBMCY8BDAchMaASP6qZPLX3qCXeJjMCSwLo7ELv.inON6esP+GnJengIyrIsvN0OOsHANqVqSOb3D3DngObrn.5EkrFv4Pro6nM6AC00KEUdm0YFW+EZo3n3XYdLKWh5Rz5GNZFHvfwjRWPkDMAQv3VvQf4jpJ0LhYM0PTuIgQYqi99PWozHGoEB7g1iZnbD3jUsgiY3qlMz4LCwA0QQGzQQNrTNxXdZP.RJRoihi35HhG34CT5C24PnN3JIAoLgJgHluu9EmXRgIgaHu2qsz.ZGlirEgcWcvmivdPSAlfyslUojz6iCnoJDxAyD.CJwPXyP9UJFmrxjQCZqg4M0fByLxsdIHiWJLmoTsTswRvtRXq1D4JBFhdOCjPIdaCveI7AZy8ji4NVze.NwNn+MHdTGFOKkXnAfEVTTz5biICRszU6LnyPz7cmSKnw7HD5AEBcOkgNGnulTxrB3tcOpWPjryA7MlJvFSeWW0PjhGPccN.VDjNNR6cVg9rxGlLNkIWpaGSxsdpu25HIopbppOvvcF0egIZAMEqBOOs1mVOvdf9stTvqorozSUT1OlDydOFlOiQWTZWn4O.i2gov+AgpqadGIFzcXg15AKQmB3HmcZPF35L3TKZTvvgyZEGJElAzxOcRPYnMjElcmSLr698nT3DnxsD3Qx.1azfIPJLLahoN.T0DDh4Jpna0wekTqc.JGS0X1AQRXNMjrIsFuP7zLLtFCVlhPIwxxzPtiY5vtV0Bx+eezcrimn96.3k8TTBJXZGN3kqNahSJA3b..iInenxzUSDZQvjQTLynwYJpKSfYhA1GH.Uy1nY.fII5+WSuV12+sJ5EK57F5W9QZ5fsGzjRBQ8kVKaZEoxSYhVNFJW1dWrzzW3GAHuf79f4CAbIQ+ll.VXC+5cRtUjmP1MumQZjgwEcKryC89JRByQokKp5DL5uaLZmnQk5sRj3axv0fCxqAhCtB7YctiYuCU8sPK6KlNQBEoW95ftjSTJArW0ZAzDxlJolngrE3ksE7.libWlmTDW5X9.xi7cLLDWfpIjVfQduNOm.eAL4IDGZYO5fSPHfTMP.SIBx496L91.CC8RLUUFISF16HF1NH6CCOuxfL1Y1syfxDyLyD3bf2JHfgYmayhxCCIatJCXZSkCZ0DqAUslYynjcceVlixTbuCJrz9B4bDylJJrLjXukaNgJXoqam3icC850Km3MInwaWsnw8st3B8MGS0l4mf9TfvBfDpXl26LRtHhmaCVVxPpPMvMSLJ6XPvjXChrNSVbf1KGADgxpgGqBT82dUD86EJfb.tO8Nj4Ss5.eArVrxvoCI3YRXAQP.7+y+jkLyrVHyFcT5pIvN6vb0Ltxglj.oYe33FJziMRFBdcH7yYZwY7ZGbSKeRl9PF.TFqXjXQ1b5ZDuEgiYfedNL3CB7F2QAtAZ+6qGNx5mrHAWXvr.aVo6kXzgzoKxrvAPH1DACvw.jZFb4L3ASAORfDi5JatyrSslCTjYlT8BLti7dmCcXM4GCAnBuiPnLlkxxIjcoP4qUTr75wQ++xyUGjRAxbmlrHWGA+6JaXECEySV2nsS5bXKzH28CBI.j.p2cPgOMhNDL0xAzOZfJg6OPsxfBK2EwPebXxrAP6VYj5SYPfQ2z1HkVSJZ4qWO3P83pfxrxcI2ajVvjL5qMbPDL8gSfH6g7rbnnqVyokDVfyVUzXLn.IyfKWXljThEJ7CkcQ0b5dfFSAcKu.7JlhjNgKegoyX.eMrNRAdigCUPls5ffgaIzUefL1MQDjLppwogTQ4OsN.AMtravXGi5uNa2qty2nU3wvhUfalMdgNo1PHP6cXOOShx5uNCPBJoap6lbtRO536frk2+FjJrQIk5zLFmdLSPcPs1Pqo5U9gy4lrNB.k.Zlk8412vgbRaOKdVXYAYNPM9X5dSNgMirwNnZHGMCE92GknYofpvpcZWyn1EncCHE308c.gItoDZ0TTR7zdayXOT6LOPX.Nbj+.86d.ZU3Ovd30.m3h6AniL7JuuZY0.xxLar5yoY79IHdE0EipY1Pzfk9AwjS8hOb0NIfr.yD.3+BN.yIs3JZtEeJQ.qL5P9oAHP15j0fUxPOCzJzJzBMX6Z4nSqXvvSsvLdd+RGSMHHrjgTaXPaJTxI4nDEkYb3pa9.Fdd.4uerLjLHQdtZz4MXpaOCktBJVCwPu.UAYo.LDdOfn8fAZ2oWmDKvLHet1zgxgEX1Gdvi3bylJ9zYPugQbJzkXiWPDyIsapwDvuLUW63HjDaH9JEQU5vNlDAukWhCWIijCiadFt4.DyCGoin8oUpdwHT7JyPR.7u3rcHFtFDFSxqHQ8HtlbrwMXyo.pjKHjx19TlhonQuRTjqn+S58ui22XBWNNwUD5sigtr4vchYvGxY1HAC3FrDfhSl1qKWv4sI0xbR.PKmN0CuuAP3gQqgOmc7+.0wO5rM4.XJeALlmLmxfRffqXHeWXXbDS6nzAltmRg3.FSz8xikaJxm.qKn6iTALXs8pqfXkIBMMO9FNyag9sOn97KO2UBT7I9bEKsR8ranHzIiqGjURF0dy33pOQrXGAJZZNgFJzlTF1vE8YzonMfG.fjL.XASI64csLYtgTJ1vefQRCZM.qN.PBxA2TMyPLGOPKzgT0MFTUL+JSY7hqP21u1ovLkYrjL+NPn7btLhYBGqAAhV26TrDB9Kh3aGL6d+Q8NKFLGfhUHpMlDPH1iLnboS3al5qkinQA6e60OWpAVI3JxTBntb3BSQGPfJDRgnikrchIXSZXXF3Qp887pDDn4LXTWjyt8GXGxAqdCFVdMrnFU9ZBR5BtiwTRvCHUaf7WBtpxDKA0tDXjyhsREyN9.vocUh+f1q6ZaR4NRlLpmZcOzYZARUjAWHb48OzDIHnyfxPSJCNd9iw+Ke.lLqF91AAHDAFJit3ZRJDc7.9rV9AYWm63JbmlBPIAM8.D92mv4A5g6LqTafkUchqL0QZwneBleFlXMq.wLYDf9WVn7R62kp0iFxSOxnwxpDJEhhczBJKXr+VSJrxkUfob3A.yPOnL8HlzfKZNbwgEv2jJXzidfaTlBHcM3dQhFqYDvNV6H1jIDLSypL0vo7sPwp1C6zHvJPrKCCXGNowjR6JHh0FSuxQtsbBoGH4C.rALNmtDJkw4.Uzw06xJZBXNB97rNcJ2LSRDTWIcGczMOEZGGeznijGtRagVyLgMvALVtJtjfxS3..oJrbQRipFCYpLltfv3EdPrQZ4XwDPubhCoBwEFdri7Ys5tHGWHYn.qii.Zeto+jjrRHC8xSmiiO3YEl3kVQGtRMbyObSx7twOxTMEh73DymvXPa1TC8xPMiA9oECHNY.vgGAg7M0tEST5k.XB5PnLA2RslSg.PyDYL4FlY6NEiTp1fPsAJYGst.e1xfi.98aK2n8Ekabg.UzAqPFOLfGYJd1DtSn3v7I8heh5RovAU.9SGp2Rftcs+lLybXJBZ6ErBxHSWcCzCgwhPOqOscSSnKfPOPECDlkw.4ALWC1YfOeN12y0LhVd.WpQxM0rPkVU5zeGo+a3nGSF.azvNNFVbQzGTYnBdrMcDGBCaYEHrP3a6MOdJOKvvOhmhg07NgqIEyQHJzDc+9Pw.d6y.CFxrmolsJP2A5rEhpTfZbyXg0BWrv0HolQsSyf2.zQLDI9dwMIAMnxh9f4edsbytEQRirh.dFN5F34PSSFjJ9Wigwh7gFgHWo21YSLdj045fzYQEUaNKoYpLGGqA+7FjtP68oiuPy1vjDF5MfIOkTTCQT43LoR9leMRt7qNwR4ynB7sP66jWoyxEAeuz6RebAiggrSb15BiBuEi3HRW9LeVdSHB+mZ9f2Gpn94rNGaNCxKT13Hm814.7idFYh.RKFvczrs0YuiM3LqR+D19OqjG.hmTbsjQihpjzpN6MDDOpM3LlVHYEm+IbfZwhNDzCF4ndtUmBcopUhoIABQ5rqhkVzqmwKXOmyegIp6XiPUFsypEa2c7FHOzfEIFmsvfeuLbbRPRSC5K5YgMOsfeET93hIc9rVDCYqqRfC.YYF7myccTeyDj3HVXOKMMvryEzPzodIrNWaOhYkIPgZE9FqbV.TgqqPeaynseLocm40W9cYbIf41ox6mkaSSXjVICUOQpA0yc3K8tvFsPT0HyCswY+7Nwq.0rFPne1XRRuKUIlTzo0Cy95rWGRGhdkUN8mue1GO.QLdQoEums3J51AXlohJv1Gmkx0RHhCLXQbpaVJaLKzSznEbOOlmCh6gke3kPXztFExXd9kuI43gJfdzVm+sAjOLge1C0e9bmjzwiBzfDR0S5rU9JXi.DvvCc9HDCoyuom7IQhFAfa41F6kLziUvOEShync1yQPfP3AGDJP0UN61TbCgklZBilm89wHAD+KC8kbVr1DSiB58WiwoKyrqe1Ozxlu9yhTKAUpe1EG.qObSsBYHSxim2RchJTEg8k1QycALpfP4gYl1fxzu2oRSEFpavlZmK1onmlfm.XtZ33ty16XhCBnnyP8qC8Dhy4MXxbyJapob.Xzy5SlgqZA0XvnJrN+iHMWDbjlkG77liJIBEEVuAuimcdYi44aEXAkGyy2NineuPQI4f3qym8rLX5oDLJeP.E4ytuQgzLh.xJq5Y6DVTCgDn5g5khZSc16GLuKtsoK2iy4A6NdRGzSB6CTYRyO6J3DP1qrMKniRm89AmZhZlAcY1Wm6Cr7PzCAFF4SEJW+7VafrUA7prvbVRXIZILyykxGPwntFmUdnAsZ.wnZnlIkyJK555zlZfwBBOz3r34j8pDoPFNP.s.47u5BLjxjFBk7b1I++DySC7NxbYkylIjVq0YSvVEgdTNqrRECnPHgwToaHC4448Qw.p1NI0DnjFme+eElaRAfCPS6k5Fudv47X7nbZxIO6FLjzTH1wfYhOR4y+9KjZGc.f7Rxm+8B0yIPBQGiMm8HZgkvP383s2YykLBwsBKvC00hPH+l6yq4ke0+4WdG+GdsK4su8y+zqd6+Mu0a+3qd5yu5se8+vu8kO51q+cWd6027Ttj+ve5y+3Kie2ubdRO8ydxSdmule2zatIMr292e00+lO91m+U9W4+3eLJwAEMSYaTQxeXrhum5zXG+tibjpJyhZ6pu2Q6diTdzSsNNfUJpR+w8nxVBqPPdx5nNhvx8WeWyHpMCkeECPBCG68ysNgj0.xQjuLlWmw79i4ilAN9OP2.WxJ981hLIiCD6SLb0G2aHjN5dYTzclYtYZcuciY7cYpfy.9TBv3d6NOwTGqwAVdl2eRrSOKmtSEXRnUSiw8H.BXBqPLHzBACHy81ctx7jJG1cFrUE9+80hLzvaAcUKzgs6sC0Aj2PgCmvAlLHi2aqD.BkL8zSgHCXhx2a2YXqWEI3Dny2XKx82YDFv8fp5GK8ne+cDYLfMalHSSAt.tuqeYT8UXWGpY.AHqPm95GGwad5q+O+W9lu4+5+0+u7Ve3O9m+A+he4O4m8K9e+sduewO5G+ydq+p6q+8lu4it4oO+1252c4ydqa+n25u5s9wO82b8Su5cezyt5xau5me0m8rKexO+pa+827re628s+PE7xMO6m7ja9828sd6+h+R8Dd6G8tO4lKe7K+ou2MO9pm7ceue1mv+6egthO5yd5iH7l25lm9yu41q9EO869W7l+Cu424M0my+vezG8Qek+re3MO81mcySdxUO6q7G+gW+Im4mb2u328oe1m7qu5Yui9f9jO6pu3Bu3Aeye7iu91ad1Gbq9397KdvC+A273O+C93a98O8hG7FOLcwu55me8u9IWc5K9fadxM7ecbgVzt8pmd6qbg27ze5Su91ewmd0ce8E+vO95m732+Y27nqdtVVd9E56b5W5BcA28To+KBL7hG7+zC+fG8rq+za+fmb8iu5YWb8iu3AeqG9Se5m9Y2dQ7.ewC9NeyKdw+9Z7K+se3u3yt8+W7a+ie5k7o9O329+5e8E+69o+nKu8R8Q3A28oQeB+zqd1sWyh2C9QW86t9QW8gw8867vezUO+2d6MeZ7w8S9zadJe1evel8C7e+K+C9e36+4u7Kt96+IW+3G+jqd+ad907x8k+j7+3yu8pO8Ct9+zKdV++7+x+k+u9q+jqekK4+v+3mb4e+qtN77O6i9nq024gO7sd7O3B1od5Q9QW+qu5IW7ou381OUOX+Y28r9V+j+8oK9zKe1kexU2d0c+j3Q9mc0uS+NW705S4W7l4kOMe+O6+A+i4e9cOye4OmeK+dnW4w4ouxmy+wm88+C9zDav9Z9D8l2c2+ke3EW7Emwzg4Sa89m8PYA5ydxk5b8O7iuTqO+zeDey+s5+7te.qq+fO+Su74O+Jc2dva7SYurVu+7W8Y4AeiW21vabdaCGuhsguhS9eMeD+m+v2+5aezG+U+L9M9JdF04v+awy3ab5Y7O+g+3O5it5Q29xGvu4C+I+6es0s6s+7O3Ae40n27tW+5uI+wescCu5Cwou8EO3+iG9RC+e5ytRaXt5Cu48exke9284W9Iep1rnmw24s90O4lG8aYa2W1awca99AbEe2G8wW9zmd0Sd9eLNU9S9Zupj1+R4Wdymc60O827dWd6yhSw+7O6S9fa9rm8nq9g28zou2C9FXU+zWevWy9hO3pm933K9+V+6teXhu9A28CSu3G9R2RWbmW830wc+25H9o09ezy+zW7s9UW8rmGFl9VOTAR8tGW727D4zGqBWe21V8RI9du+MO4y+zO9lmd8i3ac5Jdwi9eymbymgIjSO++ud4y+vKu9IrO+C9rmKunO9W7zOPW7SezUw9rG7yCSWeqexkORKre96e4seLmWvOr1bd0yd2G8EaResm0WtOgU3etrf7GbA7Z48egokme5UB+s9g50xm8rWrbpG8OIL38MdntD94rH8Fmdn9S3u5exC+M7.7ZOe+o546YW8twO3q5A4teGyetuwq73oe6u3qzu+6c8S+UmbQ+se32Kcv6h26x+969VOj2NW7AegQ1+kO7DbX3egRGk5Z22u8pe+om4Kdv+hG1d2ZP2xn8yUPk+Em9ngkyK9a9rau4SzF5GeW.Ne0OHm9q9xmhu8C4u4+zdP3Bn6xEcAvVnqwQJdR9Se3G7I2byserNRbwc2++jGl4tew+8eY4O6g+xqd9U2d519Z27Kdkfht3hWYSxe9Ce9Mezs+c+5XuvquW4e0qrW9Uunup8Mu9swsa8UeXzloSekbh7M3I5+4WthRLzu3yw2TqpewGiWbsJZmm+q3N8nKexKtPc38EmFdvq7A8a+vmFoN75eF+yen1+7wu6c+nupOYewum8Lwq9g5A+AOneqGFYf7hmw+EO7Kk3xqreI788pewq7w3aEGPS+S6T8K9k9++X8+e5i0m+02cmUdYlA+29G7W6dE4l8zqhfUd9Eu1WpscrsjPnuy4y6+pgUe2VhK9C+z75I.7+P9w4Em5bed9l744URe37awe3CS5qu6KHTmUe907g40MP+9udlKegMiK1ZD6LVa+iIA7+6RXjexkO5Y2728nSQFyGnuc7czYimFlE+NO783qeqzWtlDJg2q+6dzid8a0W5WL+G6uX4O1ew5er+hs+X+E6+w9KN9i8Wb5+EeO8024kfs4Wbw689+3XS3CdvoiQQVXW7+CvggePC
I'm still working out the details of the training scripts for my own models. It's mostly working, but seems to stop training before my desired threshold of tolerance is reached.
I'll post more when the script is working. -
@Dan-Korneff I'm not sure if the tolerance refers to an absolute loss/ESR value, or whether it actually refers to a threshold of progress between Epochs.
Also, depending on the size of the model, there's basically a hard limit to how close the model can be to the original. The Rat is quite harmonically rich, so it will be on the harder end to model.
-
@Dan-Korneff Would it be CPU greedy to run several small models at the same time?
I'm thinking about modelling key component of a circuit. Not for reconstructing it though, just for having those models here and there in a DSP...In fact my question is, since a single component/sub-circuit has an easier behaviour than a full circuit, are the resultant models lighter to run, at least if you run only one of those?
-
@ustk I think it should be doable. My plan is to do a Grey Box approach. Use ML for some items, and then analog modeling for others.
Test out the snippet above and see how much CPU it uses.
I'm still in the "trying to make this work" phase so I haven't gotten into measuring or optimizing yet. -
@ustk so basically every NN model uses a number of weights. This results in a certain number of parameters being able to be tweaked by the AI essentially. The more parameters the more CPU is required for processing.
With simpler circuits, or even say individual components, you could probably use very small models. I am actually planning to use the same approach as you, using NNs just for the non linnear stuff. I'm hoping to get it all working at higher sample rates though to reduce aliasing which would stack up quickly if you are chaining NNs together.
-
@Dan-Korneff are there any flags I need to enable when compiling HISE to get the RT_Neural stuff compiling into a plugin properly?
-
@ccbl I didn't add any flags and it exported correctly.
-
@Dan-Korneff Thanks for sharing this.
What is the method to train your models?
-
-
@Dan-Korneff I followed all the steps in your Gitlab to get the Aida-X trainer up and running, but when I get to the actual training part, it reads all the configs and starts the training process but then fails with
"RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED. This error may appear if you passed in a non-contiguous input.
I tried with both 24bit and 32bit float input files.
-
@ccbl I'm still working on the scripts, so they aren't 100% yet. Feel free to dig around and see if you can trace the issue.
-
This post is deleted! -
@Dan-Korneff I'm also getting the
CUDNN_STATUS_NOT_SUPPORTED
error when training with CUDA. With CUDA disabled, the traning goes as expected but is very slow (as expected ;-))
Are you using CUDA to train the model? If so, how are you setting the enviorment?
Like:
conda env config vars set CUBLAS_WORKSPACE_CONFIG=:16:8 conda activate base
...or some other way?
Thank you!
-
@tomekslesicki same is happening here. Looks like there's an incompatibility with the latest CUDA driver. I'll have to tweak that
-
@Dan-Korneff the solution is to install CUDA Toolkit 11.8 and install pytorch 2.3.0 instead of the current version. Here's the install prompt:
conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia