{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "# Tutorial 3: JIT Connection Matrices - Just-In-Time Generated Random Connections\n\nIn ultra-large-scale neural network modeling, even using sparse matrices, storing all connection weights still requires a large amount of memory. **JIT Connection Matrices** (Just-In-Time Connectivity) provide a revolutionary solution: **instead of pre-storing weight matrices, connections are generated just-in-time during computation**.\n\nThis tutorial will introduce three JIT connection structures provided by BrainEvent: **JITCHomoR**, **JITCNormalR**, and **JITCUniformR**.\n\n## Contents\n1. Core concepts of JIT connections\n2. JITCHomoR - Homogeneous weights\n3. JITCNormalR - Normal distribution weights\n4. JITCUniformR - Uniform distribution weights\n5. Memory and performance comparison\n6. Practice: Ultra-large-scale network modeling\n7. Advanced techniques: Row-oriented vs Column-oriented"
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 1. Core concepts of JIT connections\n\n### Problems with traditional methods\n\nConsider a network with 1 million neurons, where each neuron connects to 1000 other neurons:\n- **Total connections**: 1,000,000 × 1,000 = 1 billion\n- **Memory requirement**: 1 billion × 4 bytes (float32) ≈ **4 GB**\n\nEven using sparse matrices (CSR), we still need to store 1 billion weight values!\n\n### JIT connection solution\n\n**Core idea**: Don't store weights, only store generation rules!\n\n- **Stored content**: Connection probability, weight distribution parameters, random seed\n- **Memory requirement**: A few scalars ≈ **a few dozen bytes**!\n- **During computation**: Dynamically generate needed connections based on random seed\n\n### Key advantages\n- ✅ **Extremely low memory**: Only stores distribution parameters\n- ✅ **Reproducible**: Fixed seed ensures consistent results\n- ✅ **Efficient computation**: Only generates needed connections\n- ✅ **Scalable**: Supports ultra-large-scale networks"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:32:01.894980Z",
     "start_time": "2025-10-21T07:32:01.891461Z"
    }
   },
   "source": [
    "import brainevent\n",
    "import brainstate\n",
    "import jax.numpy as jnp\n",
    "import jax\n",
    "import numpy as np\n",
    "\n",
    "print(f\"BrainEvent version: {brainevent.__version__}\")\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BrainEvent version: 0.0.4\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 2. JITCHomoR - Homogeneous weight connections\n\n**JITCHomoR** (Homogeneous Row-oriented) represents a sparse connection matrix where all connections have the **same weight value**.\n\n### Use cases\n- Uniform excitatory connections\n- Uniform inhibitory connections\n- Binary neural networks\n\n### Creation method"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:02.978627Z",
     "start_time": "2025-10-21T07:37:02.974416Z"
    }
   },
   "source": [
    "# Create a JIT connection matrix with homogeneous weights\n",
    "# Parameters: (weight, connection probability, random seed)\n",
    "\n",
    "n_pre = 1000   # Number of presynaptic neurons\n",
    "n_post = 500   # Number of postsynaptic neurons\n",
    "\n",
    "# All connection weights are 0.1, connection probability 10%\n",
    "jitc_homo = brainevent.JITCScalarR(\n",
    "    data=(0.1, 0.1, 12345),  # (weight, prob, seed)\n",
    "    shape=(n_pre, n_post)\n",
    ")\n",
    "\n",
    "print(\"JITCScalarR matrix information:\")\n",
    "print(f\"  shape: {jitc_homo.shape}\")\n",
    "print(f\"  weight: {jitc_homo.weight}\")\n",
    "print(f\"  connection probability: {jitc_homo.prob}\")\n",
    "print(f\"  random seed: {jitc_homo.seed}\")\n",
    "print(f\"\\nMemory usage: Only stores 3 parameters!\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "JITCHomoR matrix information:\n",
      "  shape: (1000, 500)\n",
      "  weight: 0.10000000149011612\n",
      "  connection probability: 0.1\n",
      "  random seed: 12345\n",
      "\n",
      "Memory usage: Only stores 3 parameters!\n"
     ]
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "### Using with BinaryArray"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:07.446279Z",
     "start_time": "2025-10-21T07:37:05.420691Z"
    }
   },
   "source": "# Generate input spikes\nbrainstate.random.seed(0)\nspikes_bool = brainstate.random.bernoulli(0.05, size=(n_pre,))\nspikes = brainevent.BinaryArray(spikes_bool)\n\nprint(f\"Input spikes: {spikes.sum()} / {n_pre} neurons fired\")\n\n# Event-driven matrix multiplication\n# JIT connection will generate corresponding connections just-in-time based on firing neurons\noutput = spikes @ jitc_homo\n\nprint(f\"\\nOutput:\")\nprint(f\"  shape: {output.shape}\")\nprint(f\"  maximum value: {output.max():.4f}\")\nprint(f\"  average value: {output.mean():.4f}\")\nprint(f\"  non-zero outputs: {jnp.sum(output > 0)} neurons\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input spikes: 65 / 1000 neurons fired\n",
      "\n",
      "Output:\n",
      "  shape: (500,)\n",
      "  maximum value: 1.5000\n",
      "  average value: 0.6384\n",
      "  non-zero outputs: 499 neurons\n"
     ]
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "### Reproducibility test"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:09.798879Z",
     "start_time": "2025-10-21T07:37:09.528258Z"
    }
   },
   "source": [
    "# Create two matrices with the same seed\n",
    "jitc1 = brainevent.JITCScalarR((0.1, 0.1, 999), shape=(100, 50))\n",
    "jitc2 = brainevent.JITCScalarR((0.1, 0.1, 999), shape=(100, 50))\n",
    "\n",
    "# Use the same input\n",
    "test_input = brainevent.BinaryArray(jnp.ones(100, dtype=bool))\n",
    "\n",
    "result1 = test_input @ jitc1\n",
    "result2 = test_input @ jitc2\n",
    "\n",
    "print(\"Reproducibility test:\")\n",
    "print(f\"  Result1 and Result2 are identical: {jnp.allclose(result1, result2)}\")\n",
    "print(f\"  Maximum difference: {jnp.abs(result1 - result2).max()}\")\n",
    "\n",
    "# Different seeds produce different connections\n",
    "jitc3 = brainevent.JITCScalarR((0.1, 0.1, 888), shape=(100, 50))\n",
    "result3 = test_input @ jitc3\n",
    "\n",
    "print(f\"\\nDifferent seeds produce different results:\")\n",
    "print(f\"  Result1 and Result3 are identical: {jnp.allclose(result1, result3)}\")\n",
    "print(f\"  Average difference: {jnp.abs(result1 - result3).mean():.4f}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reproducibility test:\n",
      "  Result1 and Result2 are identical: True\n",
      "  Maximum difference: 0.0\n",
      "\n",
      "Different seeds produce different results:\n",
      "  Result1 and Result3 are identical: False\n",
      "  Average difference: 0.1940\n"
     ]
    }
   ],
   "execution_count": 6
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 3. JITCNormalR - Normal distribution weights\n\n**JITCNormalR** connection weights follow a **normal distribution** N(μ, σ²), which better matches the reality of biological neural networks.\n\n### Use cases\n- Biologically realistic synapse weight distributions\n- Networks requiring weight variability\n- Random network initialization"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:13.643524Z",
     "start_time": "2025-10-21T07:37:13.639372Z"
    }
   },
   "source": "# Create JIT connection with normally distributed weights\n# Parameters: (mean, standard deviation, connection probability, random seed)\n\njitc_normal = brainevent.JITCNormalR(\n    data=(0.0, 0.1, 0.15, 42),  # (mean, std, prob, seed)\n    shape=(1000, 500)\n)\n\nprint(\"JITCNormalR matrix information:\")\nprint(f\"  shape: {jitc_normal.shape}\")\nprint(f\"  weight mean: {jitc_normal.wloc}\")\nprint(f\"  weight standard deviation: {jitc_normal.wscale}\")\nprint(f\"  connection probability: {jitc_normal.prob}\")\nprint(f\"  random seed: {jitc_normal.seed}\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "JITCNormalR matrix information:\n",
      "  shape: (1000, 500)\n",
      "  weight mean: 0.0\n",
      "  weight standard deviation: 0.10000000149011612\n",
      "  connection probability: 0.15\n",
      "  random seed: 42\n"
     ]
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "### Visualizing weight distribution"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:22.883209Z",
     "start_time": "2025-10-21T07:37:15.981381Z"
    }
   },
   "source": "# Sample and visualize weight distribution\n\n# Sample weights: Use sparse input for multiple samples\nn_samples_iter = 100\nweights_samples = []\n\nbrainstate.random.seed(42)\nfor i in range(n_samples_iter):\n    # Use different random sparse input each time\n    random_spikes = brainevent.BinaryArray(brainstate.random.bernoulli(0.02, size=(1000,)))\n    out = random_spikes @ jitc_normal\n    # Collect non-zero outputs (these are weighted sums that reflect weight distribution)\n    weights_samples.extend(out[out != 0].tolist())\n\nprint(f\"Sampling statistics:\")\nprint(f\"  Number of samples: {n_samples_iter}\")\nprint(f\"  Samples collected: {len(weights_samples)}\")\nprint(f\"  Mean: {np.mean(weights_samples):.4f}\")\nprint(f\"  Standard deviation: {np.std(weights_samples):.4f}\")\n\n# Use matplotlib to plot histogram (braintools is better suited for spike rasters)\nimport matplotlib.pyplot as plt\n\nfig, axes = plt.subplots(1, 2, figsize=(14, 5))\n\n# Left plot: Weight distribution histogram\naxes[0].hist(weights_samples, bins=50, density=True, alpha=0.7, edgecolor='black', color='steelblue')\naxes[0].axvline(0.0, color='red', linestyle='--', linewidth=2, label='Expected mean (0.0)')\naxes[0].set_xlabel('Aggregated Weight Value', fontsize=12)\naxes[0].set_ylabel('Probability Density', fontsize=12)\naxes[0].set_title('Weight Distribution from JITCNormalR\\n(μ=0.0, σ=0.1, prob=0.15)', fontsize=13, fontweight='bold')\naxes[0].legend(fontsize=10)\naxes[0].grid(True, alpha=0.3)\n\n# Right plot: Cumulative distribution\nsorted_weights = np.sort(weights_samples)\ncumulative = np.arange(1, len(sorted_weights) + 1) / len(sorted_weights)\naxes[1].plot(sorted_weights, cumulative, linewidth=2, color='darkgreen')\naxes[1].axvline(0.0, color='red', linestyle='--', linewidth=2, alpha=0.7, label='Mean')\naxes[1].axhline(0.5, color='gray', linestyle=':', linewidth=1.5, alpha=0.7, label='Median')\naxes[1].set_xlabel('Aggregated Weight Value', fontsize=12)\naxes[1].set_ylabel('Cumulative Probability', fontsize=12)\naxes[1].set_title('Cumulative Distribution Function', fontsize=13, fontweight='bold')\naxes[1].legend(fontsize=10)\naxes[1].grid(True, alpha=0.3)\n\nplt.tight_layout()\nplt.show()\n\nprint(f\"\\nExplanation:\")\nprint(f\"  - Left plot shows the probability density distribution of weights\")\nprint(f\"  - Right plot shows the cumulative distribution function (CDF)\")\nprint(f\"  - Due to sparse connections, single outputs are sums of multiple weights\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sampling statistics:\n",
      "  Number of samples: 100\n",
      "  Samples collected: 46436\n",
      "  Mean: -0.0018\n",
      "  Standard deviation: 0.1727\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1400x500 with 2 Axes>"
      ],
      "image/png": "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7LPPJCUlJcNtycnJ8umnn8rdd99tS9sAAF6wfr0UXbfO/M2riT+4DEDWsn+eHw8A8m0gstOnT5vBG6pWrepcd+DAAZkwYYIkJiaag+DGjRt78tAAAB9wy5RXJfL4EYmLipY3G15nd3MAIM82btyYZrlHjx4yaNAgadasmTz44INy0UUXmfU7duww4zgkJSVJ9+7dbWotACCvirz/vpSMjZUiOtBkkyYeP87xs8dl7i9zzXxk8Ui5+xpO6AHw4aCtHtju3r1b1q5da5ZPnTol1157rfz777+m9u3bb78tS5YskdatW3u7vQAAAECuXXPNNRnGXNAahWr9+vXO26x1qlWrVplm4gIAAsestbMk4XyCme/drLcUDy1ud5MABAiPgrarV6+Whx76X+HtWbNmmUzbn376SS677DK54YYb5KWXXiJoCwAAAJ8wbdo0u5sAAPAzeiJv/PLxzuUHWz5oa3sABBaPgrZHjx6VypUrO5e//PJLadGihcm2VT179pQXXnjBe60EAAAA8qBXr152NwEA4GdW7Vglfx36y8y3uqSV1KtUz+4mAQggHg1EVrp0aTl48KCZP3funKxatUpuuukm5+0hISESHx/vvVYCAAAAAAAUoA9XfeicJ8sWgF9k2uqADe+//75ceumlpnZtQkKCdO7c2Xn7X3/9lSYTFwAAAPA1egw7b948M0hZXFycpKamprld69xOmTLFtvYBAOxz6twp+XzD52Y+qmSU3NHwDrubBCDAeBS0fe2110xm7Z133mmWhw0bZmrZKh2s4bPPPpP27dt7t6UAAACAl+zdu1euv/562bNnj7mKTIO2UVFRcvLkSXM8W65cOSlVqpTdzQQA2GTBrwucA5Dd2+heCSsaZneTAAQYj4K2F110kWzfvl22bNkikZGRUqNGDedtWhbhvffekwYNGniznQAAAIDXDB8+3ARq165dK7Vq1ZLy5cvL3LlzpXnz5vLOO++Y49mlS5fa3UwAgE0mr57snO/epLutbQEQmDyqaauKFi1qArOuAVsVHh5uSiWkXw8AAAD4iu+//14GDhwojRs3lqCgIOco4cWKFTMB3RtuuEGGDBlidzMBADbYFrvNDEKm6lWsJ01rN7W7SQACkEeZthbNtN21a5ecOHHCHOSm17Nnz7w8PADAJklhJSSxeAnzFwAKI706zEoyiIiIMPVrNfPW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u9lDu9lH29lDu9lDu9lH29kTaO0WGxtbbhm/GixChzro1q2brF271q0nrN52HS7BlS53La90IrLSygMAAAAAAACAP/OrnrZKhy4YOXKkdO/eXZKSkmTu3LmSnZ0to0aNMvePGDHCjHs7Y8YMc3vs2LHSu3dvefrpp2XgwIGybNky2bhxo7z44os+fiUAAAAAAAAAUAuStkOHDpW0tDSZPHmypKamSpcuXWT16tXSqFEjc//evXvdZpPr1auXLF26VB599FF5+OGHpX379rJixQrp1KlTldVRh1eYMmVKiWEWUDbazT7azh7azT7azh7azR7azT7aDqeC7cce2s0e2s0+2s4e2s0e2s0+2s4e2q10QZZjNgcAAAAAAAAAgM/51Zi2AAAAAAAAABDoSNoCAAAAAAAAgB8haQsAAAAAAAAAfoSkLQAAAAAAAAD4EZK2HjzxxBPSq1cviYqKkri4OK/W0fncJk+eLE2aNJE6depI3759ZceOHW5ljhw5IjfccIPExMSYx7355pslKytLapOKvsY9e/ZIUFCQx8vbb7/tLOfp/mXLlkltYWfbuOiii0q0ye233+5WZu/evTJw4ECzLScmJsr48eOloKBAapOKtp2Wv/vuu+WMM84wn9XTTjtN7rnnHklPT3crV9u2ufnz50urVq0kMjJSevToId98802Z5fXzd+aZZ5ryZ599tnz44YcV/s6rDSrSbi+99JJccMEFUr9+fXPRNile/qabbiqxXfXv319qo4q03ZIlS0q0i67nim3Ou98Bvej3fiBucyiJmNYe4ln7iGntIZ71HjGtPcS09hDP2kdMW0kslDB58mRrzpw51rhx46zY2Fiv1nnyySdN2RUrVlj/+c9/rCuvvNJq3bq1lZOT4yzTv39/65xzzrG++uor61//+pfVrl07a9iwYVZtUtHXWFBQYKWkpLhdpk2bZtWrV8/KzMx0ltNNdfHixW7lXNu2prOzbfTu3dsaPXq0W5ukp6e7tW2nTp2svn37Wt9//7314YcfWg0bNrQmTpxo1SYVbbvNmzdbgwcPtlauXGnt3LnTWrt2rdW+fXtryJAhbuVq0za3bNkyKzw83Fq0aJG1ZcsWs93ExcVZBw4c8Fh+/fr1VkhIiPXUU09ZP//8s/Xoo49aYWFhpu0q8p1X01W03YYPH27Nnz/ffN62bt1q3XTTTaaN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NlsbdjpPpe3091Z3UHft2mVt2rTJuv76663IyEhry5YtzjJscyXbzeH888+3hg4dWmJ5IG1z8IyY1h7iWfuIae0hnvUOMa09xLT2EM/aR0xbeUjaejBy5EhztLP45fPPP3eW0dt6FMBBj5pMmjTJatSokdk4L774Ymv79u1uj3v48GHz46tBsx61GjVqlFvQXBuU9xr1A1a8LZUGXS1atDBHYIrTwLdLly7mMevWrWudc8451sKFCz2WDZR227t3rwlm4+PjzfbWrl07a/z48SaAc7Vnzx5rwIABVp06dayGDRta999/v3XixAmrNqlo2+lfT59vvWjZ2rrNzZs3zzrttNNMAKZHPr/66ivnfdpDQ7/3XL311lvW6aefbsp37NjRWrVqldv93nzn1QYVabeWLVt63K50B0EdP37c7HDqjqbuMGj50aNHO4OXQG67e++911lWt6nLLrvM+u6779wej23O82d127ZtZjv75JNPSjxWoG1zKImY1h7iWfuIae0hnvUeMa09xLT2EM/aR0xbOYL0v8oecgEAAAAAAAAAYE+wzfUAAAAAAAAAAFWApC0AAAAAAAAA+BGStgAAAAAAAADgR0jaAgAAAAAAAIAfIWkLAAAAAAAAAH6EpC0AAAAAAAAA+BGStgAAAAAAAADgR0jaAgAAAAAAAIAfIWkLADVIUFCQTJ06VfzBkiVLTH327Nlje92NGzeKv7vooovMBQAAAKeOeLb6Ec8CNRNJWwCVYsGCBSZo6dGjhwS6pUuXyty5c33y3AcPHjTvw9ixY0vcp8v0vilTppS4b8SIERIWFibHjx8Xf9y2NCguz/Lly83re/nll0sts2bNGlPm2WefreRaAgCAmo549nfEs5WLeBaAHSRtAVSK119/XVq1aiXffPON7Ny5UwKZL4PcxMREad++vfz73/8ucd/69eslNDTU/PV037nnnitRUVFeP9eNN94oOTk50rJlS/GHIHfgwIESGxtr2r80el9ISIhcf/31lVxLAABQ0xHP/o54tnIRzwKwg6QtgFO2e/du+fLLL2XOnDmSkJBgAl5fKSgokPz8fAlk559/vvznP/+RrKws57Ls7Gyz7LrrrpOvv/5aCgsLnfelpKTIL7/8YtarCA0WIyMjzZF+fxARESHXXHONrFu3Tn777bcS9+fm5sp7770nl1xyidkZAAAAcCCe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"
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Explanation:\n",
      "  - Left plot shows the probability density distribution of weights\n",
      "  - Right plot shows the cumulative distribution function (CDF)\n",
      "  - Due to sparse connections, single outputs are sums of multiple weights\n"
     ]
    }
   ],
   "execution_count": 8
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 4. JITCUniformR - Uniform distribution weights\n\n**JITCUniformR** connection weights are **uniformly distributed** within a specified interval U(a, b).\n\n### Use cases\n- Networks requiring bounded weights\n- Avoiding extreme weight values\n- Controlling weight range during initialization"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:27.618973Z",
     "start_time": "2025-10-21T07:37:27.589931Z"
    }
   },
   "source": "# Create JIT connection with uniformly distributed weights\n# Parameters: (minimum value, maximum value, connection probability, random seed)\n\njitc_uniform = brainevent.JITCUniformR(\n    data=(-0.1, 0.3, 0.12, 777),  # (wmin, wmax, prob, seed)\n    shape=(800, 400)\n)\n\nprint(\"JITCUniformR matrix information:\")\nprint(f\"  shape: {jitc_uniform.shape}\")\nprint(f\"  weight minimum value: {jitc_uniform.wlow}\")\nprint(f\"  weight maximum value: {jitc_uniform.whigh}\")\nprint(f\"  connection probability: {jitc_uniform.prob}\")\nprint(f\"  random seed: {jitc_uniform.seed}\")\nprint(f\"\\nExpected weight mean: {(jitc_uniform.wlow + jitc_uniform.whigh) / 2:.4f}\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "JITCUniformR matrix information:\n",
      "  shape: (800, 400)\n",
      "  weight minimum value: -0.10000000149011612\n",
      "  weight maximum value: 0.30000001192092896\n",
      "  connection probability: 0.12\n",
      "  random seed: 777\n",
      "\n",
      "Expected weight mean: 0.1000\n"
     ]
    }
   ],
   "execution_count": 9
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:30.218864Z",
     "start_time": "2025-10-21T07:37:29.872960Z"
    }
   },
   "source": "# Test uniform distribution\ntest_spikes = brainevent.BinaryArray(jnp.ones(800, dtype=bool))\noutput = test_spikes @ jitc_uniform\n\nprint(f\"Output statistics:\")\nprint(f\"  minimum value: {output.min():.4f}\")\nprint(f\"  maximum value: {output.max():.4f}\")\nprint(f\"  average value: {output.mean():.4f}\")\nprint(f\"  non-zero outputs: {jnp.sum(output != 0)}\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Output statistics:\n",
      "  minimum value: 6.3203\n",
      "  maximum value: 13.5678\n",
      "  average value: 9.4209\n",
      "  non-zero outputs: 400\n"
     ]
    }
   ],
   "execution_count": 10
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 5. Memory and performance comparison\n\nLet's compare the memory usage and performance of JIT connections with traditional sparse matrices."
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 6. Practice: Ultra-large-scale spiking neural network\n\nBuild a million-neuron network using JIT connections."
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:32.835361Z",
     "start_time": "2025-10-21T07:37:32.828172Z"
    }
   },
   "source": "class MassiveJITCNetwork:\n    \"\"\"Ultra-large-scale spiking neural network using JIT connections\"\"\"\n    \n    def __init__(self, n_input, n_hidden, n_output, \n                 conn_prob=0.01, seed=0):\n        \"\"\"\n        Args:\n            n_input: number of input layer neurons (can be very large!)\n            n_hidden: number of hidden layer neurons\n            n_output: number of output layer neurons\n            conn_prob: connection probability\n            seed: random seed\n        \"\"\"\n        self.n_input = n_input\n        self.n_hidden = n_hidden\n        self.n_output = n_output\n        \n        # Using JIT connections, memory usage is extremely low regardless of network size!\n        self.w1 = brainevent.JITCNormalR(\n            (0.0, 0.05, conn_prob, seed),\n            shape=(n_input, n_hidden)\n        )\n        \n        self.w2 = brainevent.JITCNormalR(\n            (0.0, 0.1, conn_prob * 2, seed + 1),\n            shape=(n_hidden, n_output)\n        )\n        \n        # Estimate memory required if using CSR\n        csr_memory = (n_input * n_hidden * conn_prob * 4 +  # w1\n                      n_hidden * n_output * conn_prob * 2 * 4)  # w2\n        \n        print(f\"Network structure: {n_input:,} -> {n_hidden:,} -> {n_output:,}\")\n        print(f\"Connection probability: {conn_prob*100}%\")\n        print(f\"\\nTheoretical connection count:\")\n        print(f\"  First layer: {int(n_input * n_hidden * conn_prob):,}\")\n        print(f\"  Second layer: {int(n_hidden * n_output * conn_prob * 2):,}\")\n        print(f\"\\nMemory comparison:\")\n        print(f\"  JITC method: < 1 KB\")\n        print(f\"  CSR method:  {csr_memory / 1024 / 1024:.1f} MB\")\n        print(f\"  Savings:     {csr_memory / 1024:.0f}x\\n\")\n    \n    def forward(self, input_spikes):\n        \"\"\"Forward propagation\"\"\"\n        # First layer\n        hidden_input = input_spikes @ self.w1\n        hidden_spikes = brainevent.BinaryArray(hidden_input > 0.2)\n        \n        # Second layer\n        output_input = hidden_spikes @ self.w2\n        \n        return output_input, hidden_spikes\n\n# Create a large network (try even larger scales if memory permits!)\nlarge_network = MassiveJITCNetwork(\n    n_input=100000,   # 100K input neurons\n    n_hidden=50000,   # 50K hidden neurons\n    n_output=1000,    # 1K output neurons\n    conn_prob=0.01,   # 1% connections\n    seed=2024\n)",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Network structure: 100,000 -> 50,000 -> 1,000\n",
      "Connection probability: 1.0%\n",
      "\n",
      "Theoretical connection count:\n",
      "  First layer: 50,000,000\n",
      "  Second layer: 1,000,000\n",
      "\n",
      "Memory comparison:\n",
      "  JITC method: < 1 KB\n",
      "  CSR method:  194.5 MB\n",
      "  Savings:     199219x\n",
      "\n"
     ]
    }
   ],
   "execution_count": 11
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:39.057592Z",
     "start_time": "2025-10-21T07:37:37.006940Z"
    }
   },
   "source": "# Test large network\nprint(\"Testing ultra-large-scale network...\\n\")\n\n# Generate input spikes (sparse)\nbrainstate.random.seed(999)\ninput_pattern = brainstate.random.bernoulli(0.001, size=(100000,))  # 0.1% firing rate\ninput_spikes = brainevent.BinaryArray(input_pattern)\n\nprint(f\"Input spikes: {input_spikes.sum()} / 100,000 ({input_spikes.sum()/100000*100:.2f}%)\")\n\n# Forward propagation\nimport time\nstart = time.time()\noutput, hidden_spikes = large_network.forward(input_spikes)\noutput = jax.block_until_ready(output)\ncompute_time = time.time() - start\n\nprint(f\"\\nHidden layer spikes: {hidden_spikes.sum()} / 50,000 ({hidden_spikes.sum()/50000*100:.2f}%)\")\nprint(f\"\\nOutput statistics:\")\nprint(f\"  shape: {output.shape}\")\nprint(f\"  maximum value: {output.max():.4f}\")\nprint(f\"  average value: {output.mean():.4f}\")\nprint(f\"  active outputs: {jnp.sum(output > 0.5)} / 1000\")\nprint(f\"\\nComputation time: {compute_time*1000:.2f} ms\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Testing ultra-large-scale network...\n",
      "\n",
      "Input spikes: 103 / 100,000 (0.10%)\n",
      "\n",
      "Hidden layer spikes: 72 / 50,000 (0.14%)\n",
      "\n",
      "Output statistics:\n",
      "  shape: (1000,)\n",
      "  maximum value: 0.4500\n",
      "  average value: 0.0012\n",
      "  active outputs: 0 / 1000\n",
      "\n",
      "Computation time: 1834.77 ms\n"
     ]
    }
   ],
   "execution_count": 12
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:37:44.214099Z",
     "start_time": "2025-10-21T07:37:41.334995Z"
    }
   },
   "source": "# Use braintools to visualize network activity patterns\nimport braintools\n\nprint(\"Visualizing network activity over multiple time steps...\\n\")\n\n# Record time series activity (use smaller network for visualization)\n# Create a visualization-friendly network\nviz_network = MassiveJITCNetwork(\n    n_input=1000,\n    n_hidden=500,\n    n_output=50,\n    conn_prob=0.05,\n    seed=2025\n)\n\nn_timesteps = 100\nspike_history_input = []\nspike_history_hidden = []\n\nbrainstate.random.seed(888)\nfor t in range(n_timesteps):\n    # Generate input spikes (higher firing rate for visualization)\n    input_pattern = brainstate.random.bernoulli(0.05, size=(1000,))\n    input_spikes = brainevent.BinaryArray(input_pattern)\n\n    # Forward propagation\n    output, hidden_spikes = viz_network.forward(input_spikes)\n\n    # Record activity (first 100 neurons)\n    spike_history_input.append(np.array(input_pattern[:100], dtype=int))\n    spike_history_hidden.append(np.array(hidden_spikes.value[:100], dtype=int))\n\n# Convert to matrix\nspike_matrix_input = np.array(spike_history_input)  # (100, 100)\nspike_matrix_hidden = np.array(spike_history_hidden)  # (100, 100)\n\n# Use braintools.visualize.raster_plot to plot\nfig, axes = plt.subplots(2, 1, figsize=(14, 8))\n\nts = np.arange(n_timesteps)\n\n# Input layer activity\nax = plt.subplot(2, 1, 1)\nbraintools.visualize.raster_plot(\n    ts,\n    spike_matrix_input,\n    markersize=3,\n    ax=ax,\n    xlim=(0, n_timesteps),\n    ylim=(-1, 100),\n    xlabel='Time Step',\n    ylabel='Input Neuron ID (first 100)',\n    title=f'Input Layer Activity with JITC Connection (Avg rate: {spike_matrix_input.mean():.2%})',\n    show=False\n)\n\n# Hidden layer activity\nax = plt.subplot(2, 1, 2)\nbraintools.visualize.raster_plot(\n    ts,\n    spike_matrix_hidden,\n    markersize=3,\n    ax=ax,\n    xlim=(0, n_timesteps),\n    ylim=(-1, 100),\n    xlabel='Time Step',\n    ylabel='Hidden Neuron ID (first 100)',\n    title=f'Hidden Layer Activity via JITC (Avg rate: {spike_matrix_hidden.mean():.2%})',\n    show=False\n)\n\nplt.tight_layout()\nplt.show()\n\nprint(f\"\\nActivity statistics:\")\nprint(f\"  Input layer total spikes: {spike_matrix_input.sum()}\")\nprint(f\"  Hidden layer total spikes: {spike_matrix_hidden.sum()}\")\nprint(f\"  Average input rate: {spike_matrix_input.mean():.3f}\")\nprint(f\"  Average hidden rate: {spike_matrix_hidden.mean():.3f}\")\nprint(f\"\\nNote: Using JIT connections for just-in-time connection generation with extremely low memory usage!\")",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Visualizing network activity over multiple time steps...\n",
      "\n",
      "Network structure: 1,000 -> 500 -> 50\n",
      "Connection probability: 5.0%\n",
      "\n",
      "Theoretical connection count:\n",
      "  First layer: 25,000\n",
      "  Second layer: 2,500\n",
      "\n",
      "Memory comparison:\n",
      "  JITC method: < 1 KB\n",
      "  CSR method:  0.1 MB\n",
      "  Savings:     107x\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1400x800 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABW4AAAMWCAYAAABhlR+IAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAt6hJREFUeJzs3Qm8lHP///HPSau000YbokWUspQlSwpxlG5ElLjtIRUVKhU6drLcyU1xyxYiW/2oblJJKomSpShLZavTvp35P95f/zn3zGnOac6cWa655vV8PKbpzFwz853r+l7XNfOZz/fzzQoEAgEDAAAAAAAAAHhGqVQ3AAAAAAAAAAAQjsAtAAAAAAAAAHgMgVsAAAAAAAAA8BgCtwAAAAAAAADgMQRuAQAAAAAAAMBjCNwCAAAAAAAAgMcQuAUAAAAAAAAAjyFwCwAAAAAAAAAeQ+AWAAAAAAAAADyGwC0AAECcNWzY0C699NJiP278+PGWlZVlP/zwg3nRHXfc4dpXnGV///33hLcLyZfqvrpx40arWbOmTZgwISWvj/QwZswYq1+/vm3bti3VTQEAICYEbgEASHBg47PPPjMv2Lx5swum/fe//41qeS2n9r/66qvmN+eff757bwMHDoz5OWbPnu3W57p16yyRnnjiCdeXvOruu++2N954I+7Pq8D3PvvsE3bbSSedZIcddlhYYHhPFz0mtE+fe+65Vrt2bStbtqwL/J199tn2+uuvR9WmXbt22bhx49xzVq9e3cqVK+eC9L179/bMfp4u27ekHnnkEatUqZJ179494v233HKL2/4XXHCBpbN3333X9fVU2LFjhzVr1sytx/vvvz/qc0Zhl7vuuits+ffff9+OP/5423vvva1atWr2j3/8Y7cfAgKBgA0fPtz2339/t7/27dvXtm/fvlsQX/e/8MILEY8jWv7JJ5+MeT0AAJBKBG4BAMgQCtzqC3C0gVu/ys3NtbfeessF3F588UUXGIg1cKv1GSlwu2zZMnvqqaeK/ZyXXHKJbdmyxRo0aODJwO3tt9/u2ueFwJ4CsP/5z3/yL//617/c7V27dg27/bbbbnO3Dxs2zE4++WT78ssv7aqrrnKZeDfffLML+nTr1i1i0CeU3vdZZ51ll112meszt956q3vNnj172pw5c+zoo4+2n376yfymsO0bqa8mM6CowO0///lP22uvvXa7X9tH+7b2ce3rGzZssHQO3Oo4kwqPPvqorVy5MurlmzZtGrbvBS8dO3Z09wev5e2337bTTz/dZcLm5ORY//797cMPP3SB3N9++y1/OWVUqw9efvnlbplnnnnGHnjggbDXVUBY2/qiiy7arU3ly5e3Xr162YMPPhjzsR4AgFQqndJXBwAAiBN9Kd+6datVqFChyOVee+01lzmpAMApp5xiH330kbVv3z6ubVEmZiwUhIoUiPKK0qVLu4sXHH744e4SpJIM11xzjbvt4osvDltWWeMjRoxwGX0K0JYpUyb/PgVvp06d6oKBRdFyU6ZMsYceeshl/YVSUFi3Z5JU9lUF/RTcU+Z8JPpxSkH06dOnW6dOnVxGtYJ3XrBp0yarWLGied3atWvdPqNRCUOHDo3qMbVq1dpt3xMFnhs3bmxHHXVU/m163gMPPNBmzZrlst9F2e9HHnmkC+QGg7Pa1j169HBtEf1YMHnyZBs8eLD7+/vvv3dBfB3HC6N+cu+999qMGTPcMR8AgHRCxi0AAEkUHP79888/W5cuXdz/99tvPxswYIALJgZpuGhweKoCQspqU0BSAUZlDIbSsO3Q4eChr6UspODz6XWCX6KDQ1fjMQRXbWzXrp3VqFHDtbF169a7lVdQu4844oiIjz/00ENdcCUoLy/PHn74YWvevLnLllIwQBmSf/31V9jj9N6UAamgW5s2bdxrRzMcVhlcp512msu+VIZYYTUyv/76a/eFX+tNz612BrM3td4UyJNGjRrlr8/gMN/QGrcaQq/7nn322d1eQ23XfQpORKobquf56quvXCZa6ND/5cuXu/9HChYqE1j3KeOwsAD3vvvua/369Qtb51WrVnWBuNAM4nvuuccFapWVGqnGrf6vQJTeW7B9BWv76vl0m56/SpUqrqyAsr+TaciQIa60gYL1oUHbIPU/9aXCKAiovqV+UzBoK1pv2ocPOOCA/NsWLlxoZ5xxhlWuXNnt56eeeqp98sknYY8Lbm8Fr7Q91NcU1FPWcGjWYWh///jjj112r/YNBb6ee+653dqjda521qtXz/2IcPDBB7ttqe0cSn8r6NWiRQv3fHp9ZUEGyz4UtX0Lq3GrDHHtu3rdunXr2nXXXbdbVnqw5MWSJUvcfqih8hrqruBaNJQBrPVx0EEHRbxf+7SG+Ou5O3ToELaPr1mzxvXpSFmsypTXe3rsscfyb/viiy/c8UvHAG3fO++805XLiKa+b/B4r+DimWee6Uo7KAgpM2fOtPPOO8/VX9W60ra66aabwjLa9fjHH3/c/T+05EBxj5Xr1693xzNdR2vQoEHumBcpEFscn376qX333Xf571v+/PNPt+3Vz4NBW9E5Qsfkl156Kf82rQ+VUQjSfhx6/FAWrspl6BxQGJ2T9Lg333yzRO8FAIBUIHALAECSKUCrQJECnQp6Kiig7KKxY8futqyCMqNHj3bBD2UYKWirjCEFH4pDAZlIQ8k13LykFPhp1aqVy4jSkFYFRRSQeOedd8KGVSsAUjDoPG/ePPvmm2/CggMKPCgoetxxx7nnVqBPgRets4JZkQq0XHjhhS6gpmVbtmxZZFt/+eUXl3Wlx4iuFWQuWDNRbT3mmGNcxt4VV1zhnluBdg27Fq234HMoeBpcn8HgeCgFFBRge+WVV3a77+WXX3ZBidDAdSgFZRQsatKkSdjQfz2f1k+koLNuU4DonHPOificCvzosaEZanq/waCOgohBCi5p2xasNRuk9ijodMIJJ+S3T9svlILfGqo+atQo938F/JI59Pvbb791QSttP62XWLz33nu2c+dO14+joWC71smiRYtcrVUFjlesWOEClnPnzt1t+euvv94tq8xdZQ2rn/Xp02e35RQAU9aw+ruOGeo7Cu7p9YIU1NIx5fnnn3dlHHT80PbW8SM0WC8afh4M8Cqwq2CdAoDBAHM02zeUAvs6Vilgq/apBIUC3hoiX3DfVXBRQWIF67Ss+riyMLWu90Q/TigzMxINvVdWfeg+rv149erV7m8FN7V+CtsfFYTX8Uv0A5uCv1q/Wn8KrGr/0vEgWuo32r9Vn1XHe60TmThxottW2t4qSaBldK1tFqR1rW0toaUHinusnDRpkguI6jraYKuC9Tr+RDsZYWGCx6jQwG1worBIoyMUxNdxOri9lKWrH6HUJxcvXuz6k364CNbI1bbVeWdP1F9Cj20AAKSNAAAASIhx48apoF5g3rx5+bf16tXL3TZixIiwZVu1ahVo3bp1/t8rVqxwy1WoUCHw008/5d8+d+5cd/tNN92Uf1v79u3dpSC9VoMGDfL//u2339xjhw0bFlX7Z8yY4ZafOHFikctt3rw57O/t27cHDjvssMApp5ySf9u6desC5cuXDwwcODBs2RtuuCFQsWLFwMaNG93fM2fOdK85YcKEsOWmTJmy2+16b7pN90Xr/vvvd+s0NzfX/f3NN9+455g0aVLYcieeeGKgUqVKgR9//DHs9ry8vPz/33fffe6x2lYFqW1a/0GDBw8OlClTJvDnn3/m37Zt27ZA1apVA5dddtlufSb0OZs3bx5x+z755JNu2aVLl4at+3333TfstSNR2/faa6/89TB69GjX5qOPPjp/G+3atcu1L7Svqe8U/Pio7Rfp9YLLhr4/6dq1a6BGjRqBPdFz6rlDaT1ofURSWP9+88033e0PPfRQIFZaB3qOhQsXRrV8ly5dAmXLlg18//33+bf98ssvrk+pbxXc3h06dAjrW3o9bR/tNwX7+0cffZR/29q1awPlypUL9O/fP/+2kSNHuvWmvh1q0KBB7jlXrlzp/p4+fbp7Pu2DBYW2pbDtW7Cvqi16zx07dnR9J+ixxx5zyz3zzDNh21G3Pffcc2H7Q+3atQPdunUrct3u2LEjkJWVFfaeQ7366qvuub/99lv3t/q4jj2h2z+47yxevDjssc2aNQs7bl1//fXutUK3+x9//BGoXr16oft+qODxXut+T8dNGTVqlHu90OPOddddt9s+V9xjZXBb6XpPtO11HLjwwgvDzkU6ZhTXzp07A7Vq1XLPFyp4bDn11FPDbv/9999df9PrffbZZ/nb7/jjj3e36aL9X+dE9QNtr5ycnKjacuWVV7pjPwAA6YaMWwAAUuDqq68O+1sZbRr+XpCyBDWEOEiZRsoE1YQ1XhGaNaUsOmVu6v0sWLAg/3YNkVcGaOhkYMo8Voab3mOw5qOy0LSsssxUszR40VBXZX0qWzaUyhQUlq1aWPZX586d8zMvVXdRzx2auaoh6spG1SRUGsYcKtbsM81srww41doM+r//+z83hDzWWe+VvarsyNC2q/SC1teehjdr+2j9K3MxmFmr23TR/0XZ0Wqfbot3X//jjz/cJHHJEHydWLNti/scWq/aturXyowOqlOnjps8SaUOCr73K6+8MqxvBbfPjz/+GLachv+Hbg9leGs4e+ixQ/uQllE2bug+pJIBes5gprWyUvWayvItKJZ+/sEHH7jMdWXwlir1v68YylhXuYjQDHzR/hzaTzVkXse3SMfBUBpmr2NI6PD5UNoflOWu8hDBbaZ9PnQ/Uca8Rgbo+BOk/q7h+6H7o2oat23bNiyTX0PuQ7NHo6Gs2qKOmypHoW2kkjN6byqzsSfFOVYqK1vPW7CMSSTKiFdmqzKwS2ratGludEjB9aX+oWxh3a9MZmXFz58/3x3TgqMfgiUjtP1UKkZZz59//rm76JyokhzK3FUWdLDkhm5Xn4p0bFF/0XMmu0wLAAAlReAWAIAkC9aSLPilsmBdwmBgsaBDDjlkj7UVk0n1WY899lj3vhTUCJZlKFhPUUOANUN5MDCoQI++1IcOP9cXeD1Ow4r1PKEX1VnVhDkFA7fRWrp0qQuIaFixhpwHLxq+rvcQ/LIfDBypBme8aDi4hoKHBor0f9WajXWyHNWM1WQ+mmwrSMEpBS/29JwaNqwhycFtEQzcnnjiia6+qSZ5C96nWd5LomDwOxhwi9TfE0FBQ1G5hmQ8hwL/Cg4poFqQhqurLumqVatiWkcFlwsuG7qc9iEFHAvuPwrcSnAfUt1VlTTQPhsPwSBzwfetgKwC2AWD0CoBUjBAXNhxMJLgD0Ch9EODftRSKYTQfVz7vPq1yrKI9jvVHA4tl6D9UcHc0PIxanMwABwq0m2F0XOG1j4O0rFQgVSt/2Ct8+AkidHUoi3usTIaOgYqkKryCyqfUVI6Hqn0RKQfp1RaR6U6VNdY5zQF27WudJuElmdRoFc/Wug4qmUUoFZZDpWeUB9S7WfVaVYNW61XlR4prL+UtPQDAADJ5o1pgQEAyCDxnoldX0QjBTFCJztLFAX3srOzXcBPGVDKKtTkT5q8JzSgKMqMVX1J1d7U8rquXbt2fkBJFNRSIKKwCcMKBrwj1UgsjF5PlKGlS0HKQFSNyERR8OKuu+5yQQdlkWlmdNXfVCAiVgqGK/NOmbMKXOg5r7322rCMx0i0jZS5rexLBbZUT1KBW20fZQarDqu2rYLNker2xqO/R+qziaD3IMoijMdz7KmOciLXUTTLaR9SFqZq60aiIJkXxNovFOjUMS9SgFf7grIwVTNXl4J0XAnWV9aEVtrflcGpbaogroK5CurGk2oEF9wfdWzWNlL2sOr6qn9p1IFq6iqYW3ASuUiKe6yMhgKhynjVsSr446Am5hOtb92mYH/ohGKFUXaraurq+K7jSkF6jn//+9/umKiAupZR31RWutZXUcFx1YzWj0/Katdx6tdff3UBYP14qO2r2sk6B4Wud7VfP1YV55wBAIAXELgFAMDDlFVVkL7kakb10Cy1SMOLC2a4JSLTSMFOfVnWEH0FKIL0pTlSoEZfyjUUV8NwNTO8hlGHBnA0S7wycZUhF88v2AoGKZCs4bQKbBY0cuRIFwBRICc4vL3gRGoFFXd9KhiioILWmYIUym5T8GhPinodBSgUoFHbFYhVpme0E2gpUKvtoPWtYJWCR3otzVCvYIguymQrSfu8QMEgZYEqG08TOBU20VpRzjjjDNdPFfzf0/rV9lCASBPnFaRJ0hRMikc2Y2G0DynjMvQHkcKW036r4GFRWbfRbt8GDRq4a73v0BIRCgRqYrY9tSda+qFDbddzFqT9QJnykco/aFIrHQOCgVsF/TRcP5gFr+Oqsk0Lvif9sFFQpNuKQz8A6PU0AVjoZGSabCva9Z+IY6WyVRXg1DGgIE0ApotGLUTz44V+RFKG+p7KSuhYGAzsKqD93//+1x3LCttPNYnfM88840oriCYy0zlQ5yFRYFl9TpnvoQFj9RdlvAMAkG4olQAAgIcpuKksrNDZvpUNqUBS6Bd4BYT0RTX0y23BGbQVTAoOJ44XBbMUWAjN7lVWltodiYJeCgwoYKLgUsFarKpxqOdSIDXS7Oyxtl3rQu1SYPYf//jHbhcFVVUTUkEABd6UEazggAIZhWUDBuvyRtsmBQ2UFatAkS7KTtbr7Ilep7DXUBBLWbvKFlRAXM9/+OGHRx24VXaiZo5XOYRggEi3a+Z6rYto6tsW1T6vULBOdXX/+c9/un5UkGrSqlxGYRRo1Y8MWu7RRx+NmP2oDE9lJ2qf6NixowsUh5Y0UVkQBQ61roOlFxJB+9CcOXNcULYgbafg++/WrZvrz8FAZlH9PJrtq8CssihHjx4d9vinn37aDelXndl4Ud1ZlT4IpfITyiDX+4+0j2vfV8BVx89gqRGNAtC+89JLL7m2K5gbSvdrXSorN0iB7sKyXKMV/LEqdD3p//phoaDCjjPFOVZq/escsacSDDfccIPLkg29KOAtygTW38HyNMrM13Mq2zUS9XWdc7p27WrFyfjV8/Xv37/QZW688Ua3HwdL2Sg4q3OftkuwJI6OiwUzp1VzXTWEAQBIN2TcAgDgYRouqkCPJrcJBtlq1KgRNgxak2g9+OCDLsig+oCqbThmzBiXNRU6SYuyslQnUEFDZSEqy05ffvdUy1UZovqCXlCvXr1cMEavrcxPZdPqtR9//HHX7i+++GK3x7Rq1cq9noY0K5Cp4a6hVONRQd1Ro0a5YIkCYBrWr8xjPUaBDQVhYq21WFjwSOUebrvtNhfA6devnws+ab2rfZo4SsEKBeE0wVIwiKNJgESPU+as2qmas8FASyQKEA8dOtRlh2lb7amkQfB1VDP4zjvvdOtVw6NDa9gqY0/tVeC5OBMKKfilAIcyJPUegxRM1utJNIFbtU+Zf+oHynbTulLGnJdovSvLUcOylTGoYLeyKRXMVT1YTZJUsLRHQQrMqi6sgluaZE7ZyMr0U3BffVP7SDCDWttK2ZPqQ8rw1npWAEz7sIZ0J5LqkyrbUe1TsE3bR5Nf6f2/+uqrrh8rqKXsc/2Qor6j/Uv7sALQyrTWfX369CnW9tUPHspYDQ5V1z6lvqUSKkcdddQeJ8wrDk10qB8XlLUaLP2g7afgp143kjPPPNNth2B2erBfqF1qo46fCuaG0nFWWdYqa6C6qdq3NbxftYYVKIw121zZ7frBbcCAAe6HOQXydZyNVP4heJxRv1MbdRxTPyvOsVIBVwWuNRKiqAnKdLwreEwO/vig80loYFvt1jFc5wH9aBRK6+a9995zPw4Uljmr9ar3rOONllEfUxBdQVk9LhK9L51X9LjQ45iCt+edd56rT6zgr65DR3IoO1dtUr8BACDtBAAAQEKMGzdO6VSBefPm5d/Wq1evQMWKFXdbdtiwYW7ZoBUrVri/77vvvsADDzwQqFevXqBcuXKBE044IbBo0aLdHv/8888HDjzwwEDZsmUDLVu2DEydOtW9VoMGDcKWmz17dqB169ZuOT2/XrcwM2bMcMsUdpk5c6Zb7umnnw40btzYta9JkybufRd8P6Huvfded9/dd99d6GuPHTvWtbNChQqBSpUqBVq0aBG45ZZbAr/88kv+MnpvnTt3DuzJ9u3bAzVq1HDrriiNGjUKtGrVKv/vL7/8MtC1a9dA1apVA+XLlw8ceuihgSFDhoQ9ZuTIkYH9998/UKpUKfeetN2CbdP6L+jbb7/NX38ff/xxoX0m+DyyevVq9z61HnRf+/btd3tc8+bNXRt++umnQHEcddRR7jnnzp2bf5ueQ7epzxUUabt+/fXXgRNPPNFtK90XfN/BZX/77bc9vsdIevbsGahcuXLYbXrveq+R6HX21KenTZsWOOeccwI1a9YMlC5dOrDffvsFzj777MCbb74ZiMbOnTsD//73v11fqlKlSqBMmTJuW/fu3TuwcOHCsGUXLFgQ6NSpU2CfffYJ7L333oGTTz7Z7X97OkaE7nu63lN/1zop2Cc2bNgQGDx4cODggw92+/q+++4baNeuXeD+++93+0Po+9ExRvutltP6OOOMMwLz58/f4/YtbDs+9thj7vm0bmrVqhW45pprAn/99VdU2zHSMSuSbdu2ufek/S9Ix4j69esX+biTTjrJbfsdO3a4v3Nzc/Pfl46hkWi7anvr+HbAAQcERo0aFRg9erR7jPbNohR2vJclS5YEOnTo4PqH3ssVV1zhju16Xq3b0G10/fXXu22TlZW12/4XzbEyuK1CnzdaoeeiSLdHOs6NGTPG3Td58uRCn1fHHPWratWquePrEUcc4R6Xl5cXcfnNmze7vqF1X5D2nyOPPNK9f+3Pa9euDbt/4MCBrm8U9twAAHhZlv5JdfAYAADYbllOymy77777XFaWnygTTJOD6T0qcw0lp0xmZVArc9QvlDU3b948NwQeKEglApRBqgzTeE/4uCd9+/Z1GdQq95Ls10bxKMtdNeEHDRrkyiwAAJBuqHELAACSRr8Xq+alhvkStI0P1frUUOnQSY7SnYbsqyalSnsAkejHHwVOVd4kkbZs2RL2t8prqEyDymAQtPU+BfdVQuLqq69OdVMAAIgJNW4BAEDCqcam6m6qDqtqbWriJpTMl19+6Wo3qvaqJjpTvU4/9JMXX3zRTW73448/ulnsgUhUF1U1tRNNNVRPOukkV89VE8zphyfVDh8yZEjCXxslp4AtQVsAQDojcAsAABJOs35r8jJN/nPrrbcWOoEQoqeJpkaMGGGHHnqoC3ZqwjM/9BNNuFSvXj1XJkR9BkglTWqmfW3s2LFuMjJN3qXgrSbVAgAASLSU1rj96KOP3IdyZYv8+uuvbsbT0NlK1bRhw4bZU089ZevWrbPjjjvOzXLcuHHj/GU0Q6hmeX3rrbfczMyahVS18wqbwRQAAAAAAAAAvK5UqofDHXHEEfb4449HvP/ee++10aNH25gxY2zu3LlWsWJF69Spk23dujV/mR49ethXX31l77//vr399tsuGHzllVcm8V0AAAAAAAAAgI8ybkNp6FFoxq2aVbduXevfv3/+bNrr16+3WrVq2fjx46179+62dOlSN2mFZhxu06aNW2bKlCluSNNPP/3kHg8AAAAAAAAA6cazNW5XrFhhq1evtg4dOuTfVqVKFTvmmGNszpw5LnCra9XKCwZtRcurZIIydLt27Rrxubdt2+YuoTMXq+RCjRo1XAAZAAAAAAAAAIqixNMNGza45FHFIzMmcKugrSjDNpT+Dt6n65o1a4bdX7p0aatevXr+MpGMGjXKhg8fnpB2AwAAAAAAAMgcq1atsgMOOCBzAreJNHjwYOvXr1/+3yrBUL9+fbeSK1eunNK2AQAAAAAAAPC+3Nxcq1evnlWqVCkhz+/ZwG3t2rXd9Zo1a6xOnTr5t+vvli1b5i+zdu3asMft3LnTlT0IPj6ScuXKuUtBCtoSuM1ckydPtpycHBs0aJBlZ2enujkAgDTEucTb2D4A4G8c572N7YNk9p3JSe5viSq9Gv/iC3HSqFEjF3ydNm1aWBRbtWvbtm3r/tb1unXrbP78+fnLTJ8+3dWsVS1coDi0Q6tusq4BAIgF5xJvY/sAgL9xnPc2tg+S2XdyfNLfUhq43bhxo33++efuEpyQTP9fuXKli1T37dvX7rzzThclX7x4sfXs2dMV++3SpYtbvmnTpnb66afbFVdcYZ9++qnNmjXL+vTp4yYu03JAcehXGP0YoGsAAGLBucTb2D4A4G8c572N7YNk9p1BPulvWQFNf5Yi//3vf+3kk0/e7fZevXrZ+PHj3cxsw4YNs7Fjx7rM2uOPP96eeOIJO+SQQ/KXVVkEBWvfeustN3tbt27dbPTo0bbPPvtE3Q5l8lapUsXVuqVUAgAAAAAAAIBUxxRTmnF70kknueBswYuCtqKs2xEjRtjq1att69at9sEHH4QFbaV69er2wgsv2IYNG9xKeuaZZ4oVtAWSTRnk7dq1c9fwB7apt7F94Ed+69d+ez8AvI/jzt9YDwDgbSnNuPUKMm6RTPpgpDorStmfPXt2qpuDOGCbehvbB37kt37tt/cDwPs47vyN9QAAJePrjFsgE/mlzgr+h23qbWwf+JHf+rXf3g8A7+O48zfWAwB4G4FbJBVDccyys7Pdr9m6hj+wTWPD8QCInd+OO357P/A2zj+I9bjjx77D8Td5/Nh/AL/tC5M92DZKJVAqIakYigMg2ccDjjsAgFCcFxAr+g5Kgv4DeH9faBdD2yiVAF9hKA6AZB8POO4AAEJxXkCs6DsoCfoP4P19YZAH20bGLRm3AFJAQy9ycnLcCYGhaf7ANgUAhOK84G1sHwBAOsQUCdwSuAWQAl4eHoLYsE0BAKE4L3gb2wcAEA+USgAAH/LiEAyUDNsUABCK84K3sX0AAOmAjFsybgEAAIBCMaQcAAAgMjJuAQAAAKSMgrYaUq5rAAAAJA+BWwAAAACFYkg5AABAahC4BQAAEYdGa+IWXQPIbCqPoMmbKJMAAN7HZzj/rTcvtw2JR41batwCALAbZtsGAABIP3yG899683LbYNS4BQAAycfQaAAAgPTDZzj/rTcvtw2JR+AWQIkwbAN+FEu/TtZjkoWh0cmTrH7g5f4Gtg8AIHWf4TgHefuzr5fbhsSjVAKlEoASYdgG/CiWfp2sx8B/ktUP6G/exvYBAKQK5yAgdpRKAOBpDNuAH8XSr5P1GPhPsvoB/c3b2D4AgFThHAR4Fxm3ZNzGTMMocnJy3MGdlH0AgJdxzgKA9JCs43Usr8O5BEAojglIRkyRwC2B25gxnAIAkC44ZwFAevBy+RjOJQBCcUyAUCoBnsVwCgBAuuCcBQDpwcvlYziXAAjFMQHJQMYtGbcAAMQFw8UAlATHEAAAkG5yKZWQeARuAQAoOYaLASgJjiEAACDd5FIqAQAApAOGiwEoCY4hAAAA4QjcIi2GzSkDQ9d+4Lf34zdsHyB2GtqsLDmGOAOIBccQwL9i+YzN53IAoFSCQ6kEb/PbsDm/vR+/YfsAAAAAqf+MzedyAOmAUgnIeH4bNue39+M3bB8AAAAg9Z+x+VwOAGTcOmTcehszDAMAAAAAAMBryLhFxlPQVkNkdA0AAAAAAABkAgK38DyGyAAAAAAAACDTELhFUsUyMygzDCNWzEQL/I19wX/YpgAAAID/UeOWGrdJxcygSCb6G/A39gX/YZsCAAAAqUeNW/gKZQ+QTPQ34G/sC/7DNgUAAAD8j8AtkiqWsgcMB0WsKLMB/I19ITaxnH+Sdc5K1jblHJw8rGvgb+wLAOBvHOeLh1IJlErwPIaDAgDS5fzjt3OW396Pl7Gugb+xLwCAv/ntOJ9LqQRkOoaDAgDS5fzjt3OW396Pl7Gugb+xLwCAv3GcLx4ybsm4BQAAAAAAAFBMZNwCAODTOqUAAITi/AP8D/sD8Df2hcxGxi0ZtwDga9QpBQCkC84/wP+wPwB/Y1/wNjJuAQAoAeqUAgDSBecf4H/YH4C/sS9kNgK38DyGBfgP2xTJ7AfZ2dnul2ldJ/IxXsY+BwDpwW/nH6Ak/LY/JOvzGJ/7/Mdv+wKKh1IJlErwPIYF+A/bFEI/SB7WNQAAQGZ8HuNzH5BclEpAxmNYgP+wTSH0g+RhXQMAAGTG5zE+9wH+QsYtGbeOhlHk5OS4gzvp90DxsP8AAAAglfg8ipKg/wDejSkSuCVw6zCcAogd+w8AAABSic+jKAn6DxA7SiUgKRhOAcSO/QcAAACpxOdRlAT9B/AuArdwmKUQiB37DwD8D7NZexvbB/AnPo+iJMd5v/WfZJ3rYnkdzsMoLkolUCoBAAAgbhhu6W1sHwDwN47zyVsHsbwO28d/cimVAAAAgHTBcEtvY/sAgL9xnE/eOojlddg+KC4ybsm4BQAUwMy6AIB0OZd4+Zzl5bYBAJAOMUUCtwRuAQAFMIQJAODnobrJ4uW2AQAQD5RKAAAgyRjCBADw81DdZPFy2wAASAeeDtzu2rXLhgwZYo0aNbIKFSrYQQcdZCNHjrTQJGH9f+jQoVanTh23TIcOHezbb79NabsBAOnNbzPrwtu8PPMxECv6W/LOJcl6HWaqBwAUxPk+8TxdKuHuu++2Bx980J599llr3ry5ffbZZ9a7d2+766677IYbbnDL3HPPPTZq1Ci3jAK8CvQuXrzYlixZYuXLl4/qdSiVAAAAUoXh1PAj+pv/sE0BAAVxbrDMLpWgjX7OOedY586drWHDhvaPf/zDOnbsaJ9++qm7XzHnhx9+2G6//Xa33OGHH27PPfec/fLLL/bGG2+kuvkAAAB7xHBq+BH9zX/YpgCAgjg3JF4pr0fup02bZt988437e9GiRfbxxx/bGWec4f5esWKFrV692pVHCFKU+5hjjnER/8Js27bNRcRDLwAABDHkB8nkt+HUfsPxIDb0N2+j7AEAwO/levzC04FbRey7d+9uTZo0sTJlylirVq2sb9++1qNHD3e/grZSq1atsMfp7+B9kai0ggK8wUu9evUS/E4AAOkkJyfH/QCoawCZjeMB/Ih+DQBIJzkZfN7ydOD2lVdesQkTJtgLL7xgCxYscHVs77//fnddEoMHD3a1J4KXVatWxa3NAID0x5AfAEEcD+BH9GsAQDoZlMHnLU8Hbm+++eb8rNsWLVrYJZdcYjfddJPLmJXatWu76zVr1oQ9Tn8H74ukXLlyrmBw6AUAgCCGg8KPMnmIWUlwPIAfMbQ1eWJZB6w3AAiXncGfxzwduN28ebOVKhXexL322svy8vLc/xs1auQCtKqDG6R6tXPnznWReAAAAPwtk4eYAUgNjjuxrQPWGwAgLQK3Z599tt111132zjvv2A8//GCTJk2yBx980Lp27eruz8rKcjVv77zzTvdr5OLFi61nz55Wt25d69KlS6qbDwAA4BmZPMQMQGpw3IltHbDeAABBWYFAIGBRWrdunQuezpw503788UeXEbvffvu5ScM6derkhnPE04YNG2zIkCHuNdeuXesCshdeeKENHTrUypYt65ZR84cNG2Zjx4517Tv++OPtiSeesEMOOSTq11GWriYpU71byibAi/TDhH5x14e3TBwaAADwN85zAAAglfgsglglOqYYVeD2l19+ccFSTRSm4OnRRx/tritUqGB//vmnffnllzZ//nxr0KCBC6JecMEFlk4I3MLr9KOIhkvpl3fVdQEAwE84zwEAgFTiswi8GlMsHc1Cyqjt1auXC842a9Ys4jJbtmyxN954wx5++GFbtWqVDRgwIN5tBTKWfvUL/voHAIDfcJ4DAACpxGcRpHWN2yVLlti9995baNBWlH2rMgb6haJ3797xbCOQ8TJ5BsWSYEbe5GFdAygJznNIJs5ZrAMkH30OXsdnEfiixq1fUSoB8CeGuyQP6xoAkC44Z7EOkHz0OQB+lZvgmGJUGbdB27dvt1deecVuuukml12ri/4/ceJEdx8AeAkz8iYP6xoAkC44Z7EOkHz0OQBIcOD2u+++s6ZNm7patwsXLrS8vDx30f979uxpzZs3d8tkiliGejA8BEjuvsBwl+RhXQNA8vHZMjacs1gHSD76HLx+rvPb6yADSyWcdtppVrFiRXvuued2S/1VWrCCt5qgbOrUqYlqq6fSmmMZ6sHwEOBv7AsAAJQc51MAgN8l61znt9dBBpZKmDVrlt15550RG6HbRo4caTNnzrRMEctQD4aHAH9jXwAAoOQ4nwIA/C5Z5zq/vQ4yMOO2bt26NnbsWDvrrLMi3v/WW2/ZVVddZb/88oulGyYnAwAAAAAAAJCWGbf//Oc/XTmEhx56yL744gtbs2aNu+j/uu3SSy+1K6+80jIFdUliw3oDAMDfONf7j9+2qd/eDwAA8K+oM27lnnvusUceecRWr15tWVlZ7jY9vHbt2ta3b1+75ZZbLB0lq8YtWG8AAPgd53r/8ds29dv7AQAAqeOZjFsZOHCgK4Xw3Xff2ccff+wu33//vbstXYO2saIuSWxYbwAA+Bvnev/x2zb12/sBAAD+VayMW7+ixi1Ew+VycnLch/js7OxUNweIC/o14E/J2rc5hgAAgFTy8mcRL7cN/okpFitwu2TJEnvsscfc0CKVSxCVSdAv1n369LFmzZpZOiJwC2HYHPyIfg34U7L2bY4hAAAglbz8WcTLbUMGlkp47733rFWrVrZw4UI755xzbOjQoe6i/y9atMiOPPJImzp1atwbCCQLw+bgR/RrwJ+StW9zDAEAAKnk5c8iXm4b/CPqjNsjjjjCBWlHjBgR8f477rjDXn/9dfviiy8s3ZBxCwAAsDuGAAJINo47CKIv+A/bFH6U65VSCRUqVLDPP//cDj300Ij3L1u2zFq2bGlbtmyxdEPgFgAAYHcMAQSQbBx3EERf8B+2Kfwo1yulEho2bGjvvPNOoffrvgYNGsSrXQAAAEgxhgACSDaOOwiiL/gP2xRIYMbtxIkT7aKLLrIzzjjDOnToYLVq1XK3r1mzxqZNm2ZTpkyxF154wbp162bphozb2PhtmIPf3o/f1jXbBwAAIHX4LIaSoP8A8Ktcr5RKEKWyjx492qW2r1692t1Wu3Zt94vJjTfe6K7TEYHb2PhtmIPf3o/f1jXbBwAAIHX4LIaSoP8A8Ktcr5RKCB5sX3rpJfvxxx9t27Zt7qL/67Z0Ddoidn4b5uC39+O3dc32AQAASB0+i6Ek6D8AkITALeBnGrKjX38ZuuPNdc32AYDUDG3VD/e6hj/4bZsm6/34bb3Fgs9iKAn6DwAkoVRCUZYuXWqdO3e25cuXW7qhVEJsGO4CAIC/ca73H79t02S9H7+tNwAA4MNSCUXZvn27K5uAzMFwFwAA/I1zvf/4bZsm6/34bb0BAACfZdz269evyPt/++03e+GFF2zXrl2WCdFxZsUEgOSL5djL8RoAAAAAkI4Zt1EHbvfaay9r2bJloY3YuHGjLViwIGMCtwyXAoDki+XYy/EaAAAAAJCOgdvS0S548MEH20033WQXX3xxxPs///xza926tWUKZW4FM7gAAN499nK8BgAAAACko6gzbnv06GE1a9a0hx56KOL9ixYtslatWlleXp6lGyYnAwD4GeUiAAAAAMDHpRJWr15t27ZtswYNGpjfELgFAPgZ5SIAAAAAIP1iiqWiXbB27dq+DNoCAOB3zIYOAAAAAOkn6sAtUje8VZlSugYAIBYqj6BMW8okAAD8+F2G70wAAL+KulSCn3m5VALDWwEAAACko2R9l+E7EwDAMr1UAlKD4a0AAAAA0lGyvsvwnQkA4FcEbj0uWcNbGV4EJBf7HPA39gUA8K9kfZehJBAAP+PzsmV06Z1il0oYMWKEDRgwwPbee++w27ds2WL33XefDR061NKNl0slJAvDi4DkYp8D/sa+AAAAABSOz8vm6dI7niuVMHz4cNu4ceNut2/evNndh/TE8CIgudjngL+xLwAAAACF4/OyZXTpnWJn3JYqVcrWrFlj++23X9jt06dPtwsuuMB+++03Szdk3ALwKw3xyMnJcScehg8C/sG+DXh/n2M/BRCKYwLgT7kJjilGHbitVq2aZWVl5TdE/w/atWuXy8K9+uqr7fHHH7d0Q+AWgF8xrAbwJ/ZtwPv7HPspgFAcEwB/yk1wTLF0tAs+/PDDphjvZZdd5koiqFFBZcuWtYYNG7oDEADAO/SLfvCXfQD+wb4NeH+fYz8FEIpjAoCklEr48MMP7bjjjrPSpaOO+aZNdPzFF1+07t27p7o5AACkHMP5kMx+QH8DAGB3nB9jw3pDMvuBZ0olBC1YsMDKlCljLVq0cH+/+eabNm7cOGvWrJndcccdLvs23QRX8lFHHWWffvppqpsDAEDKMZwPXp/BFwAAv+P8GBvWG5LZDxIduC1V3AdcddVV9s0337j/L1++3E1Itvfee9vEiRPtlltusXTWr1+/VDcBAABP8OKMqki+TJ7BFwCAVOP8GBvWG/zUD4qdcasosrJuDzroILvnnnts+vTpNnXqVJs1a5YrM7Bq1SpLN0xOBgAAAAAAACCtM24V583Ly3P//+CDD+zMM890/69Xr579/vvvcW8gAAAAgMyoRadhjbpGYrGuAf9i/wb8pdgZt6eccooL0nbo0MEuv/xyW7JkiR188MFu0rJevXrZDz/8YOmGjFsAAAAgtahJmDysa8C/2L+BDM+4ffjhh12phD59+thtt93mgrby6quvugMEAAAAAGRqLbp0wLoG/Iv9G/CXYgVud+3aZevWrbOPPvrIRZKHDRuWf999991nzz77bCLa6BsMWYAfJatfs/9A6AfA39gX4Mc+mp2d7bLDdJ3I10Fs6xqxoY8i2di/gQwvlVC+fHlbunSpNWrUyPwiWaUSGLIAP0pWv2b/gdAPgL+xL8Dr+HwA/I0+CgD+luu1UgmHHXaYLV++PO4NyQQMWYAfJatfs/9A6AfA39gX4HV8PgD+Rh8FACQ143bKlCk2ePBgGzlypLVu3doqVqwYdn86Tu7F5GQAkHwaMpiTk+O+yDCUC/AP9m0AKNkxkeOoP7FdAX/KTXBMsdiB21Kl/pekm5WVlf9/PY3+Vh3cdEPgFgCSj6GDgD+xbwNAyY6JHEf9ie0K+FOu10olzJgxI/8yffr0/Evw73j7+eef7eKLL7YaNWpYhQoVrEWLFvbZZ5+FBYyHDh1qderUcfd36NDBvv3227i3AwAQXwwdBPyJfRsASnZM5DjqT2xXAEkJ3LZv377ISzz99ddfdtxxx1mZMmXsvffesyVLltgDDzxg1apVy1/m3nvvtdGjR9uYMWNs7ty5rnRDp06dbOvWreYHzEKaPKzr5K0D1jWEGW8Bf2LfBoD/4ZiIIPoCgISVSvjiiy/cpGQqk6D/F+Xwww+3eNEvUbNmzbKZM2dGvF9Nr1u3rvXv398GDBjgblNqcq1atWz8+PHWvXv3tC+VwHCK5GFdMwM0AAAAkGp8VgaA9JHrhVIJLVu2tN9//z3//61atXLXBS+6PZ6UjdemTRs777zzrGbNmu75n3rqqfz7V6xYYatXr3blEYK0so455hh3ovMDhlMkD+uaGaABAACAVOOzMgCgWBm3P/74o9WvX99NPqb/F6VBgwYWL+XLl3fX/fr1c8HbefPm2Y033ujKIvTq1cv9+qhSCr/88ourcRt0/vnnu7a+/PLLEZ9327Zt7hIaHa9Xr54nM27hP8wmiljRdwAAAOKDz1UAQnFMQFpn3Hbt2tXWrVvn/v/ss8/afvvt5wK0kS7xlJeXZ0ceeaTdfffdLtv2yiuvtCuuuMIFbkti1KhRbqUGLwraAsmik4EywnUNFAd9BwAAID74XAUgFMcEeFVUgdulS5fapk2b3P+HDx9uGzdutGRQFm2zZs3CbmvatKmtXLnS/b927drues2aNWHL6O/gfZEMHjzYRcKDl1WrViWk/UAkDH1CrOg7AAAA8cHnKgChOCYgrUslqPPus88+dvzxx7vArSYC09+RDB06NG6Nu+iii1xQNXRysptuusnmzp3ryiQEJydTezRBWTBFWfVw/TI5GRiyAAAAAKQjPscDSAWOPUimRMcUowrcLlu2zIYNG2bff/+9LViwwGXBli5devcny8py98eLatpqRk0Fi1W39tNPP3WlEsaOHWs9evRwy9xzzz1uh1QJh0aNGtmQIUPsiy++sCVLluTXyN0TArfexqyqAAAAQPrhczyAVODYg4wL3IYqVaqUrV692mW1JsPbb7/tSht8++23LjCricoUvA1S8xVUVjBXdXiVFfzEE0/YIYccEvVrELj1Nn4tAwAAANIPn+MBpALHHmR04NaP/Ba45SAFAED64LwN/I19AQCQTjhvwTOB208++cSOPfbYqJ5w8+bNtmLFCmvevLmlC78FbhkWAABA+uC8DfyNfQEAkE44byEZMcVS0Sx0ySWXWKdOnWzixIm2adOmiMuopuytt95qBx10kM2fPz/e7UQxMBsiAADpg/M28Df2BQBAOuG8hWSIKnCroGznzp3t9ttvt6pVq7ps2tNOO83OPvtsV1N23333tSOPPNJl2v7f//2f9ezZM/EtR9oOJdCvUroGAADmhtYpS4Mhdsh07AuAf/E9EEA6HEMme/BYVewat5999pl9/PHH9uOPP9qWLVtc0LZVq1Z28sknW/Xq1S0dUSohebzcNgAAAABA/PE9EH5Ev/bfum4Xw+skOqZYurgPaNOmjbvAu5SmHyyQ7TVebhsAAAAAIP74Hgg/ol/7b10P8uA2japUAtKLl4eZebltgNd5cdgGko9+AAAoKc4lsWG9xY7vgfAj+rX/jtnZHtymxS6V4Ed+K5UAwJ8YigOhHwAASopzSWxYbwCQPsffdkk6Zic6pkjGLQCkCWYthdAPAAAlxbkkNqw3AEif4+8gnxyzybgl49bzlNYerDESbbp6LI8BAAAAgHTE9x8E0RcAf8UUCdwSuPU8L6fEAwAAAECq8f0HQfQFILk8VSohLy/PnnnmGTvrrLPssMMOsxYtWrhfcJ577jkj/otEyeSUeAAAAADYE77/IIi+APhL1Bm3Wuzss8+2d99914444ghr0qSJu23p0qW2ePFiF8B94403LB2RcRsbhmAAAIBU4XMIhH4AAABSyTOlEsaNG2c33nijvfnmm3byySeH3Td9+nTr0qWLPfbYY9azZ09LNwRuY8MQDAAAkCp8DoHQDwAAQCp5plTCiy++aLfeeutuQVs55ZRT3K/cEyZMiHf74GEMwQAAAKnC5xAI/QAAAPhZ1Bm3tWvXtilTpljLli0j3r9w4UI744wzbPXq1ZZuyLgFAABIHYa7x4b1BgAAkFqeybj9888/rVatWoXer/v++uuveLULAAAAGULBRw131zWix3oDAADwt6gDt7t27bLSpUsXev9ee+1lO3fujFe7AAAAkCEY7h4b1hsAAIC/RV0qoVSpUq4UQrly5SLev23bNldKQQHedEOpBAAAAAAAAABpWSqhV69eVrNmTdeYSBfd17Nnz7g3EMmrkaZZeXWdyMcAQt/x33rzctti4bf3AwAAAADwccatn5Fxay5AoRppGm43e/bshD0GEPqO/9abl9sWC7+9HwAAAACAjzNu4W+x1EijrhpiRd/x33rzctti4bf3AwAAAADwccbtueeeG9UTvv7665ZuyLgFAAAAAAAA4KWYYuloF1QjAAAAAAAAAACJF3Xgdty4cYltCQAAAAAAAADAocYtkoqZ2r29rv22fXg/AILYf+BH9Gvgb+wLAADL9Bq3fkaN2+RhpnZvr2u/bR/eD4Ag9h/4Ef0a+Bv7AgDArzFFMm6RVMzU7u117bftw/sBEMT+Az+iXwN/Y18AAPgVGbdk3AIAAAAAAB9QyZCcnBz3Q0Z2dnaqmwP4Xi4ZtwAAAAAAANgTBW1VOkTXANJf6Vge9O2339qMGTNs7dq1lpeXF3bf0KFD49U2AAAAAAAAREmZtsGMWwDpr9gZt0899ZQ1bdrUBWhfffVVmzRpUv7ljTfeSEwr4RvM+AogiOOB/7BNAQAlxbkEKBmVR9AkfV4sk8D+Da+b7ME+Wuwatw0aNLBrr73WBg4caH5BjdvkYcZXAEEcD/yHbQoAKCnOJYB/sX/Dj30012s1bv/66y8777zz4t4QZAZmfAUQxPHAf9imAICS4lwC+Bf7N7xukAf7aLEzbi+//HI76qij7Oqrrza/SFbGLbM7AkDJcBwFAABApuCzr/+wTf0nN8ExxWIHbkeNGmUPPvigde7c2Vq0aGFlypQJu/+GG26wdJOswC3DAgCgZDiOAgAAIFPw2dd/2Kb+k+u1wG2jRo0Kf7KsLFu+fLmlGzJuASA9cBwFAABApuCzr/+wTf0n12uBWz9icjIAAJAqfIAHAKQTL5+3vNw2AP6U6+XAbfChyrRNZwRuAQBAqjBkDgCQTrx83vJy2wD4U26CY4qlYnnQc8895+rbVqhQwV0OP/xw+89//hP3xgEAAPidF2evBQAgHc9bXm4bACQlcKuJya655ho788wz7ZVXXnGX008/3a6++mp76KGHYmoEih7qoV8Nde0Hfns/AACUlIZyKiuIIZ0AgHSQrPNWLN8dOacC/jQ5g2NJMU1ONnz4cOvZs2fY7c8++6zdcccdtmLFCks3Xi6V4LehHn57PwAAAACA+OO7I4B0OB54rlTCr7/+6lZYQbpN9yG+/DbUw2/vBwAAAAAQf3x3BBCUyceDYgduDz74YFceoaCXX37ZGjduHK92wacYuuK/YQFebhv8h/4GAEBqcA5GsvHdEck89sTyOhwXkyc7g48HxS6V8Nprr9kFF1xgHTp0sOOOO87dNmvWLJs2bZoL6Hbt2tXSDaUS4HVe7gdebhv8h/4GAEBqcA4G4OdjTyyvw3ERniyV0K1bN/v0009t3333tTfeeMNd9H/dlo5BW6/L5HRwpEc/8HLb4D/0NwAAUoNzMAA/H3tieR2Oi/Bcxu2OHTvsqquusiFDhrhJyvwWHX/xxRete/fuqW4OgAg0/CQnJ8edFDNxeIQftw/bFF7vB15uG+B17D8AACATPiPkJjjjttilEtSYzz//3JeB26OOOsplDgPwHoaheBtDixArL/cDL7cN8Dr2HwAAkAmfEXK9ViqhS5curjyCH/Xr1y/VTQBQCIaheBtDixArL/cDL7cN8Dr2HwAAEAmfERKccXvnnXfaAw88YKeeeqq1bt3aKlasGHb/DTfcYOnGy5OTxcJvaedIHvoOAABIp88Ufvvswvvx3zoAAPhbrtdKJRRVIiErK8uWL19u6cZvgVu/pZ0jeeg7AADA77OAexnvx3/rAADgb7leK5WwYsWKQi/pGLT1I9LOESv6DgAA8Pss4F7G+/HfOgAAIKkZt6mkITODBw+2G2+80R5++GF329atW61///720ksv2bZt26xTp072xBNPWK1atTI24xYAAAAAAABAhmXcXnbZZUVeEmXevHn25JNP2uGHHx52+0033WRvvfWWTZw40T788EP75Zdf7Nxzz01YOwAAAIqqzahhvrpG5qIfAACAdMPnF28qduD2r7/+CrusXbvWpk+fbq+//rqtW7cuIY3cuHGj9ejRw5566imrVq1a/u2KZj/99NP24IMP2imnnOImSxs3bpyrhfTJJ58kpC0AAABFjQ5SbUZdI3PRDwAAQLrh84tPAreTJk0Ku7z99tuutu0FF1xgxx57bEIaed1111nnzp2tQ4cOYbfPnz/fduzYEXZ7kyZNrH79+q6zAQAAJBO1GSH0AwAAkG74/OKTwG3EJylVyvr162cPPfSQxZtq1y5YsMBGjRq1232rV6+2smXLWtWqVcNuV31b3VcY1cJVDYrQCwAAQEllZ2e7kT+6RuaiH8DrGA4bG9YbAD/j84s3xSVwK99//73t3LnT4mnVqlVuIrIJEyZY+fLl4/a8CgKrcHDwUq9evbg9NwAAAAB4GcNhY8N6AwAkW+niPkCZtaECgYD9+uuv9s4771ivXr3i2TZXCkE1dI888sj823bt2mUfffSRPfbYYzZ16lTbvn27q60bmnW7Zs0aq127dqHPO3jw4LD3oYxbgrcAAAAAMoGGwSr4yHDY4mG9AQA8n3G7cOHCsMsXX3zhbn/ggQfs4YcfjmvjTj31VFu8eLF9/vnn+Zc2bdq4icqC/y9TpoxNmzYt/zHLli2zlStXurochSlXrpxVrlw57AKA4V9Asnl5n0tW27y8DuBtsfQd+lts/Lbe/PZ+YsFw2Niw3gAAyZYVUMpsGjnppJOsZcuW+UHia665xt59910bP368C8Bef/317nadUKOljFuVTFi/fj1BXGQ0fYnR8C/98FGcfQiA//a5ZLXNy+sA3hZL36G/xcZv681v7wcAAKROomOKMdW4VS3bDz74wJ588knbsGGDu+2XX36xjRs3WrJpQrSzzjrLunXrZieeeKIrkfD6668nvR2AHzCLJJBcXt7nktU2L68DeFssfYf+Fhu/rTe/vR8AAOBfxc64/fHHH+3000935Qi2bdtm33zzjR144IFuEjH9PWbMGEs3ZNwCAAAglTRsP1g7k2HYAMBxEUB68FzGrQK0qi37119/WYUKFfJv79q1a1itWQAAAADRYbZ6AAjHcREAYgjczpw5026//XYrW7Zs2O0NGza0n3/+OZ5tAwAAADICw/cBIBzHRQCIIXCbl5dnu3bt2u32n376ySpVqmSZgtloAX/uP15uGyD00diw3uB1zFYPAOE4Lnobn628je2TwTVuL7jgAle7YezYsS5Q+8UXX9h+++1n55xzjtWvX9/GjRtnmVCPgtlogdh5ef/xctsAoY/GhvUGAAAQP3y28ja2TwbXuH3ggQds1qxZ1qxZM9u6datddNFF+WUS7rnnHssUDNsA/Ln/eLltgNBHY8N6AwAAiB8+W3kb28c/ih24PeCAA2zRokV266232k033WStWrVyxcIXLlxoNWvWtEzBsA3An/uPl9vmNwzfiQ19NDasNwAlwTkLyew79DcgPXh5X/XyZ18vrzdflErwo0SnNQMAdsfwHQBAuuCchWT2Hfob0gH9lHUQK7+tt9wExxRLR7vgRx99FNVyJ554YknaAwDIEBq2oxEbDN8BAHgd5ywks+/Q35AO6Kesg1ix3hKUcVuqVOFVFbKysvKvd+7caenGbxm3SjcP7gReTIsHksVv+4Lf3g8A7+O4AwAAAKQuphh14FYNiGTz5s32yCOP2OjRo+3AAw+0L7/80tKN3wK3fks7B2Llt33Bb+8HgPdx3AEAAABSF1OMenIyNSL0UqlSJZs4caIdffTR9uKLL9rjjz9uX3zxRdwbiOJj9kDAn/uC394PAO/juAMAAACk2eRkr7/+ut16663222+/2eDBg+3666+3cuXKWbryW8YtAAAAAKQjSrQA6YF9NTasN/+tg1yvlEqQDz/80AYOHGiLFy+2G2+80f1fjUt3BG4BAAAAIPUo0QKkB/bV2LDe/LcOcr1SKuHMM8+00047zVq2bGnff/+93X333b4I2gIAAAAAvIESLUB6YF+NDeuNdZCwwO2UKVPc9csvv2zNmjWz6tWrR7wAAOCH4Tv6JVjXfuC39wMA8C8Nm1UGlh+Gz8K/n3n4bBUb1hvHuFjXweQY+o5f+lvUpRKeffbZqJ6wV69elm4olQAA8PPwHb+9HwAAgFR+5uGzVWzrgPUGP/a33ATHFEtHu2A6BmQBAIiFhu0EC+b7gd/eDwAAQCo/8/DZKrZ1wHpDrAZlcH+LulQCUsMvqd3JxnqDH9Gvk8dvQ5i8/H7o197G9mEdAMnGPudPyRrmnKwh2F7+bJUssawD1htilZ3B/S3qUgl+5uVSCQwliA3rDX5Ev4Yf0a+9je3DOgCSjX3On7w8zJk+B8DLMUUybj2O2fZiw3qDH9Gv4Uf0a29j+7AOgGRjn/OnWLZrsvoCfQ6Al5Fx6/GMWwDwKw1HC9YcSvfhK35cB15uG7yNvgMASCectwCU5HiQ6JhisQO3I0aMsAEDBtjee+8ddvuWLVvsvvvus6FDh1q6IXALAMnHsDRvrwMvtw3eRt8BAKQTzlsASnI88FyphOHDh9vGjRt3u33z5s3uPgAAosGwNG+vAy+3Dd5G3wEApBPOWwC8fDwoduBWCbpZWVm73b5o0SKrXr16vNoF5GNmWW9j+yBWfpnl06/rwMttQ/Iw0zYAIB7nBi9/Z+C8hVh5uV/DP8eDqEslVKtWzQVsg6m/ocHbXbt2uSzcq6++2h5//HFLN5RK8DaGrngb2wcA/ItjPAAgHucGzifwI/o1khFTLB3tgg8//LDLtr3ssstcSQQ1Kqhs2bLWsGFD11mBeFOKerA4NLyH7QMA/sUxHgAQj3MD5xP4Ef0ayVDsyck+/PBD96tCmTJlzC/IuAUAAAAAAABQHJ6bnKxRo0b266+/2sqVKyNeABSNOjjwOvoo6wAAAABA0fjOAE9m3JYqVSri5GSh9W7TDRm3SCbq4MDr6KOsAwAAAABF4zsDPJlxu3DhQluwYEH+Ze7cuTZmzBg75JBDbOLEiXFvIOA3qn+jAzt1cOBV9FHWAQAAAICi8Z0ByVDswO0RRxwRdmnTpo1dccUVdv/999vo0aMT00rAR7Kzs92vcboGvIg+yjqA9zE0z9vYPrFhvcGP/NivvfyevNw2+A/fGdjnPFkqoTDfffedC+Ru2rTJ0g2lEgAAQDphaJ63sX1iw3qDH/mxX3v5PXm5bYAfsc+Z90olqEGhFzXs66+/tttvv90aN24c9wYCAAAgHEPzvI3tExvWG/zIj/3ay+/Jy20D/Ih9Lk0mJ9NT1KtXz1566SW3wdINGbcASkLDQnJyctzJKpOHyQAAgPT4fODltgEAkE7nutwExxSLHbj98MMPdwvk7rfffnbwwQdb6dKlLR0RuAVQEgwPAQAA6fT5wMttAwAgnc51uQmOKRY70tq+ffu4NwIA0pl+wQv+kgcAAOD1zwdebhsAAPEwyCfnupgmJ1u2bJk9+uijtnTpUvd306ZNrU+fPtakSRNLR8nKuGVIEgAAAAAAAOAPuV6bnOy1116zww47zObPn29HHHGEuyxYsMBatGjh7kPhFLRVmrauAQAAAAAAACBuGbcHHXSQ9ejRw0aMGBF2+7Bhw+z555+377//3tINGbcAAAAAAAAA0jrj9tdff7WePXvudvvFF1/s7kPhFKxVQWSCtoB36QcWFTHXdaZiHXh7XbN9AABIDc7b/n1PQCzYF+DJjNszzzzTzjvvPOvdu3fY7ePGjbOXXnrJpk6daukmWRm3ALyPWZZZB15f12wfAABSg/O2f98TEAv2BXgy41bZogMHDnSTkak0gi76v4b/d+3a1f3SELwAQLrRsUwn3nSfebIkWAfeXtdsHwAAUoPztn/fExAL9gV4MuO2VKnoYr1ZWVm2a9cuSwdk3AIAAOyO+vwAAPhfLOd7PiPA6yYnqY8mOqZY7MCtHxG4BQAA2B1DAAEA8D/KgMCP2iWpj3quVAIAAAAyA0MAAQDwP8qAwI8G+aSPxpRxO23aNHdZu3at5eXlhd33zDPPWLpJVsYtQwkAAAAApCO+yyAd0E+B5KLMhnmvVMLw4cNtxIgR1qZNG6tTp46rZRtq0qRJlm6SFbhlKAEAAACAdMR3GaQD+imQXJTZsITHFEsX9wFjxoyx8ePH2yWXXBL3xvidfk0I/qoAAAAAAOmC7zJIB/RTwPv7HPtpgmvcbt++3UXHUXxKAdevCX5IBUfsNCxA+5Cu/fA6fsN6AwCE4rzgv/Xm5bZ5Gd9lkA7op4D3JWs/neyT832xSyUMHDjQ9tlnHxsyZIj5RbJKJQDJHBbgt+EHycJ6AwCE4rzgv/Xm5bYBAJBOvHxObZektiU6pljsjNutW7fagw8+aO3bt7frr7/e+vXrF3YB4I2ZDf0yg2Kysd4AAKE4L/hvvXm5bQAApBMvn1MHebhtCc24Pfnkkwt/sqwsmz59usXLqFGj7PXXX7evv/7aKlSo4KLl99xzjx166KFhgeT+/fvbSy+9ZNu2bbNOnTrZE088YbVq1Yr6dci4BVASfpsVEwCAdME5GAAApFKiY4rFDtwm0+mnn27du3e3o446ynbu3Gm33nqrffnll7ZkyRKrWLGiW+aaa66xd955x02YphXVp08fK1WqlM2aNSvq1yFwC8Cvw0MAAPAzzsEAACCVMjpwW9Bvv/1mNWvWtA8//NBOPPFEt1L2228/e+GFF+wf//iHW0bZuU2bNnUf4I499tionpfALYCSINsHAIDU4BwMAABSKdExxdLRLnjuuedGtZxKGySKVoJUr17dXc+fP9927NhhHTp0yF+mSZMmVr9+/SIDtyqpoEvoSgaAWOmLIl8WkSwEKQDgfzgHAwDg/+8Mk2N4P35ZB1FPTqbocTSXRMnLy7O+ffvacccdZ4cddpi7bfXq1Va2bFmrWrVq2LKqb6v7iqqdG9rmevXqJazdAADEkz586MdJXQMAAACA378z5MTwfvyyDqLOuB03bpyl0nXXXefq23788cclfq7Bgwdbv379wjJuCd4CANKBfjEO/nIMAAAAAH7/zjAohvfjl3UQdcZtKmnCsbfffttmzJhhBxxwQP7ttWvXtu3bt9u6devCll+zZo27rzDlypVzdSdCL/Aupbdr4gldA0Cm0zAfTcCTzsN9AL/jswsApA+O2fAjv31nyI7h/fhlHXg6cKt50xS0nTRpkk2fPt0aNWoUdn/r1q2tTJkyNm3atPzbli1bZitXrnQzy8If/JLeDgAAMgOfXQAgfXDMBuBlng7cqjzC888/by+88IJVqlTJ1a3VZcuWLe5+1ae9/PLLXdkDZeNqsrLevXu7oG1hE5Mh/SitXds03dPbAQBAZuCzCwCkD47ZALwsK6C0Vo/KysoqtN7upZde6v6/detW69+/v7344ou2bds269Spkz3xxBNFlkooSDVuFQRev349ZRMAAAAAAAAApDym6OmMW8WUI12CQVspX768Pf744/bnn3/apk2b7PXXXy9W0BZINmooAQD8jPMcAACIFz5XINP7gaczbpOFjFskkw42qqGk4TgqlA0AgJ9wngMAAPHC5wp4vR9kdMYt4EfUUAIA+BnnOQAAEC98rkCm9wMybsm4BQCkEQ0P0qzH+tCSnZ2d6uYAyAAcdwAAQLz47XNFboJjigRuCdwCANKIl4cJAfAnjjsAACBe/Pa5IpdSCQAAICiThwkBSA2OOwAAIF74XFE8BG6TKJNnwQNKiv0HfhRLv9ZwIv0y7YdhRQDSA8cdb/PyZyQvtw0oCfp2bFhvED5XFA+lEpJYKsFv6eBAMrH/wI/o1wAAP59LvNw2oCTo27FhvcGPcimV4B+kgwOxY/+BH9GvAQB+Ppd4uW1ASdC3Y8N6A4qPjFsmJwNQQn6bFRMAAPib3z67+O39AADSR26CY4oEbgncAighhvwAAIB04rfPLn57PwCA9JFLqQQA8DaG/AAAgHTit88ufns/AAAEEbgFgBJiVkwAANIHs5rH9tnFy+uNz2JINi/vD4DX94VkPcYv+zalEiiVAAAAAGQMhtXHhvUG/A/7AxD7vpCsx8QiltehVAIAAAAAxAnD6mPDegP+h/0BiH1fSNZj/LJvk3FLxi0AACnjt5nA/fZ+AADwO87d/sM2hZ9iigRuCdwCAJAyfhtq6Lf3AwCA33Hu9h+2KZKJUgkAAMC3vDgcqST89n4AAPA7zt3+wzaFnxC4BQDA57w8c6vfZgL38vvxcj8AAJQMx2t/nrsRG7ZpbDiOeBOlEiiVAADwOS/P3IrkoR8AgH9xvAZQUhxHYkOpBAAAUCJenrkVyUM/AAD/4ngNoKQ4jngTGbdk3MKnmEnT27y8fbzcNgBAekjWuYRzlrexfQAAfpeb4JgigVsCt/Aphjl4m5e3j5fbBgBID8k6l3DO8ja2DwDA73IplQAgFgxz8DYvbx8vtw0AkB6SdS7hnOVtbB8AAEqGjNuQ6PiLL75o3bt3T3VzAAAAPMFvw5z99n4AIF1w/E0e1jWQXJRKSOJKPuqoo+zTTz9NdXMAAAA8wW/DnP32fgAgXXD8TR7WNZBclEpIon79+qW6CQAAAJ7ht2HOfns/AJAuOP4mD+sa8BcybpmcDCgRhuIAAADsjs9IAPyMYxzwN0olJAGBWyB2DMUBAADYHZ+RAPgZxzjgb5RKAOBpDMUBAADYHZ+RAPgZxzggOci4JeMWQAowtAgAAABAJuE7EPwol1IJiUfgFkCyMbQIAAAAQCbhOxD8KJdSCQDgPwwtAgAAAJBJ+A4EFB8Zt2TcAgAAAAAAACgmMm6BGGvnaBiGrgEAABA7Plclj9/Wtd/eD/7GdgXgV5M9eHwj45aMW1+idg4AAEB88Lkqefy2rv32fvA3tisAv2oXw/GNjFsgBtTOAQAAiA8+VyWP39a1394P/sZ2BeBXgzx4fCPjloxbAEABGhqTk5PjTtjZ2dmpbg4AAAAAwIPIuAUAIMkUtNUQGV0DAAAAAJAKBG4BAEiDITIAAAAAgMxC4Ba+mm0PAOJB5RFUjJ4yCQCQPHy2ZB0AAIBw1Lilxm3MmE0UAAAA8cJnS9YBAADpJpcat/AqhhIDAAAgXvhsyToAAADhCNx6nJeHS/ltKLGX1zUQK/o1ktl36G/wI/p18vjts2UsWAcAkD74jIBkoFSCx0slMFwqeVjX8CP6NZLZd+hv8CP6NQAAiITPCBBKJWQ4hkslD+safkS/RjL7Dv0NfkS/BgAAkfAZAclAxq3HM26BZNIQj5ycHHfiYYgeAAAAgHTC9xkAfospErglcAvkY6gHAAAAgHTF9xkAyUapBABJw1APAAAAAOmK7zMA/IbAbYyYPdDb643tExtmMgYAlBTnYABAqvB9Bn78/EIcJbNRKiHGtGaGYMQmWeuN7QMAQGpwDgYAAOnGy59fiKN4G6USPIohGN5eb2wfAABSg3MwAABIN17+/EIcJbP5JuP28ccft/vuu89Wr15tRxxxhD366KN29NFHR/VYJicDAABAumH2dNaB17F9AAB+l5vgmKIvArcvv/yy9ezZ08aMGWPHHHOMPfzwwzZx4kRbtmyZ1axZc4+PJ3ALAACAdMOQRtaB17F9AAB+l0uphD178MEH7YorrrDevXtbs2bNXAB37733tmeeeSbVTQMAAAASgiGNrAOvY/sAAJDhgdvt27fb/PnzrUOHDvm3lSpVyv2tX3cj2bZtm4uIh16AWDDrIvyIfu3tdc32ARDE7OmsA69j+yRPrJ8P+FwBr6OPItOlfamEX375xfbff3/3gUC/5gbdcsst9uGHH9rcuXN3e8wdd9xhw4cP3+12SiWguBj+BT+iX3t7XbN9AABAvD4f8LkCXkcfhddRKiEBBg8e7FZo8LJq1apUNwlpiuFf8CP6tbfXNdsHAADE6/MBnyvgdfRRZLq0z7hVqQTVs3311VetS5cu+bf36tXL1q1bZ2+++eYen0PB26pVq7oALhm3AAAAAAAAAKLJuK1Xr56LQSrzNt5KW5orW7astW7d2qZNm5YfuM3Ly3N/9+nTJ6rn+OOPP9y1VjQAAAAAAAAAREuxRQK3hejXr5/LsG3Tpo0dffTR9vDDD9umTZusd+/eUT2+evXq7nrlypUJWckA0u/XMjLwAXA8ABDE8QBAKI4JAEJH8devXz8/thhvvgjcXnDBBfbbb7/Z0KFDbfXq1dayZUubMmWK1apVK6rHlyr1d6lfBW056AIQHQs4HgAQjgcAgjgeAAjFMQFAwdhivPkicCsqixBtaQQAAAAAAAAA8LLEhIMBAAAAAAAAADEjcGtm5cqVs2HDhrlrAJmN4wGAII4HAII4HgAIxTEBQLKOB1mBQCCQkGcGAAAAAAAAAMSEjFsAAAAAAAAA8BgCtwAAAAAAAADgMQRuAQAAAAAAAMBjCNwCAAAAAAAAgMdkfOD28ccft4YNG1r58uXtmGOOsU8//TTVTQKQYKNGjbKjjjrKKlWqZDVr1rQuXbrYsmXLwpbZunWrXXfddVajRg3bZ599rFu3brZmzZqUtRlAcuTk5FhWVpb17ds3/zaOB0Bm+fnnn+3iiy92+3yFChWsRYsW9tlnn+Xfr7mdhw4danXq1HH3d+jQwb799tuUthlA/O3atcuGDBlijRo1cvv6QQcdZCNHjnTHgCCOB4A/ffTRR3b22Wdb3bp13XeDN954I+z+aPb9P//803r06GGVK1e2qlWr2uWXX24bN24sdlsyOnD78ssvW79+/WzYsGG2YMECO+KII6xTp062du3aVDcNQAJ9+OGHLgjzySef2Pvvv287duywjh072qZNm/KXuemmm+ytt96yiRMnuuV/+eUXO/fcc1PabgCJNW/ePHvyySft8MMPD7ud4wGQOf766y877rjjrEyZMvbee+/ZkiVL7IEHHrBq1arlL3Pvvffa6NGjbcyYMTZ37lyrWLGi+w6hH3kA+Mc999xj//rXv+yxxx6zpUuXur+1/z/66KP5y3A8APxp06ZNLkaoZM9Iotn3FbT96quvXMzh7bffdsHgK6+8sviNCWSwo48+OnDdddfl/71r165A3bp1A6NGjUppuwAk19q1a/WzeeDDDz90f69bty5QpkyZwMSJE/OXWbp0qVtmzpw5KWwpgETZsGFDoHHjxoH3338/0L59+8CNN97obud4AGSWgQMHBo4//vhC78/LywvUrl07cN999+XfpuNEuXLlAi+++GKSWgkgGTp37hy47LLLwm4799xzAz169HD/53gAZAYzC0yaNCn/72j2/SVLlrjHzZs3L3+Z9957L5CVlRX4+eefi/X6GZtxu337dps/f75LZw4qVaqU+3vOnDkpbRuA5Fq/fr27rl69urvWsUFZuKHHhyZNmlj9+vU5PgA+pSz8zp07h+33wvEAyCyTJ0+2Nm3a2HnnnefKKbVq1cqeeuqp/PtXrFhhq1evDjsmVKlSxZVc45gA+Eu7du1s2rRp9s0337i/Fy1aZB9//LGdccYZ7m+OB0BmWhHFvq9rlUfQZ4ogLa+4ozJ0i6O0Zajff//d1aypVatW2O36++uvv05ZuwAkV15enqtlqWGRhx12mLtNB+GyZcu6A23B44PuA+AvL730kiuZpFIJBXE8ADLL8uXL3dBolVO79dZb3XHhhhtucMeBXr165e/3kb5DcEwA/GXQoEGWm5vrfrDda6+9XPzgrrvucsOf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pNjrAQAAlEzpEj4eAADAWbZsmZUqxW/CXpabm2tvvfWWy4p98cUXLScnxwV4YgncDh8+3GXWKqgUj35wySWXWPfu3a1cuXJhgVsFrlKRdX3iiSfali1brGzZskl5vf3222+3wNwDDzxgP/30kz300EO7LTtv3jw788wzbePGjXbxxRe7gK0oCKzt+tFHH9n//d//FfmajzzyiDVq1MgFCCN5/vnnrXbt2vbXX3+5gLOCd+kauFV/Vb9v2bJlUl5TfVbrrG/fvta4cWMXZNX2mjFjhh1//PFFPnby5MnWpUsXa9u2rQs4ax995ZVXrGfPnvb777/bTTfdlN9HC/YZUX9ZtGiRnXrqqe7v9evX2znnnGPHHnusXXnlla4t3bp1sy+++ML22msvt8xXX31lTz31lM2fPz9im66++mobPXq0TZ8+3U455ZQ4rCEAABANArcAACAuQgNuSK5AIGBbt251mX1Fee2112zXrl32zDPPuOCLgnvt27f3RD9QACkYRPICBZ+VaZosypZVADbUSy+95IKmBW9X9mvXrl3d+lq4cKHLuA111113uSBcUXbs2OEyMhWQK6xPvfDCC3bRRRe5zFwt65XArfq6Aupe/aHo008/ddvuvvvucxnRoqCrRinccsst7oePojz22GNWp04dFyQN7k9XXXWV284KugYDtwceeKC7hNKPDSp/of1bQXeZM2eOu12BZPXp008/3QXsv/vuOzv00EPdMgowX3HFFdasWbOIbWratKlrv16fwC0AAMnjzU87AADAF7VNlcWlL/kKKB5wwAFuCHdeXl7EIJHu0zIa8q0MQD02EgWtFGSoV6+eC2ocfPDBds8994Q9b3DY+f33329jx461gw46yC171FFHuUzFeNHzt2vXzg0l1ntU1mPB8goKjB5xxBERH6+gSejQZL2Hhx9+2Jo3b+4CLLVq1XIBGwXvCq7rs846y6ZOnWpt2rRxr/3kk0/usb0KvqmeqdavAjGhQ6lDaRi1Sioos1PPrXbedttt7j5lAN58883u/wr+FBy+H9oPlP2p+5599tndXkNt131vv/12xBq3eh71gQ8//DD/NTTEe/ny5e7/BbNQRQEx3ads4khUWqB06dIu+7IgZQrrsQqaFVbjdubMmXbeeedZ/fr1XX9SH1QQTUGxZNK2/vnnn+3BBx/cLWgr6je33357kc/x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9VMFUNW3FXBWCQIFI/U8qpOs7av1oG2sYGmQ9lvtp3uaoEzPrXIRyuLWcUF9V5na2o8KZgerD2t9BAPQWodal8ps1rrS/QoC63E//fRTftmTUMqQ1zFn0KBBe1yfqo186623ujIToRPc6diidamMXv3Yo6xrbdtQyi7Xfk6NWwAAkigAAABQwLhx4xRFCMybNy/i/e3btw80b9487LYGDRoEevXqFXbbF1984ZYtX758YP/99w+MHDky8PTTT7vnXrFiRf5yu3btCgwfPjxQp06dQIUKFQInnXRS4Msvv4z4nBs2bAgMHjw4cPDBBwfKli0b2HfffQPt2rUL3H///YHt27e7ZfTceo377rtvt7br9mHDhhX5/mfMmOGWK+wyc+ZMt5zeS+PGjQPlypULNGnSxK03PXdhH7Huvfded9/dd99d6GuPHTs20Lp1a7ceKlWqFGjRokXglltuCfzyyy9h67pz586BPdH6qFGjRuCEE04ocrlGjRoFWrVqlf+31n3Xrl0DVatWddvu0EMPDQwZMiTsMdqW2qalSpUK256Rtpl8++23+evv448/LrTPhfaL1atXu/ep9aD71JcKUj9UG3766adAceTm5rp1rOd9/vnnC+0Dug5asmRJoEOHDoF99tnH9bsrrrgisGjRIrec2l+U6dOnu+Vef/31qPczvXetz8KoT9x0002BQw45xG2nvffe2/Wdu+66K7B+/fo9roMbbrjB7UdBDzzwgGvPtGnTCn3M+PHj3TJvvvlm/m09evRwt2ndRLJp06bAddddF6hevbpbd126dAksW7bMPSYnJ6fINga3w8SJE3e7b+vWrYH+/fvnHzeOO+64wJw5c1w/KdhX1N5mzZoFSpcuvdv2WrhwYeDcc891+4r2Za3z888/f7f1UFgfjGTLli2BAQMGBGrXru2e86ijjgpMmTJlt+X0fJGOFxMmTAgcffTRbh/UezvmmGMCr776asTXGjRokHsOHW/35Oabbw60adMmkJeXF3b7xo0bAz179nSvp2NZwbYuXbrUvcYHH3wQxbsHAADxkqV/khkoBgAAyFTKmtXkYMq807BmlJwymTUp1bRp08zLlCl+zjnnuAxXTYTmBcuXL3eZxMpuT3ablL2tbacM0mjqsiK1NOHbRx995MolkHELAEDyUOMWAAAgCfRbuYY7a6g1Qdv4+Oyzz1wA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AAAAAAAkCnEH/8QUSxdn4R07dliFChXs888/t9NOO81dABSPavPk5ORQowcAAAAAAMQdcYcMzrg98MADXR3bI444wvyCjFsAAAAAAAAAaV3j9rbbbrNbb73V/vzzz7g3BgAAAAAAAABQzFIJwcnJvvvuO6tbt641aNDAKlasGHb/ggUL4tk+AAAAAAAAAMg4xQ7cdunSJTEtAQAAABA1zRQdrF+XnZ2d6uYAAIAE4Hyf2Ypd49aPqHELAACAdMOM0QAA+B/ne2/zXI1bAAAAAKmnzBt9iWPGaAAA/IvzfWYrdsZtqVKlLCsrq9D7d+3aZemGjFsAAAAAAAAAXoopFrvG7aRJk8L+3rFjhy1cuNCeffZZGz58eDzbBgAAAAAAAAAZKW41bl944QV7+eWX7c0337R0Q8YtAAAAAAAAAF/WuD322GNt2rRp8Xo6AAAAAECaz4SuSXV0DQAAUhS43bJli40ePdr233//eDwdAAAAACDN5eTkuJnQdQ0AAJJQ47ZatWphk5Op0sKGDRts7733tueffz6GJgAAAAAA/EYzoCtoy0zoAAAkKeP24Ycftoceeij/okzbt99+23788UfLzs62RNJJX0Hjvn375t+2detWu+6666xGjRq2zz77WLdu3WzNmjUJbQcAAAAAoGj6fjh79uyEf0/0MspFIIi+ACClk5Ml2rx58+z88893hX5PPvlkF0CWa665xt555x0bP368Kwbcp08fK1WqlM2aNSvq52ZyMgAAAABAvClQp3IRbdu2dUFsZC76AuBPuV6cnGzmzJl28cUXuwPPzz//7G77z3/+Yx9//LElwsaNG61Hjx721FNPuVINQVopTz/9tD344IN2yimnWOvWrW3cuHHuIPjJJ58kpC0AAAAAAERDZSIUqKNcBOgLAJISuH3ttdesU6dOVqFCBVuwYIFt27YtP4h69913WyKoFELnzp2tQ4cOYbfPnz/fduzYEXZ7kyZNrH79+u6XrMKozYqIh14AAAAAAIgnykXEzm+lBegLAJISuL3zzjttzJgxLvu1TJky+bcfd9xxLpAbby+99JJ73lGjRu123+rVq61s2bJWtWrVsNtr1arl7iuMnktpzMFLvXr14t5uAAAAAAAQ+xw3SsjSNQBkqmIHbpctW2YnnnjibrcrALpu3TqLp1WrVtmNN95oEyZMsPLly8fteQcP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vNLhvpR1cHvDDTfE7Nmz8+pvy5Yti7Fjx8akSZNi1apVxe4a0IkWLVqUQ5j7778//vCHP8Trr78eRxxxRKxfv77lms9//vNx2223xY033pivf/7552PKlClF7TfQuR566KH40Y9+FPvtt1+bduMBlI9///vfceihh0afPn3ijjvuiOXLl8e3vvWtGDp0aMs1X//61+N73/teXH311fHAAw/Edtttl79DpB95gJ5j3rx58cMf/jC+//3vx+OPP56P0/v/qquuarnGeAA90/r163NGmCZ7bkl73vsptP3LX/6SM4fbb789h8Gf/exnO96ZQhkbN25c4cwzz2w53rx5c2HnnXcuzJkzp6j9ArrWqlWr0s/mhUWLFuXjtWvXFvr06VO48cYbW655/PHH8zX19fVF7CnQWV5++eXCnnvuWfjDH/5QGD9+fGHmzJm53XgA5eVLX/pS4UMf+tBbnm9qaiqMGDGi8I1vfKOlLY0T/fr1K/zyl7/sol4CXeHII48snHrqqW3apkyZUjj++OPz38YDKA8RUbjllltajtvz3l++fHl+3EMPPdRyzR133FGoqKgoPPfccx16/bKdcbtx48ZYunRpns7cbJtttsnH9fX1Re0b0LXWrVuX99tvv33ep7EhzcJtPT6MHj06Ro0aZXyAHirNwj/yyCPbvO8T4wGUl7q6ujjwwAPjmGOOyeWU9t9//7jmmmtazj/zzDPx4osvthkTBg8enEuuGROgZ6muro4FCxbEX//613z86KOPxuLFi+NjH/tYPjYeQHl6ph3v/bRP5RHSZ4pm6fqUO6YZuh3RO8rU6tWrc82a4cOHt2lPx0888UTR+gV0raamplzLMt0Wuc8+++S2NAj37ds3D7RvHB/SOaBn+dWvfpVLJqVSCW9kPIDy8re//S3fGp3KqV1wwQV5XDjnnHPyOHDyySe3vO+39B3CmAA9S21tbTQ2NuYfbHv16pXzg6997Wv59ufEeADl6cV2vPfTPv0A3Frv3r3zZLGOjg9lG9wCNM+ye+yxx/Kv50D5WbFiRcycOTPXnkoLlQLlLf2gm2bHXHHFFfk4zbhNnxNSDbsU3ALl49e//nVcd911cf3118f73//+eOSRR/KEj7RYkfEA6CplWyphhx12yL+avXFV6HQ8YsSIovUL6DpnnXVWLhK+cOHC2GWXXVra0xiQyqmsXbu2zfXGB+h5UimEtCjpBz/4wfwreNrSAmRpsYH0d/rl3HgA5SOtDj1mzJg2bXvvvXc8++yz+e/m973vENDznXfeeXnW7ac//enYd99948QTT8wLls6ZMyefNx5AeRrRjvd+2qfvGK1t2rQpXnrppQ6PD2Ub3KbbnQ444IBcs6b1L+zpuKqqqqh9AzpXqi+eQttbbrkl7rrrrth9993bnE9jQ1pNuvX40NDQkL+0GR+gZzn88MPjz3/+c55F07yl2XbpNsjmv40HUD5S6aT0Hm8t1bd897vfnf9OnxnSF67WY0K6lTrVqzMmQM/y6quv5nqUraXJXyk3SIwHUJ52b8d7P+3TxI80SaRZyh7S+JFq4XZEWZdKSLWr0i0O6UvZuHHj4sorr4z169fH9OnTi901oJPLI6Rbnm699dYYNGhQS42ZVFB8wIABeT9jxow8RqQaNJWVlXH22WfnwfeQQw4pdveBrSiNAc31rZttt912MWzYsJZ24wGUjzSbLi1IlEolTJs2LR588MH48Y9/nLekoqIi3yp9+eWXx5577pm/vF144YX51unJkycXu/vAVnTUUUflmrZpQdJUKuGPf/xjfPvb345TTz01nzceQM/1yiuvxFNPPdVmQbI0qSN9H0hjwv9676e7dT760Y/GaaedlsstpcWO0+SxNIM/XdchhTJ31VVXFUaNGlXo27dvYdy4cYX777+/2F0COlka+ra0zZ8/v+Wa//znP4UzzjijMHTo0MK2225b+OQnP1l44YUXitpvoGuMHz++MHPmzJZj4wGUl9tuu62wzz77FPr161cYPXp04cc//nGb801NTYULL7ywMHz48HzN4YcfXmhoaChaf4HO0djYmD8PpLygf//+hT322KPw5S9/ubBhw4aWa4wH0DMtXLhwi5nBySef3O73/po1awrHHXdcYeDAgYXKysrC9OnTCy+//HKH+1KR/rO1k2kAAAAAAN6+sq1xCwAAAABQqgS3AAAAAAAlRnALAAAAAFBiBLcAAAAAACVGcAsAAAAAUGIEtwAAAAAAJUZwCwAAAABQYgS3AAAAAAAlRnALAEC3dMopp8TkyZOL3Q0AAOgUglsAAEpORUXFf90uueSS+O53vxs//elPi9K/a665JsaOHRsDBw6MIUOGxP777x9z5sxpOS9UBgDgner9jp8BAAC2shdeeKHl7xtuuCEuuuiiaGhoaGlLgWnaiuHaa6+NWbNmxfe+970YP358bNiwIf70pz/FY489VpT+AADQM5lxCwBAyRkxYkTLNnjw4DzLtnVbCm3fOKt1woQJcfbZZ+dQdejQoTF8+PA8M3b9+vUxffr0GDRoULz3ve+NO+64o81rpcD1Yx/7WH7O9JgTTzwxVq9e/ZZ9q6uri2nTpsWMGTPy873//e+P4447Lr72ta/l82k28M9+9rO49dZbW2YI33333fncihUr8mPTLN3tt98+jj766Pj73//e8tzN/0+XXnpp7LjjjlFZWRmf+9znYuPGjZ3wrwwAQCkT3AIA0GOkwHSHHXaIBx98MIe4p59+ehxzzDFRXV0dy5YtiyOOOCIHs6+++mq+fu3atfGRj3wklzp4+OGH484774yVK1fmcPWtpOD4/vvvj3/84x9bPH/uuefmx3/0ox/NM4fTll7/9ddfj0mTJuUA+d5774377rsvh8XputbB7IIFC+Lxxx/PYe8vf/nLuPnmm3OQCwBAeRHcAgDQY6S6s1/5yldizz33jPPPPz/69++fg9zTTjstt6WSC2vWrMmlDZLvf//7ObS94oorYvTo0fnvVAph4cKF8de//nWLr3HxxRfnGbO77bZb7LXXXnmW7K9//etoamrK51MYO2DAgOjXr1/LDOG+ffvmkg/pmp/85Cex7777xt577x3z58+PZ599tmVGbpKuTX1IM3mPPPLI+OpXv5rLMjQ/PwAA5UFwCwBAj7Hffvu1/N2rV68YNmxYDkmbpVIIyapVq/L+0UcfzSFtc83ctKUAN3n66ae3+BojR46M+vr6+POf/xwzZ86MTZs2xcknn5xnzv63cDW91lNPPZVn3Da/ViqX8Nprr7V5rRQ+b7vtti3HVVVV8corr+QyCwAAlA+LkwEA0GP06dOnzXGqL9u6LR0nzQFrCkSPOuqomDdv3hYD2v9mn332ydsZZ5yR69D+3//9XyxatCg+/OEPb/H69FoHHHBAXHfddW86l+rZAgBAa4JbAADK1gc/+MG46aabctmD3r3f/kfjMWPG5H1aCK253MHmzZvf9FqpXMJOO+2UFx37bzNz//Of/+RyC0mqp5tm5+66665vu38AAHQ/SiUAAFC2zjzzzHjppZfiuOOOi4ceeiiXLPj9738f06dPf1Pw2iwteHbZZZflxcXSAmUpWD3ppJPyrNlU1iBJQXCqo9vQ0BCrV6/OC5Mdf/zxud7u0UcfnRcne+aZZ3Jt23POOSf++c9/tjx/WqhsxowZsXz58vjd736Xa+qeddZZsc02ProDAJQTn/4AAChbO++8cw5gU0h7xBFH5Hq4s2bNyouPvVVQOnHixBzWHnPMMfG+970vpk6dmhdBW7BgQa6pm6TF0NLCZQceeGAOdNNrpLq199xzT4waNSqmTJmSFydLAW2qcdt6Bu7hhx+eF1I77LDD4thjj42ampq45JJLuuzfBACA0lBRKBQKxe4EAAAQccopp8TatWvjN7/5TbG7AgBAkZlxCwAAAABQYgS3AAAAAAAlRqkEAAAAAIASY8YtAAAAAECJEdwCAAAAAJQYwS0AAAAAQIkR3AIAAAAAlBjBLQAAAABAiRHcAgAAAACUGMEtAAAAAECJEdwCAAAAAJQYwS0AAAAAQJSW/weIaclQIgskEAAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data",
     "jetTransient": {
      "display_id": null
     }
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Activity statistics:\n",
      "  Input layer total spikes: 479\n",
      "  Hidden layer total spikes: 87\n",
      "  Average input rate: 0.048\n",
      "  Average hidden rate: 0.009\n",
      "\n",
      "Note: Using JIT connections for just-in-time connection generation with extremely low memory usage!\n"
     ]
    }
   ],
   "execution_count": 13
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "## 7. Advanced techniques: Row-oriented vs Column-oriented\n\nBrainEvent provides two orientations of JIT connections:\n- **R (Row-oriented)**: `JITCHomoR`, `JITCNormalR`, `JITCUniformR`\n- **C (Column-oriented)**: `JITCHomoC`, `JITCNormalC`, `JITCUniformC`\n\n### When to use row-oriented (R)?\n- ✅ Standard forward propagation: `spikes @ weights`\n- ✅ Presynaptic spike-driven computation\n- ✅ Most spiking neural network applications\n\n### When to use column-oriented (C)?\n- ✅ Backward propagation\n- ✅ Postsynaptic spike-driven computation\n- ✅ Specific algorithm requirements"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-10-21T07:39:56.513236Z",
     "start_time": "2025-10-21T07:39:54.226933Z"
    }
   },
   "source": [
    "# Row-oriented vs Column-oriented comparison\n",
    "n = 5000\n",
    "m = 3000\n",
    "\n",
    "# Create row-oriented and column-oriented JIT connections\n",
    "jitc_row = brainevent.JITCScalarR((0.1, 0.05, 100), shape=(n, m))\n",
    "jitc_col = brainevent.JITCScalarC((0.1, 0.05, 100), shape=(n, m))\n",
    "\n",
    "# Generate test input\n",
    "brainstate.random.seed(0)\n",
    "spikes = brainevent.BinaryArray(brainstate.random.bernoulli(0.02, size=(n,)))\n",
    "\n",
    "print(f\"Test configuration: {n} -> {m}, firing spikes: {spikes.sum()}\\n\")\n",
    "\n",
    "# Warm-up\n",
    "_ = jax.block_until_ready(spikes @ jitc_row)\n",
    "_ = jax.block_until_ready(spikes @ jitc_col)\n",
    "\n",
    "n_trials = 100\n",
    "\n",
    "# Row-oriented performance\n",
    "start = time.time()\n",
    "for _ in range(n_trials):\n",
    "    result_row = jax.block_until_ready(spikes @ jitc_row)\n",
    "row_time = (time.time() - start) / n_trials\n",
    "\n",
    "# Column-oriented performance\n",
    "start = time.time()\n",
    "for _ in range(n_trials):\n",
    "    result_col = jax.block_until_ready(spikes @ jitc_col)\n",
    "col_time = (time.time() - start) / n_trials\n",
    "\n",
    "print(\"Performance comparison (matrix-vector multiplication):\")\n",
    "print(f\"  Row-oriented (R): {row_time*1000:.3f} ms\")\n",
    "print(f\"  Column-oriented (C): {col_time*1000:.3f} ms\")\n",
    "print(f\"\\nFor forward propagation, recommend using row-oriented (JITCScalarR, JITCNormalR, JITCUniformR)\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test configuration: 5000 -> 3000, firing spikes: 106\n",
      "\n",
      "Performance comparison (matrix-vector multiplication):\n",
      "  Row-oriented (R): 11.377 ms\n",
      "  Column-oriented (C): 11.072 ms\n",
      "\n",
      "For forward propagation, recommend using row-oriented (JITCHomoR, JITCNormalR, JITCUniformR)\n"
     ]
    }
   ],
   "execution_count": 15
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 8. Summary\n",
    "\n",
    "In this tutorial, we learned:\n",
    "\n",
    "1. ✅ **JIT connection principles**: Don't store weights, dynamically generate connections\n",
    "2. ✅ **JITCHomoR**: All connections have the same weight\n",
    "3. ✅ **JITCNormalR**: Normal distribution weights\n",
    "4. ✅ **JITCUniformR**: Uniform distribution weights\n",
    "5. ✅ **Memory advantages**: Extremely low memory usage, suitable for ultra-large-scale networks\n",
    "6. ✅ **Performance comparison**: Computational performance comparable to CSR\n",
    "7. ✅ **Practical application**: Building million-neuron networks\n",
    "8. ✅ **Orientation selection**: Row-oriented vs Column-oriented\n",
    "\n",
    "### Key takeaways\n",
    "- 🔑 **JIT connections are suitable for**: Ultra-large-scale networks, random connections, memory-constrained scenarios\n",
    "- 🔑 **Memory savings**: Thousands of times or more\n",
    "- 🔑 **Reproducibility**: Fixed seed ensures consistent results\n",
    "- 🔑 **Recommended usage**: BinaryArray @ JITCHomoR/JITCNormalR/JITCUniformR\n",
    "\n",
    "## Next Steps\n",
    "\n",
    "In the next tutorial, we will learn:\n",
    "- 📚 **Tutorial 4**: Fixed connection count structures - FixedPreNumConn, FixedPostNumConn\n",
    "- Learn how to create networks where each neuron has a fixed number of connections\n",
    "- Suitable for biologically realistic network topologies"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
