private int varintSize(long data){

		// 7 bits -> 127
		if(data < (1L << 7)){
			return 1;
		}

		// 14 bits -> 16383
		if(data < (1L << 14)){
			return 2;
		}

		// 21 bits -> 2097151
		if(data < (1L << 21)){
			return 3;
		}

		// 28 bits -> 268435455
		if(data < (1L << 28)){
			return 4;
		}

		// 35 bits -> 34359738367
		if(data < (1L << 35)){
			return 5;
		}

		// 42 bits -> 4398046511103
		if(data < (1L << 42)){
			return 6;
		}

		// 49 bits -> 562949953421311
		if(data < (1L << 49)){
			return 7;
		}

		// 56 bits -> 72057594037927935
		if(data < (1L << 56)){
			return 8;
		}

		return 9;
	}