text: VectorCanvas.prototype.pathSvgToVml = function (path) {
    var result = '';
    var cx = 0, cy = 0, ctrlx, ctrly;
  
    return path.replace(/([MmLlHhVvCcSs])((?:-?(?:\d+)?(?:\.\d+)?,?\s?)+)/g, function (segment, letter, coords) {
      coords = coords.replace(/(\d)-/g, '$1,-').replace(/\s+/g, ',').split(',');
      if (!coords[0]) {
        coords.shift();
      }
  
      for (var i = 0, l = coords.length; i < l; i++) {
        coords[i] = Math.round(100 * coords[i]);
      }
  
      switch (letter) {
        case 'm':
          cx += coords[0];
          cy += coords[1];
          result = 't' + coords.join(',');
          break;
  
        case 'M':
          cx = coords[0];
          cy = coords[1];
          result = 'm' + coords.join(',');
          break;
  
        case 'l':
          cx += coords[0];
          cy += coords[1];
          result = 'r' + coords.join(',');
          break;
  
        case 'L':
          cx = coords[0];
          cy = coords[1];
          result = 'l' + coords.join(',');
          break;
  
        case 'h':
          cx += coords[0];
          result = 'r' + coords[0] + ',0';
          break;
  
        case 'H':
          cx = coords[0];
          result = 'l' + cx + ',' + cy;
          break;
  
        case 'v':
          cy += coords[0];
          result = 'r0,' + coords[0];
          break;
  
        case 'V':
          cy = coords[0];
          result = 'l' + cx + ',' + cy;
          break;
  
        case 'c':
          ctrlx = cx + coords[coords.length - 4];
          ctrly = cy + coords[coords.length - 3];
          cx += coords[coords.length - 2];
          cy += coords[coords.length - 1];
          result = 'v' + coords.join(',');
          break;
  
        case 'C':
          ctrlx = coords[coords.length - 4];
          ctrly = coords[coords.length - 3];
          cx = coords[coords.length - 2];
          cy = coords[coords.length - 1];
          result = 'c' + coords.join(',');
          break;
  
        case 's':
          coords.unshift(cy - ctrly);
          coords.unshift(cx - ctrlx);
          ctrlx = cx + coords[coords.length - 4];
          ctrly = cy + coords[coords.length - 3];
          cx += coords[coords.length - 2];
          cy += coords[coords.length - 1];
          result = 'v' + coords.join(',');
          break;
  
        case 'S':
          coords.unshift(cy + cy - ctrly);
          coords.unshift(cx + cx - ctrlx);
          ctrlx = coords[coords.length - 4];
          ctrly = coords[coords.length - 3];
          cx = coords[coords.length - 2];
          cy = coords[coords.length - 1];
          result = 'c' + coords.join(',');
          break;
  
        default:
          break;
      }
  
      return result;
  
    }).replace(/z/g, '');
  };
  